Skip to content

Commit

Permalink
Re-introduce default generic for server service struct (#3197)
Browse files Browse the repository at this point in the history
This was accidentally removed in #3095.

Fixes #3177.

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._
  • Loading branch information
david-perez authored Nov 14, 2023
1 parent 0f9ada6 commit f9241ad
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,16 @@ class ServerServiceGenerator(
///
/// See the [root](crate) documentation for more information.
##[derive(Clone)]
pub struct $serviceName<S> {
pub struct $serviceName<
S = #{SmithyHttpServer}::routing::RoutingService<
#{Router}<
#{SmithyHttpServer}::routing::Route<
#{SmithyHttpServer}::body::BoxBody
>,
>,
#{Protocol},
>
> {
// This is the router wrapped by layers.
svc: S,
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/

package software.amazon.smithy.rust.codegen.server.smithy.generators

import org.junit.jupiter.api.Test
import software.amazon.smithy.rust.codegen.core.rustlang.rust
import software.amazon.smithy.rust.codegen.core.testutil.asSmithyModel
import software.amazon.smithy.rust.codegen.core.testutil.testModule
import software.amazon.smithy.rust.codegen.server.smithy.testutil.serverIntegrationTest
import java.io.File

internal class ServerServiceGeneratorTest {
/**
* See <https://github.com/smithy-lang/smithy-rs/issues/3177>.
*/
@Test
fun `one should be able to return a built service from a function`() {
val model = File("../codegen-core/common-test-models/simple.smithy").readText().asSmithyModel()

serverIntegrationTest(model) { _, rustCrate ->
rustCrate.testModule {
// No actual tests: we just want to check that this compiles.
rust(
"""
fn _build_service() -> crate::SimpleService {
let config = crate::SimpleServiceConfig::builder().build();
let service = crate::SimpleService::builder(config).build_unchecked();
service.boxed()
}
""",
)
}
}
}
}

0 comments on commit f9241ad

Please sign in to comment.