Merge "Overwrite test-file-name in test config." am: a929cd52ce
am: b3dd640c9f
am: 4dddde24ae
Change-Id: I3ed6f25ded54a962ea0650285e0522206cb4864b
This commit is contained in:
42
java/app.go
42
java/app.go
@@ -644,22 +644,40 @@ 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)
|
||||
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)
|
||||
rule.Build(pctx, ctx, "fix_test_config", "fix test config")
|
||||
a.testConfig = fixedConfig
|
||||
}
|
||||
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 {
|
||||
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")
|
||||
return fixedConfig
|
||||
}
|
||||
return testConfig
|
||||
}
|
||||
|
||||
func (a *AndroidTest) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
a.AndroidApp.DepsMutator(ctx)
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user