Skip to content

Commit b684182

Browse files
rcohysaito1001
andauthored
Enable the tokio-rt feature for generated crates when bytestream is used (#3113)
## Motivation and Context Fix issue where `ByteStream::from_path` was unusable by without enabling features ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._ --------- Co-authored-by: ysaito1001 <[email protected]>
1 parent 22de970 commit b684182

File tree

5 files changed

+41
-4
lines changed

5 files changed

+41
-4
lines changed

aws/sdk/integration-tests/s3/tests/client_construction.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ mod with_sdk_config {
2626
assert!(config.retry_config().is_none());
2727
let _s3 = s3::Client::new(&config);
2828
}
29+
30+
#[test]
31+
fn bytestream_from_path_exists() {
32+
let _ = aws_sdk_s3::primitives::ByteStream::from_path("a/b.txt");
33+
}
2934
}
3035

3136
mod with_service_config {

codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/customize/RequiredCustomizations.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class RequiredCustomizations : ClientCodegenDecorator {
8686
ResiliencyReExportCustomization(codegenContext).extras(rustCrate)
8787

8888
rustCrate.withModule(ClientRustModule.Primitives) {
89-
pubUseSmithyPrimitives(codegenContext, codegenContext.model)(this)
89+
pubUseSmithyPrimitives(codegenContext, codegenContext.model, rustCrate)(this)
9090
}
9191
rustCrate.withModule(ClientRustModule.Error) {
9292
rustTemplate(

codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtra.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ package software.amazon.smithy.rust.codegen.core.smithy.customizations
88
import software.amazon.smithy.model.Model
99
import software.amazon.smithy.model.shapes.Shape
1010
import software.amazon.smithy.model.shapes.StructureShape
11+
import software.amazon.smithy.rust.codegen.core.rustlang.Feature
1112
import software.amazon.smithy.rust.codegen.core.rustlang.Writable
1213
import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate
1314
import software.amazon.smithy.rust.codegen.core.rustlang.writable
1415
import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext
1516
import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType
17+
import software.amazon.smithy.rust.codegen.core.smithy.RustCrate
1618
import software.amazon.smithy.rust.codegen.core.util.hasEventStreamMember
1719
import software.amazon.smithy.rust.codegen.core.util.hasStreamingMember
1820

@@ -41,7 +43,7 @@ private fun hasBlobs(model: Model): Boolean = structUnionMembersMatchPredicate(m
4143
private fun hasDateTimes(model: Model): Boolean = structUnionMembersMatchPredicate(model, Shape::isTimestampShape)
4244

4345
/** Adds re-export statements for Smithy primitives */
44-
fun pubUseSmithyPrimitives(codegenContext: CodegenContext, model: Model): Writable = writable {
46+
fun pubUseSmithyPrimitives(codegenContext: CodegenContext, model: Model, rustCrate: RustCrate): Writable = writable {
4547
val rc = codegenContext.runtimeConfig
4648
if (hasBlobs(model)) {
4749
rustTemplate("pub use #{Blob};", "Blob" to RuntimeType.blob(rc))
@@ -57,6 +59,13 @@ fun pubUseSmithyPrimitives(codegenContext: CodegenContext, model: Model): Writab
5759
)
5860
}
5961
if (hasStreamingOperations(model)) {
62+
rustCrate.mergeFeature(
63+
Feature(
64+
"rt-tokio",
65+
true,
66+
listOf("aws-smithy-types/rt-tokio"),
67+
),
68+
)
6069
rustTemplate(
6170
"""
6271
pub use #{ByteStream};

codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/customizations/SmithyTypesPubUseExtraTest.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ package software.amazon.smithy.rust.codegen.core.smithy.customizations
88
import org.junit.jupiter.api.Test
99
import software.amazon.smithy.model.Model
1010
import software.amazon.smithy.rust.codegen.core.rustlang.RustWriter
11+
import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext
12+
import software.amazon.smithy.rust.codegen.core.smithy.RustCrate
1113
import software.amazon.smithy.rust.codegen.core.smithy.generators.StructureGeneratorTest.Companion.model
1214
import software.amazon.smithy.rust.codegen.core.testutil.asSmithyModel
15+
import software.amazon.smithy.rust.codegen.core.testutil.generatePluginContext
1316
import software.amazon.smithy.rust.codegen.core.testutil.testCodegenContext
1417

1518
class SmithyTypesPubUseExtraTest {
@@ -43,14 +46,34 @@ class SmithyTypesPubUseExtraTest {
4346
""".asSmithyModel()
4447
}
4548

49+
private val rustCrate: RustCrate
50+
private val codegenContext: CodegenContext = testCodegenContext(model)
51+
52+
init {
53+
val (context, _) = generatePluginContext(
54+
model,
55+
runtimeConfig = codegenContext.runtimeConfig,
56+
)
57+
rustCrate = RustCrate(
58+
context.fileManifest,
59+
codegenContext.symbolProvider,
60+
codegenContext.settings.codegenConfig,
61+
codegenContext.expectModuleDocProvider(),
62+
)
63+
}
64+
4665
private fun reexportsWithEmptyModel() = reexportsWithMember()
4766
private fun reexportsWithMember(
4867
inputMember: String = "",
4968
outputMember: String = "",
5069
unionMember: String = "",
5170
additionalShape: String = "",
5271
) = RustWriter.root().let { writer ->
53-
pubUseSmithyPrimitives(testCodegenContext(model), modelWithMember(inputMember, outputMember, unionMember, additionalShape))(writer)
72+
pubUseSmithyPrimitives(
73+
codegenContext,
74+
modelWithMember(inputMember, outputMember, unionMember, additionalShape),
75+
rustCrate,
76+
)(writer)
5477
writer.toString()
5578
}
5679

codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/customizations/ServerRequiredCustomizations.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class ServerRequiredCustomizations : ServerCodegenDecorator {
4747
)
4848

4949
rustCrate.withModule(ServerRustModule.Types) {
50-
pubUseSmithyPrimitives(codegenContext, codegenContext.model)(this)
50+
pubUseSmithyPrimitives(codegenContext, codegenContext.model, rustCrate)(this)
5151
rustTemplate(
5252
"""
5353
pub use #{DisplayErrorContext};

0 commit comments

Comments
 (0)