Merge "make system server modules use filtered lint database" am: 49e0e81155

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1756510

Change-Id: I057f0fba2989eb08cd701b34f015c983111d9f44
This commit is contained in:
Pedro Loureiro 2021-07-13 09:12:26 +00:00 committed by Automerger Merge Worker
commit 0e689980e2
2 changed files with 20 additions and 13 deletions

View file

@ -391,8 +391,9 @@ func (l *linter) lint(ctx android.ModuleContext) {
rule.Command().Text("rm -f").Output(html).Output(text).Output(xml) rule.Command().Text("rm -f").Output(html).Output(text).Output(xml)
var apiVersionsName, apiVersionsPrebuilt string var apiVersionsName, apiVersionsPrebuilt string
if l.compileSdkKind == android.SdkModule { if l.compileSdkKind == android.SdkModule || l.compileSdkKind == android.SdkSystemServer {
// When compiling an SDK module we use the filtered database because otherwise lint's // When compiling an SDK module (or system server) we use the filtered
// database because otherwise lint's
// NewApi check produces too many false positives; This database excludes information // NewApi check produces too many false positives; This database excludes information
// about classes created in mainline modules hence removing those false positives. // about classes created in mainline modules hence removing those false positives.
apiVersionsName = "api_versions_public_filtered.xml" apiVersionsName = "api_versions_public_filtered.xml"

View file

@ -261,6 +261,9 @@ func TestJavaLintDatabaseSelectionFull(t *testing.T) {
} }
func TestJavaLintDatabaseSelectionPublicFiltered(t *testing.T) { func TestJavaLintDatabaseSelectionPublicFiltered(t *testing.T) {
testCases := []string{
"module_current", "system_server_current",
}
bp := ` bp := `
java_library { java_library {
name: "foo", name: "foo",
@ -274,17 +277,20 @@ func TestJavaLintDatabaseSelectionPublicFiltered(t *testing.T) {
}, },
} }
` `
result := android.GroupFixturePreparers(PrepareForTestWithJavaDefaultModules). for _, testCase := range testCases {
RunTestWithBp(t, bp) thisBp := strings.Replace(bp, "XXX", testCase, 1)
result := android.GroupFixturePreparers(PrepareForTestWithJavaDefaultModules).
RunTestWithBp(t, thisBp)
foo := result.ModuleForTests("foo", "android_common") foo := result.ModuleForTests("foo", "android_common")
sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto")) sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto"))
if !strings.Contains(*sboxProto.Commands[0].Command, if !strings.Contains(*sboxProto.Commands[0].Command,
"/api_versions_public_filtered.xml") { "/api_versions_public_filtered.xml") {
t.Error("did not use public-filtered lint api database", *sboxProto.Commands[0].Command) t.Error("did not use public-filtered lint api database for case", testCase)
} }
if strings.Contains(*sboxProto.Commands[0].Command, if strings.Contains(*sboxProto.Commands[0].Command,
"/api_versions.xml") { "/api_versions.xml") {
t.Error("used full api database") t.Error("used full api database for case", testCase)
}
} }
} }