diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java index 15aa8d7246f..70b251e29b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java @@ -329,13 +329,6 @@ public class PythonLegacyClientCodegen extends AbstractPythonCodegen implements + "/pattern/modifiers convention. " + pattern + " is not valid."); } - //check for instances of extra backslash that could cause compile issues and remove - int firstBackslash = pattern.indexOf("\\"); - int bracket = pattern.indexOf("["); - if (firstBackslash == 0 || firstBackslash == 1 || firstBackslash == bracket+1) { - pattern = pattern.substring(0,firstBackslash)+pattern.substring(firstBackslash+1); - } - String regex = pattern.substring(1, i).replace("'", "\\'"); List modifiers = new ArrayList(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java index aa143e5b7f3..2bbfdaca1dc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientTest.java @@ -440,6 +440,21 @@ public class PythonClientTest { Assert.assertEquals((int) model.getMinProperties(), 1); } + @Test(description = "tests RegexObjects") + public void testRegexObjects() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_11521.yaml"); + final DefaultCodegen codegen = new PythonClientCodegen(); + codegen.setOpenAPI(openAPI); + + String modelName = "DateTimeObject"; + Schema modelSchema = ModelUtils.getSchema(openAPI, modelName); + final CodegenModel model = codegen.fromModel(modelName, modelSchema); + final CodegenProperty property1 = model.vars.get(0); + Assert.assertEquals(property1.baseName, "datetime"); + Assert.assertEquals(property1.pattern, "/[\\d]{4}-[\\d]{2}-[\\d]{2}T[\\d]{1,2}:[\\d]{2}Z/"); + Assert.assertEquals(property1.vendorExtensions.get("x-regex"), "[\\d]{4}-[\\d]{2}-[\\d]{2}T[\\d]{1,2}:[\\d]{2}Z"); + } + @Test(description = "tests RecursiveToExample") public void testRecursiveToExample() throws IOException { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_8052_recursive_model.yaml"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonLegacyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonLegacyClientCodegenTest.java index 72dbdda27ab..fa506e4c08b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonLegacyClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonLegacyClientCodegenTest.java @@ -93,7 +93,9 @@ public class PythonLegacyClientCodegenTest { Assert.assertEquals(op.allParams.get(5).pattern, "/^pattern\\d{3}$/i"); // pattern_with_backslash_after_bracket '/^[\pattern\d{3}$/i' // added to test fix for issue #6675 - Assert.assertEquals(op.allParams.get(6).pattern, "/^[\\pattern\\d{3}$/i"); + // removed because "/^[\\pattern\\d{3}$/i" is invalid regex because [ is not escaped and there is no closing ] + // Assert.assertEquals(op.allParams.get(6).pattern, "/^[\\pattern\\d{3}$/i"); + } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_11521.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_11521.yaml new file mode 100644 index 00000000000..61c9e83f172 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_11521.yaml @@ -0,0 +1,17 @@ +openapi: 3.0.0 +info: + description: a spec to test free form object models + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: "https://www.apache.org/licenses/LICENSE-2.0.html" +tags: [] +paths: {} +components: + schemas: + DateTimeObject: + properties: + datetime: + type: string + pattern: '[\d]{4}-[\d]{2}-[\d]{2}T[\d]{1,2}:[\d]{2}Z'