Prevent using android_app_import in instrumentation_for property
Previously, referencing a prebuilt android_app_import in an android_test's instrumentation_for property instead of the source android_app module (e.g. because the prebuilt is preferred) could result in compilation errors if the android_test sources depended on classes from the app. That is because while the android_app provides a classes jar file to be added to the android_test's classpath the android_app_import does not. This change reports that situation as an error. Bug: 207128192 Test: m nothing Change-Id: I26ea90e7a3f57707fc0c094e0d8b8dc9a9e135ac
This commit is contained in:
@@ -2168,10 +2168,33 @@ func TestAndroidTest_FixTestConfig(t *testing.T) {
|
|||||||
t.Errorf("test_config_fixer was not expected to run, but did: %q", params.RuleParams.Command)
|
t.Errorf("test_config_fixer was not expected to run, but did: %q", params.RuleParams.Command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInstrumentationTargetPrebuilt(t *testing.T) {
|
||||||
|
bp := `
|
||||||
|
android_app_import {
|
||||||
|
name: "foo",
|
||||||
|
apk: "foo.apk",
|
||||||
|
presigned: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
android_test {
|
||||||
|
name: "bar",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
instrumentation_for: "foo",
|
||||||
|
sdk_version: "current",
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
android.GroupFixturePreparers(
|
||||||
|
PrepareForTestWithJavaDefaultModules,
|
||||||
|
).ExtendWithErrorHandler(
|
||||||
|
android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||||
|
"instrumentation_for: dependency \"foo\" of type \"android_app_import\" does not provide JavaInfo so is unsuitable for use with this property")).
|
||||||
|
RunTestWithBp(t, bp)
|
||||||
|
}
|
||||||
|
|
||||||
func TestStl(t *testing.T) {
|
func TestStl(t *testing.T) {
|
||||||
ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+`
|
ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+`
|
||||||
cc_library {
|
cc_library {
|
||||||
|
@@ -1936,6 +1936,9 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
|||||||
sm := module.(SystemModulesProvider)
|
sm := module.(SystemModulesProvider)
|
||||||
outputDir, outputDeps := sm.OutputDirAndDeps()
|
outputDir, outputDeps := sm.OutputDirAndDeps()
|
||||||
deps.systemModules = &systemModules{outputDir, outputDeps}
|
deps.systemModules = &systemModules{outputDir, outputDeps}
|
||||||
|
|
||||||
|
case instrumentationForTag:
|
||||||
|
ctx.PropertyErrorf("instrumentation_for", "dependency %q of type %q does not provide JavaInfo so is unsuitable for use with this property", ctx.OtherModuleName(module), ctx.OtherModuleType(module))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user