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",  	}  )  |