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:
Paul Duffin
2022-01-11 14:35:55 +00:00
parent fe306aba98
commit 53a70a4870
2 changed files with 27 additions and 1 deletions

View File

@@ -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)
}
}
}
}
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) {
ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+`
cc_library {