From 47a6fd7db9103578c876eac1092f5c5f12456fe9 Mon Sep 17 00:00:00 2001 From: Thiago Arrais Date: Fri, 5 Dec 2025 16:30:08 -0300 Subject: [PATCH] fix(go): do not generate unused imports Fixes #20599 --- .../codegen/languages/GoClientCodegen.java | 2 +- .../codegen/go/GoClientCodegenTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index 7b26d2e120c0..6e1e144e0d45 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -520,7 +520,7 @@ public ModelsMap postProcessModels(ModelsMap objs) { addedFmtImport = true; } - if (model.hasRequired) { + if (generateUnmarshalJSON && model.hasRequired) { if (!model.isAdditionalPropertiesTrue && (model.oneOf == null || model.oneOf.isEmpty()) && (model.anyOf == null || model.anyOf.isEmpty())) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java index c65975aeba54..63b0e32dd680 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java @@ -354,6 +354,27 @@ public void testVendorExtensionSkipGenerateUnmarshalJson() throws IOException { "func (o *BaseItem) UnmarshalJSON(data []byte) (err error) {"); } + @Test + public void testNoImportsWithoutUnmarshal() throws IOException { + Map properties = new HashMap<>(); + properties.put(CodegenConstants.GENERATE_UNMARSHAL_JSON, false); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("go") + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/3_0/petstore.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileNotContains(Paths.get(output + "/model_pet.go"), "bytes"); + } + @Test public void testAdditionalPropertiesWithGoMod() throws Exception { File output = Files.createTempDirectory("test").toFile();