rust: Add require_root and vendor install base
Adds the require_root property to rust_test modules so that tests can run as root. Also adds an install base to allow vendor tests to install to a different path, otherwise installs to 'unrestricted' like cc_test. Bug: 200602232 Test: test with require_root: true runs as root Test: test installed to new base directory Change-Id: Ifa716871ff87471f0c0caff7af558d47db85ccd1
This commit is contained in:
23
rust/test.go
23
rust/test.go
@@ -59,6 +59,10 @@ type TestProperties struct {
|
|||||||
|
|
||||||
// Test options.
|
// Test options.
|
||||||
Test_options TestOptions
|
Test_options TestOptions
|
||||||
|
|
||||||
|
// Add RootTargetPreparer to auto generated test config. This guarantees the test to run
|
||||||
|
// with root permission.
|
||||||
|
Require_root *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// A test module is a binary module with extra --test compiler flag
|
// A test module is a binary module with extra --test compiler flag
|
||||||
@@ -109,12 +113,27 @@ func (test *testDecorator) compilerProps() []interface{} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (test *testDecorator) install(ctx ModuleContext) {
|
func (test *testDecorator) install(ctx ModuleContext) {
|
||||||
|
testInstallBase := "/data/local/tests/unrestricted"
|
||||||
|
if ctx.RustModule().InVendor() || ctx.RustModule().UseVndk() {
|
||||||
|
testInstallBase = "/data/local/tests/vendor"
|
||||||
|
}
|
||||||
|
|
||||||
|
var configs []tradefed.Config
|
||||||
|
if Bool(test.Properties.Require_root) {
|
||||||
|
configs = append(configs, tradefed.Object{"target_preparer", "com.android.tradefed.targetprep.RootTargetPreparer", nil})
|
||||||
|
} else {
|
||||||
|
var options []tradefed.Option
|
||||||
|
options = append(options, tradefed.Option{Name: "force-root", Value: "false"})
|
||||||
|
configs = append(configs, tradefed.Object{"target_preparer", "com.android.tradefed.targetprep.RootTargetPreparer", options})
|
||||||
|
}
|
||||||
|
|
||||||
test.testConfig = tradefed.AutoGenRustTestConfig(ctx,
|
test.testConfig = tradefed.AutoGenRustTestConfig(ctx,
|
||||||
test.Properties.Test_config,
|
test.Properties.Test_config,
|
||||||
test.Properties.Test_config_template,
|
test.Properties.Test_config_template,
|
||||||
test.Properties.Test_suites,
|
test.Properties.Test_suites,
|
||||||
nil,
|
configs,
|
||||||
test.Properties.Auto_gen_config)
|
test.Properties.Auto_gen_config,
|
||||||
|
testInstallBase)
|
||||||
|
|
||||||
dataSrcPaths := android.PathsForModuleSrc(ctx, test.Properties.Data)
|
dataSrcPaths := android.PathsForModuleSrc(ctx, test.Properties.Data)
|
||||||
|
|
||||||
|
@@ -227,17 +227,17 @@ func AutoGenPythonBinaryHostTestConfig(ctx android.ModuleContext, testConfigProp
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AutoGenRustTestConfig(ctx android.ModuleContext, testConfigProp *string,
|
func AutoGenRustTestConfig(ctx android.ModuleContext, testConfigProp *string,
|
||||||
testConfigTemplateProp *string, testSuites []string, config []Config, autoGenConfig *bool) android.Path {
|
testConfigTemplateProp *string, testSuites []string, config []Config, autoGenConfig *bool, testInstallBase string) android.Path {
|
||||||
path, autogenPath := testConfigPath(ctx, testConfigProp, testSuites, autoGenConfig, testConfigTemplateProp)
|
path, autogenPath := testConfigPath(ctx, testConfigProp, testSuites, autoGenConfig, testConfigTemplateProp)
|
||||||
if autogenPath != nil {
|
if autogenPath != nil {
|
||||||
templatePath := getTestConfigTemplate(ctx, testConfigTemplateProp)
|
templatePath := getTestConfigTemplate(ctx, testConfigTemplateProp)
|
||||||
if templatePath.Valid() {
|
if templatePath.Valid() {
|
||||||
autogenTemplate(ctx, autogenPath, templatePath.String(), config, "")
|
autogenTemplate(ctx, autogenPath, templatePath.String(), config, testInstallBase)
|
||||||
} else {
|
} else {
|
||||||
if ctx.Device() {
|
if ctx.Device() {
|
||||||
autogenTemplate(ctx, autogenPath, "${RustDeviceTestConfigTemplate}", config, "")
|
autogenTemplate(ctx, autogenPath, "${RustDeviceTestConfigTemplate}", config, testInstallBase)
|
||||||
} else {
|
} else {
|
||||||
autogenTemplate(ctx, autogenPath, "${RustHostTestConfigTemplate}", config, "")
|
autogenTemplate(ctx, autogenPath, "${RustHostTestConfigTemplate}", config, testInstallBase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return autogenPath
|
return autogenPath
|
||||||
|
Reference in New Issue
Block a user