Commit 24278501 authored by Russell Cohen's avatar Russell Cohen
Browse files

Unify codegen flags

Unify codegen flags behind a single "awsSdkBuild" flag. This is a singular flag to toggle "AWS mode" on and off. This also updates the sdk-codegen integration tests to be use this build mode to more closely reflect actual generated SDKs.
parent 255be4aa
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -54,14 +54,6 @@ fun baseTest(service: String, module: String, imports: List<String> = listOf()):
            "includeFluentClient": false,
            "nullabilityCheckMode": "${getNullabilityCheckMode()}"
        """,
        extraConfig = """
            , "customizationConfig": {
                "awsSdk": {
                    "generateReadme": false,
                    "requireEndpointResolver": false
                }
            }
        """,
    )
}

+4 −5
Original line number Diff line number Diff line
@@ -30,8 +30,8 @@ class SdkSettings private constructor(private val awsSdk: ObjectNode?) {
        get() =
            awsSdk?.getStringMember("partitionsConfigPath")?.orNull()?.value?.let { Paths.get(it) }

    val productionSdkBuild: Boolean
        get() = awsSdk?.getBooleanMember("productionSdkBuild")?.orNull()?.value ?: false
    val awsSdkBuild: Boolean
        get() = awsSdk?.getBooleanMember("awsSdkBuild")?.orNull()?.value ?: false

    /** Path to AWS SDK integration tests */
    val integrationTestPath: String
@@ -45,11 +45,10 @@ class SdkSettings private constructor(private val awsSdk: ObjectNode?) {

    /** Whether to generate a README */
    val generateReadme: Boolean
        get() =
            awsSdk?.getBooleanMember("generateReadme")?.orNull()?.value ?: false
        get() = awsSdkBuild

    val requireEndpointResolver: Boolean
        get() = awsSdk?.getBooleanMember("requireEndpointResolver")?.orNull()?.value ?: true
        get() = awsSdkBuild
}

fun ClientCodegenContext.sdkSettings() = SdkSettings.from(this.settings)
+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ class AwsEndpointsStdLib() : ClientCodegenDecorator {
        if (partitionsCache == null) {
            val partitionsJson = when (val path = sdkSettings.partitionsConfigPath) {
                null -> {
                    if (sdkSettings.productionSdkBuild) {
                        PANIC("cannot use hardcoded partitions in AWS SDK production build")
                    if (sdkSettings.awsSdkBuild) {
                        PANIC("cannot use hardcoded partitions in AWS SDK build")
                    }
                    (
                        javaClass.getResource("/default-partitions.json")
+1 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ import software.amazon.smithy.rust.codegen.core.testutil.unitTest
internal class RegionProviderConfigTest {
    @Test
    fun `generates a valid config`() {
        awsSdkIntegrationTest(SdkCodegenIntegrationTest.model) { _ctx, crate ->
        awsSdkIntegrationTest(SdkCodegenIntegrationTest.model) { _, crate ->
            crate.unitTest {
                rustTemplate("let conf: Option<crate::Config> = None; let _reg: Option<crate::config::Region> = conf.and_then(|c|c.region().cloned());")
            }
+28 −27
Original line number Diff line number Diff line
@@ -43,25 +43,26 @@ fun awsSdkIntegrationTest(
    model: Model,
    params: IntegrationTestParams = awsIntegrationTestParams(),
    test: (ClientCodegenContext, RustCrate) -> Unit = { _, _ -> },
) = clientIntegrationTest(
) =
    clientIntegrationTest(
        model,
    awsIntegrationTestParams(),
        params,
        test = test,
    )

fun awsIntegrationTestParams() =
    IntegrationTestParams(
fun awsIntegrationTestParams() = IntegrationTestParams(
    cargoCommand = "cargo test --features test-util behavior-version-latest",
    runtimeConfig = AwsTestRuntimeConfig,
        additionalSettings =
            ObjectNode.builder().withMember(
    additionalSettings = ObjectNode.builder().withMember(
        "customizationConfig",
        ObjectNode.builder()
            .withMember(
                "awsSdk",
                ObjectNode.builder()
                            .withMember("generateReadme", false)
                    .withMember("awsSdkBuild", true)
                    .withMember("integrationTestPath", "../sdk/integration-tests")
                    .withMember("partitionsConfigPath", "../sdk/aws-models/sdk-endpoints.json")
                    .withMember("awsConfigVersion", "1")
                    .build(),
            ).build(),
    )
Loading