@@ -18,13 +18,16 @@ import software.amazon.smithy.rust.codegen.core.testutil.TestWorkspace
18
18
import software.amazon.smithy.rust.codegen.core.testutil.compileAndTest
19
19
import software.amazon.smithy.rust.codegen.core.testutil.testSymbolProvider
20
20
import software.amazon.smithy.rust.codegen.core.testutil.unitTest
21
+ import kotlin.io.path.extension
22
+ import kotlin.io.path.readText
21
23
22
24
internal class BuilderGeneratorTest {
23
25
private val model = StructureGeneratorTest .model
24
26
private val inner = StructureGeneratorTest .inner
25
27
private val struct = StructureGeneratorTest .struct
26
28
private val credentials = StructureGeneratorTest .credentials
27
29
private val secretStructure = StructureGeneratorTest .secretStructure
30
+ private val errorStruct = StructureGeneratorTest .error
28
31
29
32
@Test
30
33
fun `generate builders` () {
@@ -137,4 +140,30 @@ internal class BuilderGeneratorTest {
137
140
}
138
141
project.compileAndTest()
139
142
}
143
+
144
+ @Test
145
+ fun `don't add serde to error types` () {
146
+ val provider = testSymbolProvider(model)
147
+ val project = TestWorkspace .testProject(provider)
148
+ project.moduleFor(errorStruct) {
149
+ rust(" ##![allow(deprecated)]" )
150
+ StructureGenerator (model, provider, this , errorStruct, emptyList()).render()
151
+ implBlock(provider.toSymbol(errorStruct)) {
152
+ BuilderGenerator .renderConvenienceMethod(this , provider, errorStruct)
153
+ }
154
+ }
155
+ project.withModule(provider.moduleForBuilder(errorStruct)) {
156
+ BuilderGenerator (model, provider, errorStruct, emptyList()).render(this )
157
+ }
158
+ project.compileAndTest()
159
+
160
+ // checks if there is a serde derive in the code
161
+ project.generatedFiles().forEach {
162
+ if (it.extension == " rs" ) {
163
+ val file = project.baseDir.resolve(it).toFile().readText()
164
+ val check = file.contains(" derive(serde::Deserialize)" ) || file.contains(" derive(serde::Serialize)" )
165
+ assert (! check)
166
+ }
167
+ }
168
+ }
140
169
}
0 commit comments