diff --git a/rust/androidmk.go b/rust/androidmk.go index edd5c5f88..2636d97f5 100644 --- a/rust/androidmk.go +++ b/rust/androidmk.go @@ -90,11 +90,7 @@ func (binary *binaryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.Andr func (test *testDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { test.binaryDecorator.AndroidMk(ctx, ret) ret.Class = "NATIVE_TESTS" - stem := String(test.baseCompiler.Properties.Stem) - if stem != "" && !strings.HasSuffix(ctx.Name(), "_"+stem) { - // Avoid repeated suffix in the module name. - ret.SubName = "_" + stem - } + ret.SubName = test.getMutatedModuleSubName(ctx.Name()) ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) { if len(test.Properties.Test_suites) > 0 { fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUITE :=", diff --git a/rust/test.go b/rust/test.go index cb64e8f83..b3911036a 100644 --- a/rust/test.go +++ b/rust/test.go @@ -69,15 +69,28 @@ func (test *testDecorator) compilerProps() []interface{} { return append(test.binaryDecorator.compilerProps(), &test.Properties) } +func (test *testDecorator) getMutatedModuleSubName(moduleName string) string { + stem := String(test.baseCompiler.Properties.Stem) + if stem != "" && !strings.HasSuffix(moduleName, "_"+stem) { + // Avoid repeated suffix in the module name. + return "_" + stem + } + return "" +} + func (test *testDecorator) install(ctx ModuleContext, file android.Path) { name := ctx.ModuleName() // default executable name - if stem := String(test.baseCompiler.Properties.Stem); stem != "" { - name = stem + if ctx.Device() { // on device, use mutated module name + name = name + test.getMutatedModuleSubName(name) + } else { // on host, use stem name in relative_install_path + if stem := String(test.baseCompiler.Properties.Stem); stem != "" { + name = stem + } + if path := test.baseCompiler.relativeInstallPath(); path != "" { + name = path + "/" + name + } } - if path := test.baseCompiler.relativeInstallPath(); path != "" { - name = path + "/" + name - } - test.testConfig = tradefed.AutoGenRustHostTestConfig(ctx, name, + test.testConfig = tradefed.AutoGenRustTestConfig(ctx, name, test.Properties.Test_config, test.Properties.Test_config_template, test.Properties.Test_suites, diff --git a/tradefed/autogen.go b/tradefed/autogen.go index 905acfacb..c35d8b914 100644 --- a/tradefed/autogen.go +++ b/tradefed/autogen.go @@ -197,11 +197,14 @@ func AutoGenPythonBinaryHostTestConfig(ctx android.ModuleContext, testConfigProp return path } -func AutoGenRustHostTestConfig(ctx android.ModuleContext, name string, testConfigProp *string, +func AutoGenRustTestConfig(ctx android.ModuleContext, name string, testConfigProp *string, testConfigTemplateProp *string, testSuites []string, autoGenConfig *bool) android.Path { path, autogenPath := testConfigPath(ctx, testConfigProp, testSuites, autoGenConfig) if autogenPath != nil { templatePathString := "${RustHostTestConfigTemplate}" + if ctx.Device() { + templatePathString = "${RustDeviceTestConfigTemplate}" + } templatePath := getTestConfigTemplate(ctx, testConfigTemplateProp) if templatePath.Valid() { templatePathString = templatePath.String() diff --git a/tradefed/config.go b/tradefed/config.go index 8249ffe81..a289073e4 100644 --- a/tradefed/config.go +++ b/tradefed/config.go @@ -31,6 +31,7 @@ func init() { pctx.SourcePathVariable("NativeHostTestConfigTemplate", "build/make/core/native_host_test_config_template.xml") pctx.SourcePathVariable("NativeTestConfigTemplate", "build/make/core/native_test_config_template.xml") pctx.SourcePathVariable("PythonBinaryHostTestConfigTemplate", "build/make/core/python_binary_host_test_config_template.xml") + pctx.SourcePathVariable("RustDeviceTestConfigTemplate", "build/make/core/rust_device_test_config_template.xml") pctx.SourcePathVariable("RustHostTestConfigTemplate", "build/make/core/rust_host_test_config_template.xml") pctx.SourcePathVariable("EmptyTestConfig", "build/make/core/empty_test_config.xml") diff --git a/tradefed/makevars.go b/tradefed/makevars.go index e6b88ea1d..d4cf7a86c 100644 --- a/tradefed/makevars.go +++ b/tradefed/makevars.go @@ -31,6 +31,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("NATIVE_HOST_TEST_CONFIG_TEMPLATE", "${NativeHostTestConfigTemplate}") ctx.Strict("NATIVE_TEST_CONFIG_TEMPLATE", "${NativeTestConfigTemplate}") ctx.Strict("PYTHON_BINARY_HOST_TEST_CONFIG_TEMPLATE", "${PythonBinaryHostTestConfigTemplate}") + ctx.Strict("RUST_DEVICE_TEST_CONFIG_TEMPLATE", "${RustDeviceTestConfigTemplate}") ctx.Strict("RUST_HOST_TEST_CONFIG_TEMPLATE", "${RustHostTestConfigTemplate}") ctx.Strict("EMPTY_TEST_CONFIG", "${EmptyTestConfig}")