diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index f7eafc626e96..109276eebc2e 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -525,7 +525,7 @@ open class GenerateTask : DefaultTask() { } skipValidateSpec.ifNotEmpty { value -> - configurator.setValidateSpec(value) + configurator.setValidateSpec(!value) } generateAliasAsModel.ifNotEmpty { value -> diff --git a/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt b/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt index 076e544ddcec..9f62e7e9feed 100644 --- a/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt +++ b/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt @@ -66,4 +66,64 @@ class GenerateTaskDslTest : TestBase() { assertEquals(TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome, "Expected a successful run, but found ${result.task(":openApiGenerate")?.outcome}") } + + @Test + fun `openApiValidate should fail on invalid spec`() { + // Arrange + val projectFiles = mapOf( + "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml") + ) + + withProject(defaultBuildGradle, projectFiles) + + // Act + val result = GradleRunner.create() + .withProjectDir(temp) + .withArguments("openApiGenerate") + .withPluginClasspath() + .buildAndFail() + + // Assert + assertTrue(result.output.contains("issues with the specification"), "Unexpected/no message presented to the user for an invalid spec.") + assertEquals(TaskOutcome.FAILED, result.task(":openApiGenerate")?.outcome, + "Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}") + } + + @Test + fun `openApiValidate should ok skip spec validation`() { + // Arrange + val projectFiles = mapOf( + "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml") + ) + + withProject(""" + plugins { + id 'org.openapi.generator' + } + openApiGenerate { + generatorName = "kotlin" + inputSpec = file("spec.yaml").absolutePath + outputDir = file("build/kotlin").absolutePath + apiPackage = "org.openapitools.example.api" + invokerPackage = "org.openapitools.example.invoker" + modelPackage = "org.openapitools.example.model" + skipValidateSpec = true + configOptions = [ + dateLibrary: "java8" + ] + } + """.trimIndent(), projectFiles) + + // Act + val result = GradleRunner.create() + .withProjectDir(temp) + .withArguments("openApiGenerate") + .withPluginClasspath() + .build() + + // Assert + assertTrue(result.output.contains("validation has been explicitly disabled"), "Unexpected/no message presented to the user for an invalid spec.") + assertEquals(TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome, + "Expected a successful run, but found ${result.task(":openApiGenerate")?.outcome}") + } } \ No newline at end of file diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index 70ba3f1fff74..d2279c94b48e 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -464,7 +464,7 @@ public class CodeGenMojo extends AbstractMojo { } if (skipValidateSpec != null) { - configurator.setSkipOverwrite(skipValidateSpec); + configurator.setValidateSpec(!skipValidateSpec); } if (logToStderr != null) {