Skip to content

Commit 8d357f9

Browse files
authored
PowerShell: fix enum string starting with a number (#23715)
* add tests for enum string starting with integers * single quoted enum name * update * handle enum string starting with numbers
1 parent 0867b16 commit 8d357f9

7 files changed

Lines changed: 76 additions & 3 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,7 +1530,7 @@ public GeneratorLanguage generatorLanguage() {
15301530

15311531
@Override
15321532
public String toEnumVarName(String name, String datatype) {
1533-
if (name.length() == 0) {
1533+
if (name.isEmpty()) {
15341534
return "EMPTY";
15351535
}
15361536

@@ -1539,8 +1539,9 @@ public String toEnumVarName(String name, String datatype) {
15391539
return (getSymbolName(name)).toUpperCase(Locale.ROOT);
15401540
}
15411541

1542-
// number
1543-
if ("Int16".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) ||
1542+
if (name.matches("^\\d.*") || // any data type (including string) starting with a number
1543+
// numeric data type
1544+
"Int16".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) ||
15441545
"UInt16".equals(datatype) || "UInt32".equals(datatype) || "UInt64".equals(datatype) ||
15451546
"Double".equals(datatype) || "Single".equals(datatype) || "Decimal".equals(datatype)) {
15461547
String varName = name;

modules/openapi-generator/src/test/resources/3_0/powershell/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,6 +1812,12 @@ components:
18121812
- 0
18131813
- 1
18141814
- 2
1815+
OuterEnumStringStartingWithNumber:
1816+
type: string
1817+
enum:
1818+
- '0'
1819+
- '1'
1820+
- '2'
18151821
OuterEnumDefaultValue:
18161822
type: string
18171823
enum:

samples/client/petstore/powershell/.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ docs/OuterEnum.md
5454
docs/OuterEnumDefaultValue.md
5555
docs/OuterEnumInteger.md
5656
docs/OuterEnumIntegerDefaultValue.md
57+
docs/OuterEnumStringStartingWithNumber.md
5758
docs/PSAnotherFakeApi.md
5859
docs/PSDefaultApi.md
5960
docs/PSFakeApi.md
@@ -144,6 +145,7 @@ src/PSPetstore/Model/OuterEnum.ps1
144145
src/PSPetstore/Model/OuterEnumDefaultValue.ps1
145146
src/PSPetstore/Model/OuterEnumInteger.ps1
146147
src/PSPetstore/Model/OuterEnumIntegerDefaultValue.ps1
148+
src/PSPetstore/Model/OuterEnumStringStartingWithNumber.ps1
147149
src/PSPetstore/Model/ParentPet.ps1
148150
src/PSPetstore/Model/Pet.ps1
149151
src/PSPetstore/Model/PetWithRequiredTags.ps1

samples/client/petstore/powershell/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ Class | Method | HTTP request | Description
156156
- [PSPetstore\Model.OuterEnumDefaultValue](docs/OuterEnumDefaultValue.md)
157157
- [PSPetstore\Model.OuterEnumInteger](docs/OuterEnumInteger.md)
158158
- [PSPetstore\Model.OuterEnumIntegerDefaultValue](docs/OuterEnumIntegerDefaultValue.md)
159+
- [PSPetstore\Model.OuterEnumStringStartingWithNumber](docs/OuterEnumStringStartingWithNumber.md)
159160
- [PSPetstore\Model.ParentPet](docs/ParentPet.md)
160161
- [PSPetstore\Model.Pet](docs/Pet.md)
161162
- [PSPetstore\Model.PetWithRequiredTags](docs/PetWithRequiredTags.md)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# OuterEnumStringStartingWithNumber
2+
## Properties
3+
4+
Name | Type | Description | Notes
5+
------------ | ------------- | ------------- | -------------
6+
7+
## Examples
8+
9+
- Prepare the resource
10+
```powershell
11+
$OuterEnumStringStartingWithNumber = Initialize-PSPetstoreOuterEnumStringStartingWithNumber
12+
```
13+
14+
- Convert the resource to JSON
15+
```powershell
16+
$OuterEnumStringStartingWithNumber | ConvertTo-JSON
17+
```
18+
19+
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
20+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#
2+
# OpenAPI Petstore
3+
# This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: "" \
4+
# Version: 1.0.0
5+
# Generated by OpenAPI Generator: https://openapi-generator.tech
6+
#
7+
8+
<#
9+
.SYNOPSIS
10+
11+
Enum OuterEnumStringStartingWithNumber.
12+
13+
.DESCRIPTION
14+
15+
No description available.
16+
#>
17+
18+
enum OuterEnumStringStartingWithNumber {
19+
# enum value: "0"
20+
NUMBER_0
21+
# enum value: "1"
22+
NUMBER_1
23+
# enum value: "2"
24+
NUMBER_2
25+
}
26+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#
2+
# OpenAPI Petstore
3+
# This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: "" \
4+
# Version: 1.0.0
5+
# Generated by OpenAPI Generator: https://openapi-generator.tech
6+
#
7+
8+
Describe -tag 'PSPetstore' -name 'PSOuterEnumStringStartingWithNumber' {
9+
Context 'PSOuterEnumStringStartingWithNumber' {
10+
It 'Initialize-PSOuterEnumStringStartingWithNumber' {
11+
# a simple test to create an object
12+
#$NewObject = Initialize-PSOuterEnumStringStartingWithNumber
13+
#$NewObject | Should -BeOfType OuterEnumStringStartingWithNumber
14+
#$NewObject.property | Should -Be 0
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)