summaryrefslogtreecommitdiff
path: root/rust/test_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'rust/test_test.go')
-rw-r--r--rust/test_test.go67
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")
}
}