Unverified Commit 33705fa3 authored by Russell Cohen's avatar Russell Cohen Committed by GitHub
Browse files

Run all tests in the same cargo workspace (#28)

* Run all tests in the same cargo workspace

Running all the tests in the same cargo workspace allows test runners to avoid recompiling dependencies every time. This allows us to drop parallel tests which seemed to be causing OOMs.

* Doc cleanups and improvements
parent dfe42b73
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -14,14 +14,6 @@ buildscript {
    }
}

subprojects {
    tasks.withType<Test> {
        systemProperties["junit.jupiter.execution.parallel.enabled"] = true
        systemProperties["junit.jupiter.execution.parallel.mode.default"] = "concurrent"
        maxParallelForks = Runtime.getRuntime().availableProcessors()
    }
}

plugins {
    kotlin("jvm") version "1.3.72" apply false
    id("org.jetbrains.dokka") version "0.10.0"
+6 −5
Original line number Diff line number Diff line
@@ -17,7 +17,8 @@ import software.amazon.smithy.rust.codegen.lang.RustWriter
import software.amazon.smithy.rust.codegen.smithy.generators.EnumGenerator
import software.amazon.smithy.rust.codegen.util.lookup
import software.amazon.smithy.rust.testutil.asSmithy
import software.amazon.smithy.rust.testutil.quickTest
import software.amazon.smithy.rust.testutil.compileAndRun
import software.amazon.smithy.rust.testutil.compileAndTest
import software.amazon.smithy.rust.testutil.shouldCompile
import software.amazon.smithy.rust.testutil.shouldParseAsRust
import software.amazon.smithy.rust.testutil.testSymbolProvider
@@ -54,7 +55,7 @@ class EnumGeneratorTest {
        val result = writer.toString()
        result.shouldParseAsRust()
        result.shouldCompile()
        result.quickTest(
        result.compileAndRun(
            """
            let instance = InstanceType::T2Micro;
            assert_eq!(instance.as_str(), "t2.micro");
@@ -86,7 +87,7 @@ class EnumGeneratorTest {
        val writer = RustWriter.forModule("model")
        val generator = EnumGenerator(testSymbolProvider(model), writer, shape, trait)
        generator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
                assert_eq!(FooEnum::Foo, FooEnum::Foo);
                assert_ne!(FooEnum::Bar, FooEnum::Foo);
@@ -114,7 +115,7 @@ class EnumGeneratorTest {
        val writer = RustWriter.forModule("model")
        val generator = EnumGenerator(testSymbolProvider(model), writer, shape, trait)
        generator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
                assert_eq!(FooEnum::from("Foo"), FooEnum::from("Foo"));
                assert_ne!(FooEnum::from("Bar"), FooEnum::from("Foo"));
@@ -153,7 +154,7 @@ class EnumGeneratorTest {
        val writer = RustWriter.forModule("model")
        val generator = EnumGenerator(provider, writer, shape, trait)
        generator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
            // Values should be sorted
            assert_eq!(FooEnum::${EnumGenerator.Values}(), ["0", "1", "Bar", "Baz", "Foo"]);
+3 −3
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ import software.amazon.smithy.rust.codegen.smithy.transformers.OperationNormaliz
import software.amazon.smithy.rust.codegen.util.dq
import software.amazon.smithy.rust.testutil.TestRuntimeConfig
import software.amazon.smithy.rust.testutil.asSmithy
import software.amazon.smithy.rust.testutil.shouldCompile
import software.amazon.smithy.rust.testutil.compileAndTest
import software.amazon.smithy.rust.testutil.testSymbolProvider

class HttpTraitBindingGeneratorTest {
@@ -123,7 +123,7 @@ class HttpTraitBindingGeneratorTest {
        val writer = RustWriter.forModule("operation")
        // currently rendering the operation renders the protocols—I want to separate that at some point.
        renderOperation(writer)
        writer.shouldCompile(
        writer.compileAndTest(
            """
            let ts = Instant::from_epoch_seconds(10123125);
            let inp = PutObjectInput::builder()
@@ -146,7 +146,7 @@ class HttpTraitBindingGeneratorTest {
    fun `build http requests`() {
        val writer = RustWriter.forModule("operation")
        renderOperation(writer)
        writer.shouldCompile(
        writer.compileAndTest(
            """
            let ts = Instant::from_epoch_seconds(10123125);
            let inp = PutObjectInput::builder()
+6 −6
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ import software.amazon.smithy.rust.codegen.lang.rustBlock
import software.amazon.smithy.rust.codegen.smithy.canUseDefault
import software.amazon.smithy.rust.codegen.smithy.generators.StructureGenerator
import software.amazon.smithy.rust.testutil.asSmithy
import software.amazon.smithy.rust.testutil.shouldCompile
import software.amazon.smithy.rust.testutil.compileAndTest
import software.amazon.smithy.rust.testutil.testSymbolProvider

class StructureGeneratorTest {
@@ -55,7 +55,7 @@ class StructureGeneratorTest {
        val generator = StructureGenerator(model, provider, writer, struct)
        generator.render()
        innerGenerator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
            let s: Option<MyStruct> = None;
            s.map(|i|println!("{:?}, {:?}", i.ts, i.byte_value));
@@ -86,7 +86,7 @@ class StructureGeneratorTest {
                )
            }
        }
        writer.shouldCompile()
        writer.compileAndTest()
    }

    @Test
@@ -97,7 +97,7 @@ class StructureGeneratorTest {
        val generator = StructureGenerator(model, provider, writer, struct)
        generator.render()
        innerGenerator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
            let my_struct = MyStruct::builder().byte_value(4).foo("hello!").build();
            assert_eq!(my_struct.foo.unwrap(), "hello!");
@@ -124,7 +124,7 @@ class StructureGeneratorTest {
        val generator = StructureGenerator(model, provider, writer, struct)
        generator.render()
        innerGenerator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
            let my_struct = MyStruct::builder().byte_value(4).foo("hello!").bar(0).build().expect("required field was not provided");
            assert_eq!(my_struct.foo.unwrap(), "hello!");
@@ -139,6 +139,6 @@ class StructureGeneratorTest {
        val writer = RustWriter.forModule("error")
        val generator = StructureGenerator(model, provider, writer, error)
        generator.render()
        writer.shouldCompile()
        writer.compileAndTest()
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ import software.amazon.smithy.model.shapes.UnionShape
import software.amazon.smithy.model.traits.DocumentationTrait
import software.amazon.smithy.rust.codegen.lang.RustWriter
import software.amazon.smithy.rust.codegen.smithy.generators.UnionGenerator
import software.amazon.smithy.rust.testutil.shouldCompile
import software.amazon.smithy.rust.testutil.compileAndTest
import software.amazon.smithy.rust.testutil.testSymbolProvider

class UnionGeneratorTest {
@@ -41,7 +41,7 @@ class UnionGeneratorTest {
        val writer = RustWriter.forModule("model")
        val generator = UnionGenerator(model, provider, writer, union)
        generator.render()
        writer.shouldCompile(
        writer.compileAndTest(
            """
        let var_a = MyUnion::StringConfig("abc".to_string());
        let var_b = MyUnion::IntConfig(10);
Loading