diff options
Diffstat (limited to 'java')
| -rwxr-xr-x | java/app.go | 38 | ||||
| -rw-r--r-- | java/app_test.go | 81 | ||||
| -rw-r--r-- | java/builder.go | 3 | ||||
| -rw-r--r-- | java/config/config.go | 2 |
4 files changed, 114 insertions, 10 deletions
diff --git a/java/app.go b/java/app.go index 7828a8045..e9941f2d2 100755 --- a/java/app.go +++ b/java/app.go @@ -644,20 +644,38 @@ func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { } a.generateAndroidBuildActions(ctx) - a.testConfig = tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, + testConfig := tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, a.testProperties.Test_config_template, a.manifestPath, a.testProperties.Test_suites, a.testProperties.Auto_gen_config) + a.testConfig = a.FixTestConfig(ctx, testConfig) + a.data = android.PathsForModuleSrc(ctx, a.testProperties.Data) +} + +func (a *AndroidTest) FixTestConfig(ctx android.ModuleContext, testConfig android.Path) android.Path { + if testConfig == nil { + return nil + } + + fixedConfig := android.PathForModuleOut(ctx, "test_config_fixer", "AndroidTest.xml") + rule := android.NewRuleBuilder() + command := rule.Command().BuiltTool(ctx, "test_config_fixer").Input(testConfig).Output(fixedConfig) + fixNeeded := false + + if ctx.ModuleName() != a.installApkName { + fixNeeded = true + command.FlagWithArg("--test-file-name ", a.installApkName+".apk") + } + if a.overridableAppProperties.Package_name != nil { - fixedConfig := android.PathForModuleOut(ctx, "test_config_fixer", "AndroidTest.xml") - rule := android.NewRuleBuilder() - rule.Command().BuiltTool(ctx, "test_config_fixer"). - FlagWithInput("--manifest ", a.manifestPath). - FlagWithArg("--package-name ", *a.overridableAppProperties.Package_name). - Input(a.testConfig). - Output(fixedConfig) + fixNeeded = true + command.FlagWithInput("--manifest ", a.manifestPath). + FlagWithArg("--package-name ", *a.overridableAppProperties.Package_name) + } + + if fixNeeded { rule.Build(pctx, ctx, "fix_test_config", "fix test config") - a.testConfig = fixedConfig + return fixedConfig } - a.data = android.PathsForModuleSrc(ctx, a.testProperties.Data) + return testConfig } func (a *AndroidTest) DepsMutator(ctx android.BottomUpMutatorContext) { diff --git a/java/app_test.go b/java/app_test.go index 862af774a..6f89da410 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -1305,6 +1305,87 @@ func TestOverrideAndroidTest(t *testing.T) { } } +func TestAndroidTest_FixTestConfig(t *testing.T) { + ctx, _ := testJava(t, ` + android_app { + name: "foo", + srcs: ["a.java"], + package_name: "com.android.foo", + sdk_version: "current", + } + + android_test { + name: "foo_test", + srcs: ["b.java"], + instrumentation_for: "foo", + } + + android_test { + name: "bar_test", + srcs: ["b.java"], + package_name: "com.android.bar.test", + instrumentation_for: "foo", + } + + override_android_test { + name: "baz_test", + base: "foo_test", + package_name: "com.android.baz.test", + } + `) + + testCases := []struct { + moduleName string + variantName string + expectedFlags []string + }{ + { + moduleName: "foo_test", + variantName: "android_common", + }, + { + moduleName: "bar_test", + variantName: "android_common", + expectedFlags: []string{ + "--manifest " + buildDir + "/.intermediates/bar_test/android_common/manifest_fixer/AndroidManifest.xml", + "--package-name com.android.bar.test", + }, + }, + { + moduleName: "foo_test", + variantName: "android_common_baz_test", + expectedFlags: []string{ + "--manifest " + buildDir + + "/.intermediates/foo_test/android_common_baz_test/manifest_fixer/AndroidManifest.xml", + "--package-name com.android.baz.test", + "--test-file-name baz_test.apk", + }, + }, + } + + for _, test := range testCases { + variant := ctx.ModuleForTests(test.moduleName, test.variantName) + params := variant.MaybeOutput("test_config_fixer/AndroidTest.xml") + + if len(test.expectedFlags) > 0 { + if params.Rule == nil { + t.Errorf("test_config_fixer was expected to run, but didn't") + } else { + for _, flag := range test.expectedFlags { + if !strings.Contains(params.RuleParams.Command, flag) { + t.Errorf("Flag %q was not found in command: %q", flag, params.RuleParams.Command) + } + } + } + } else { + if params.Rule != nil { + t.Errorf("test_config_fixer was not expected to run, but did: %q", params.RuleParams.Command) + } + } + + } +} + func TestAndroidAppImport(t *testing.T) { ctx, _ := testJava(t, ` android_app_import { diff --git a/java/builder.go b/java/builder.go index 417a7fa54..26a49ea53 100644 --- a/java/builder.go +++ b/java/builder.go @@ -64,6 +64,8 @@ var ( _ = pctx.VariableFunc("kytheCorpus", func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() }) + _ = pctx.VariableFunc("kytheCuEncoding", + func(ctx android.PackageVarContext) string { return ctx.Config().XrefCuEncoding() }) _ = pctx.SourcePathVariable("kytheVnames", "build/soong/vnames.json") // Run it with -add-opens=java.base/java.nio=ALL-UNNAMED to avoid JDK9's warning about // "Illegal reflective access by com.google.protobuf.Utf8$UnsafeProcessor ... @@ -76,6 +78,7 @@ var ( `KYTHE_ROOT_DIRECTORY=. KYTHE_OUTPUT_FILE=$out ` + `KYTHE_CORPUS=${kytheCorpus} ` + `KYTHE_VNAMES=${kytheVnames} ` + + `KYTHE_KZIP_ENCODING=${kytheCuEncoding} ` + `${config.SoongJavacWrapper} ${config.JavaCmd} ` + `--add-opens=java.base/java.nio=ALL-UNNAMED ` + `-jar ${config.JavaKytheExtractorJar} ` + diff --git a/java/config/config.go b/java/config/config.go index 97384545e..6da7279c3 100644 --- a/java/config/config.go +++ b/java/config/config.go @@ -45,7 +45,9 @@ var ( "core-icu4j", "core-oj", "core-libart", + // TODO: Could this be all updatable bootclasspath jars? "updatable-media", + "framework-sdkextensions", "ike", } ) |
