diff options
author | 2022-12-07 18:18:37 -0800 | |
---|---|---|
committer | 2023-01-03 12:47:11 -0800 | |
commit | 216805457cb4567fe73f8d31a79c473d8f3d9e33 (patch) | |
tree | c0daeda0f00bae651e4126327c531c239bc02f1e /java | |
parent | 2266e02a3a643b138feb6f1ff94d88ec46dfda6d (diff) |
Allow adding extra tradefed options in the Android.bp file
Some tests need to add custom tradefed options, but still want to
keep most of the soong autogenerated tradefed xml file.
Expose a test_options: { tradefed_options: [...] } property that
will allow tests to add more options to the autogenerated xml file.
Fixes: 184895128
Test: go test, and verified that the ninja files did not change for aosp_arm64
Change-Id: I50d4ad139322e9e207202f1e1a50f5bbb424aa6f
Diffstat (limited to 'java')
-rw-r--r-- | java/java.go | 28 | ||||
-rw-r--r-- | java/java_test.go | 24 | ||||
-rw-r--r-- | java/robolectric.go | 11 |
3 files changed, 55 insertions, 8 deletions
diff --git a/java/java.go b/java/java.go index 275abbe35..5421a154c 100644 --- a/java/java.go +++ b/java/java.go @@ -915,6 +915,10 @@ type TestOptions struct { // a list of extra test configuration files that should be installed with the module. Extra_test_configs []string `android:"path,arch_variant"` + + // Extra <option> tags to add to the auto generated test xml file. The "key" + // is optional in each of these. + Tradefed_options []tradefed.Option } type testProperties struct { @@ -1192,9 +1196,18 @@ func (j *Test) generateAndroidBuildActionsWithConfig(ctx android.ModuleContext, defaultUnitTest := !inList("tradefed", j.properties.Libs) && !inList("cts", j.testProperties.Test_suites) j.testProperties.Test_options.Unit_test = proptools.BoolPtr(defaultUnitTest) } - - j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.testProperties.Test_config, j.testProperties.Test_config_template, - j.testProperties.Test_suites, configs, j.testProperties.Auto_gen_config, j.testProperties.Test_options.Unit_test) + j.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{ + TestConfigProp: j.testProperties.Test_config, + TestConfigTemplateProp: j.testProperties.Test_config_template, + TestSuites: j.testProperties.Test_suites, + Config: configs, + OptionsForAutogenerated: j.testProperties.Test_options.Tradefed_options, + AutoGenConfig: j.testProperties.Auto_gen_config, + UnitTest: j.testProperties.Test_options.Unit_test, + DeviceTemplate: "${JavaTestConfigTemplate}", + HostTemplate: "${JavaHostTestConfigTemplate}", + HostUnitTestTemplate: "${JavaHostUnitTestConfigTemplate}", + }) j.data = android.PathsForModuleSrc(ctx, j.testProperties.Data) @@ -1239,8 +1252,13 @@ func (j *TestHelperLibrary) GenerateAndroidBuildActions(ctx android.ModuleContex } func (j *JavaTestImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { - j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.prebuiltTestProperties.Test_config, nil, - j.prebuiltTestProperties.Test_suites, nil, nil, nil) + j.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{ + TestConfigProp: j.prebuiltTestProperties.Test_config, + TestSuites: j.prebuiltTestProperties.Test_suites, + DeviceTemplate: "${JavaTestConfigTemplate}", + HostTemplate: "${JavaHostTestConfigTemplate}", + HostUnitTestTemplate: "${JavaHostUnitTestConfigTemplate}", + }) j.Import.GenerateAndroidBuildActions(ctx) } diff --git a/java/java_test.go b/java/java_test.go index dff1fd07f..085f6272a 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1945,3 +1945,27 @@ func TestJavaApiLibraryJarGeneration(t *testing.T) { } } } + +func TestTradefedOptions(t *testing.T) { + result := PrepareForTestWithJavaBuildComponents.RunTestWithBp(t, ` +java_test_host { + name: "foo", + test_options: { + tradefed_options: [ + { + name: "exclude-path", + value: "org/apache" + } + ] + } +} +`) + + buildOS := result.Config.BuildOS.String() + args := result.ModuleForTests("foo", buildOS+"_common"). + Output("out/soong/.intermediates/foo/" + buildOS + "_common/foo.config").Args + expected := proptools.NinjaAndShellEscape("<option name=\"exclude-path\" value=\"org/apache\" />") + if args["extraConfigs"] != expected { + t.Errorf("Expected args[\"extraConfigs\"] to equal %q, was %q", expected, args["extraConfigs"]) + } +} diff --git a/java/robolectric.go b/java/robolectric.go index 6e8d5913c..68f27b859 100644 --- a/java/robolectric.go +++ b/java/robolectric.go @@ -131,9 +131,14 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) r.forceOSType = ctx.Config().BuildOS r.forceArchType = ctx.Config().BuildArch - r.testConfig = tradefed.AutoGenRobolectricTestConfig(ctx, r.testProperties.Test_config, - r.testProperties.Test_config_template, r.testProperties.Test_suites, - r.testProperties.Auto_gen_config) + r.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{ + TestConfigProp: r.testProperties.Test_config, + TestConfigTemplateProp: r.testProperties.Test_config_template, + TestSuites: r.testProperties.Test_suites, + AutoGenConfig: r.testProperties.Auto_gen_config, + DeviceTemplate: "${RobolectricTestConfigTemplate}", + HostTemplate: "${RobolectricTestConfigTemplate}", + }) r.data = android.PathsForModuleSrc(ctx, r.testProperties.Data) roboTestConfig := android.PathForModuleGen(ctx, "robolectric"). |