diff --git a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGeneratorTest.kt b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGeneratorTest.kt index 2ea5c56f59..b92260e856 100644 --- a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGeneratorTest.kt +++ b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGeneratorTest.kt @@ -5,6 +5,7 @@ package software.amazon.smithy.rust.codegen.core.smithy.generators +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import software.amazon.smithy.codegen.core.Symbol import software.amazon.smithy.model.Model @@ -26,6 +27,8 @@ import software.amazon.smithy.rust.codegen.core.testutil.compileAndTest import software.amazon.smithy.rust.codegen.core.testutil.testSymbolProvider import software.amazon.smithy.rust.codegen.core.testutil.unitTest import software.amazon.smithy.rust.codegen.core.util.lookup +import kotlin.io.path.extension +import kotlin.io.path.readText internal class BuilderGeneratorTest { private val model = StructureGeneratorTest.model @@ -33,6 +36,7 @@ internal class BuilderGeneratorTest { private val struct = StructureGeneratorTest.struct private val credentials = StructureGeneratorTest.credentials private val secretStructure = StructureGeneratorTest.secretStructure + private val errorStruct = StructureGeneratorTest.error @Test fun `generate builders`() { @@ -157,6 +161,31 @@ internal class BuilderGeneratorTest { project.compileAndTest() } + @Test + fun `don't add serde to error types`() { + val provider = testSymbolProvider(model) + val project = TestWorkspace.testProject(provider) + project.moduleFor(errorStruct) { + rust("##![allow(deprecated)]") + StructureGenerator(model, provider, this, errorStruct, emptyList(), StructSettings(false)).render() + implBlock(provider.toSymbol(errorStruct)) { + BuilderGenerator.renderConvenienceMethod(this, provider, errorStruct) + } + } + project.withModule(provider.moduleForBuilder(errorStruct)) { + BuilderGenerator(model, provider, errorStruct, emptyList()).render(this) + } + project.compileAndTest() + + // checks if there is a serde derive in the code + project.generatedFiles().forEach { + if (it.extension == "rs") { + val file = project.baseDir.resolve(it).toFile().readText() + Assertions.assertFalse(file.contains("serde::")) + } + } + } + @Test fun `it supports nonzero defaults`() { val model = diff --git a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/StructureGeneratorTest.kt b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/StructureGeneratorTest.kt index c197a7cb4c..2b1579c4be 100644 --- a/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/StructureGeneratorTest.kt +++ b/codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/StructureGeneratorTest.kt @@ -86,6 +86,7 @@ class StructureGeneratorTest { val credentials = model.lookup("com.test#Credentials") val secretStructure = model.lookup("com.test#SecretStructure") val structWithInnerSecretStructure = model.lookup("com.test#StructWithInnerSecretStructure") + val error = model.lookup("com.test#MyError") val rustReservedWordConfig: RustReservedWordConfig = RustReservedWordConfig(