diff options
Diffstat (limited to 'rust/test_test.go')
-rw-r--r-- | rust/test_test.go | 67 |
1 files changed, 40 insertions, 27 deletions
diff --git a/rust/test_test.go b/rust/test_test.go index f131c6ebe..892761a07 100644 --- a/rust/test_test.go +++ b/rust/test_test.go @@ -17,47 +17,60 @@ package rust import ( "strings" "testing" + + "android/soong/android" ) -// Check if rust_test_host accepts multiple source files and applies --test flag. func TestRustTest(t *testing.T) { ctx := testRust(t, ` rust_test_host { name: "my_test", - srcs: ["foo.rs", "src/bar.rs"], - crate_name: "new_test", // not used for multiple source files - relative_install_path: "rust/my-test", + srcs: ["foo.rs"], + data: ["data.txt"], }`) - for _, name := range []string{"foo", "bar"} { - testingModule := ctx.ModuleForTests("my_test", "linux_glibc_x86_64_"+name) - testingBuildParams := testingModule.Output(name) - rustcFlags := testingBuildParams.Args["rustcFlags"] - if !strings.Contains(rustcFlags, "--test") { - t.Errorf("%v missing --test flag, rustcFlags: %#v", name, rustcFlags) - } - outPath := "/my_test/linux_glibc_x86_64_" + name + "/" + name - if !strings.Contains(testingBuildParams.Output.String(), outPath) { - t.Errorf("wrong output: %v expect: %v", testingBuildParams.Output, outPath) - } + testingModule := ctx.ModuleForTests("my_test", "linux_glibc_x86_64") + expectedOut := "my_test/linux_glibc_x86_64/my_test" + outPath := testingModule.Output("my_test").Output.String() + if !strings.Contains(outPath, expectedOut) { + t.Errorf("wrong output path: %v; expected: %v", outPath, expectedOut) + } + + dataPaths := testingModule.Module().(*Module).compiler.(*testDecorator).dataPaths() + if len(dataPaths) != 1 { + t.Errorf("expected exactly one test data file. test data files: [%s]", dataPaths) + return } } -// crate_name is output file name, when there is only one source file. -func TestRustTestSingleFile(t *testing.T) { +func TestRustTestLinkage(t *testing.T) { ctx := testRust(t, ` - rust_test_host { - name: "my-test", + rust_test { + name: "my_test", srcs: ["foo.rs"], - crate_name: "new_test", - relative_install_path: "my-pkg", + rustlibs: ["libfoo"], + rlibs: ["libbar"], + } + rust_library { + name: "libfoo", + srcs: ["foo.rs"], + crate_name: "foo", + } + rust_library { + name: "libbar", + srcs: ["foo.rs"], + crate_name: "bar", }`) - name := "new_test" - testingModule := ctx.ModuleForTests("my-test", "linux_glibc_x86_64_"+name) - outPath := "/my-test/linux_glibc_x86_64_" + name + "/" + name - testingBuildParams := testingModule.Output(name) - if !strings.Contains(testingBuildParams.Output.String(), outPath) { - t.Errorf("wrong output: %v expect: %v", testingBuildParams.Output, outPath) + testingModule := ctx.ModuleForTests("my_test", "android_arm64_armv8-a").Module().(*Module) + + if !android.InList("libfoo.rlib-std", testingModule.Properties.AndroidMkRlibs) { + t.Errorf("rlib-std variant for libfoo not detected as a rustlib-defined rlib dependency for device rust_test module") + } + if !android.InList("libbar.rlib-std", testingModule.Properties.AndroidMkRlibs) { + t.Errorf("rlib-std variant for libbar not detected as an rlib dependency for device rust_test module") + } + if !android.InList("libstd", testingModule.Properties.AndroidMkRlibs) { + t.Errorf("Device rust_test module 'my_test' does not link libstd as an rlib") } } |