Merge Android 24Q2 Release (ab/11526283) to aosp-main-future
Bug: 337098550 Merged-In: I4a6dd1c5e48db7085ea41035def31f0844948a46 Change-Id: If8ad1d0d87495bbd685f5f9f03f5eb7ea78bf192
This commit is contained in:
@@ -9807,188 +9807,196 @@ func ensureDoesNotContainRequiredDeps(t *testing.T, ctx *android.TestContext, mo
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(b/193460475): Re-enable this test
|
||||
//func TestApexStrictUpdtabilityLint(t *testing.T) {
|
||||
// bpTemplate := `
|
||||
// apex {
|
||||
// name: "myapex",
|
||||
// key: "myapex.key",
|
||||
// java_libs: ["myjavalib"],
|
||||
// updatable: %v,
|
||||
// min_sdk_version: "29",
|
||||
// }
|
||||
// apex_key {
|
||||
// name: "myapex.key",
|
||||
// }
|
||||
// java_library {
|
||||
// name: "myjavalib",
|
||||
// srcs: ["MyClass.java"],
|
||||
// apex_available: [ "myapex" ],
|
||||
// lint: {
|
||||
// strict_updatability_linting: %v,
|
||||
// },
|
||||
// sdk_version: "current",
|
||||
// min_sdk_version: "29",
|
||||
// }
|
||||
// `
|
||||
// fs := android.MockFS{
|
||||
// "lint-baseline.xml": nil,
|
||||
// }
|
||||
//
|
||||
// testCases := []struct {
|
||||
// testCaseName string
|
||||
// apexUpdatable bool
|
||||
// javaStrictUpdtabilityLint bool
|
||||
// lintFileExists bool
|
||||
// disallowedFlagExpected bool
|
||||
// }{
|
||||
// {
|
||||
// testCaseName: "lint-baseline.xml does not exist, no disallowed flag necessary in lint cmd",
|
||||
// apexUpdatable: true,
|
||||
// javaStrictUpdtabilityLint: true,
|
||||
// lintFileExists: false,
|
||||
// disallowedFlagExpected: false,
|
||||
// },
|
||||
// {
|
||||
// testCaseName: "non-updatable apex respects strict_updatability of javalib",
|
||||
// apexUpdatable: false,
|
||||
// javaStrictUpdtabilityLint: false,
|
||||
// lintFileExists: true,
|
||||
// disallowedFlagExpected: false,
|
||||
// },
|
||||
// {
|
||||
// testCaseName: "non-updatable apex respects strict updatability of javalib",
|
||||
// apexUpdatable: false,
|
||||
// javaStrictUpdtabilityLint: true,
|
||||
// lintFileExists: true,
|
||||
// disallowedFlagExpected: true,
|
||||
// },
|
||||
// {
|
||||
// testCaseName: "updatable apex sets strict updatability of javalib to true",
|
||||
// apexUpdatable: true,
|
||||
// javaStrictUpdtabilityLint: false, // will be set to true by mutator
|
||||
// lintFileExists: true,
|
||||
// disallowedFlagExpected: true,
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// for _, testCase := range testCases {
|
||||
// bp := fmt.Sprintf(bpTemplate, testCase.apexUpdatable, testCase.javaStrictUpdtabilityLint)
|
||||
// fixtures := []android.FixturePreparer{}
|
||||
// if testCase.lintFileExists {
|
||||
// fixtures = append(fixtures, fs.AddToFixture())
|
||||
// }
|
||||
//
|
||||
// result := testApex(t, bp, fixtures...)
|
||||
// myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
// sboxProto := android.RuleBuilderSboxProtoForTests(t, myjavalib.Output("lint.sbox.textproto"))
|
||||
// disallowedFlagActual := strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml --disallowed_issues NewApi")
|
||||
//
|
||||
// if disallowedFlagActual != testCase.disallowedFlagExpected {
|
||||
// t.Errorf("Failed testcase: %v \nActual lint cmd: %v", testCase.testCaseName, *sboxProto.Commands[0].Command)
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//func TestUpdatabilityLintSkipLibcore(t *testing.T) {
|
||||
// bp := `
|
||||
// apex {
|
||||
// name: "myapex",
|
||||
// key: "myapex.key",
|
||||
// java_libs: ["myjavalib"],
|
||||
// updatable: true,
|
||||
// min_sdk_version: "29",
|
||||
// }
|
||||
// apex_key {
|
||||
// name: "myapex.key",
|
||||
// }
|
||||
// java_library {
|
||||
// name: "myjavalib",
|
||||
// srcs: ["MyClass.java"],
|
||||
// apex_available: [ "myapex" ],
|
||||
// sdk_version: "current",
|
||||
// min_sdk_version: "29",
|
||||
// }
|
||||
// `
|
||||
//
|
||||
// testCases := []struct {
|
||||
// testCaseName string
|
||||
// moduleDirectory string
|
||||
// disallowedFlagExpected bool
|
||||
// }{
|
||||
// {
|
||||
// testCaseName: "lintable module defined outside libcore",
|
||||
// moduleDirectory: "",
|
||||
// disallowedFlagExpected: true,
|
||||
// },
|
||||
// {
|
||||
// testCaseName: "lintable module defined in libcore root directory",
|
||||
// moduleDirectory: "libcore/",
|
||||
// disallowedFlagExpected: false,
|
||||
// },
|
||||
// {
|
||||
// testCaseName: "lintable module defined in libcore child directory",
|
||||
// moduleDirectory: "libcore/childdir/",
|
||||
// disallowedFlagExpected: true,
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// for _, testCase := range testCases {
|
||||
// lintFileCreator := android.FixtureAddTextFile(testCase.moduleDirectory+"lint-baseline.xml", "")
|
||||
// bpFileCreator := android.FixtureAddTextFile(testCase.moduleDirectory+"Android.bp", bp)
|
||||
// result := testApex(t, "", lintFileCreator, bpFileCreator)
|
||||
// myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
// sboxProto := android.RuleBuilderSboxProtoForTests(t, myjavalib.Output("lint.sbox.textproto"))
|
||||
// cmdFlags := fmt.Sprintf("--baseline %vlint-baseline.xml --disallowed_issues NewApi", testCase.moduleDirectory)
|
||||
// disallowedFlagActual := strings.Contains(*sboxProto.Commands[0].Command, cmdFlags)
|
||||
//
|
||||
// if disallowedFlagActual != testCase.disallowedFlagExpected {
|
||||
// t.Errorf("Failed testcase: %v \nActual lint cmd: %v", testCase.testCaseName, *sboxProto.Commands[0].Command)
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//// checks transtive deps of an apex coming from bootclasspath_fragment
|
||||
//func TestApexStrictUpdtabilityLintBcpFragmentDeps(t *testing.T) {
|
||||
// bp := `
|
||||
// apex {
|
||||
// name: "myapex",
|
||||
// key: "myapex.key",
|
||||
// bootclasspath_fragments: ["mybootclasspathfragment"],
|
||||
// updatable: true,
|
||||
// min_sdk_version: "29",
|
||||
// }
|
||||
// apex_key {
|
||||
// name: "myapex.key",
|
||||
// }
|
||||
// bootclasspath_fragment {
|
||||
// name: "mybootclasspathfragment",
|
||||
// contents: ["myjavalib"],
|
||||
// apex_available: ["myapex"],
|
||||
// hidden_api: {
|
||||
// split_packages: ["*"],
|
||||
// },
|
||||
// }
|
||||
// java_library {
|
||||
// name: "myjavalib",
|
||||
// srcs: ["MyClass.java"],
|
||||
// apex_available: [ "myapex" ],
|
||||
// sdk_version: "current",
|
||||
// min_sdk_version: "29",
|
||||
// compile_dex: true,
|
||||
// }
|
||||
// `
|
||||
// fs := android.MockFS{
|
||||
// "lint-baseline.xml": nil,
|
||||
// }
|
||||
//
|
||||
// result := testApex(t, bp, dexpreopt.FixtureSetApexBootJars("myapex:myjavalib"), fs.AddToFixture())
|
||||
// myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
// sboxProto := android.RuleBuilderSboxProtoForTests(t, myjavalib.Output("lint.sbox.textproto"))
|
||||
// if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml --disallowed_issues NewApi") {
|
||||
// t.Errorf("Strict updabality lint missing in myjavalib coming from bootclasspath_fragment mybootclasspath-fragment\nActual lint cmd: %v", *sboxProto.Commands[0].Command)
|
||||
// }
|
||||
//}
|
||||
func TestApexStrictUpdtabilityLint(t *testing.T) {
|
||||
bpTemplate := `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
java_libs: ["myjavalib"],
|
||||
updatable: %v,
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
}
|
||||
java_library {
|
||||
name: "myjavalib",
|
||||
srcs: ["MyClass.java"],
|
||||
apex_available: [ "myapex" ],
|
||||
lint: {
|
||||
strict_updatability_linting: %v,
|
||||
%s
|
||||
},
|
||||
sdk_version: "current",
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
`
|
||||
fs := android.MockFS{
|
||||
"lint-baseline.xml": nil,
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
testCaseName string
|
||||
apexUpdatable bool
|
||||
javaStrictUpdtabilityLint bool
|
||||
lintFileExists bool
|
||||
disallowedFlagExpected bool
|
||||
}{
|
||||
{
|
||||
testCaseName: "lint-baseline.xml does not exist, no disallowed flag necessary in lint cmd",
|
||||
apexUpdatable: true,
|
||||
javaStrictUpdtabilityLint: true,
|
||||
lintFileExists: false,
|
||||
disallowedFlagExpected: false,
|
||||
},
|
||||
{
|
||||
testCaseName: "non-updatable apex respects strict_updatability of javalib",
|
||||
apexUpdatable: false,
|
||||
javaStrictUpdtabilityLint: false,
|
||||
lintFileExists: true,
|
||||
disallowedFlagExpected: false,
|
||||
},
|
||||
{
|
||||
testCaseName: "non-updatable apex respects strict updatability of javalib",
|
||||
apexUpdatable: false,
|
||||
javaStrictUpdtabilityLint: true,
|
||||
lintFileExists: true,
|
||||
disallowedFlagExpected: true,
|
||||
},
|
||||
{
|
||||
testCaseName: "updatable apex sets strict updatability of javalib to true",
|
||||
apexUpdatable: true,
|
||||
javaStrictUpdtabilityLint: false, // will be set to true by mutator
|
||||
lintFileExists: true,
|
||||
disallowedFlagExpected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
fixtures := []android.FixturePreparer{}
|
||||
baselineProperty := ""
|
||||
if testCase.lintFileExists {
|
||||
fixtures = append(fixtures, fs.AddToFixture())
|
||||
baselineProperty = "baseline_filename: \"lint-baseline.xml\""
|
||||
}
|
||||
bp := fmt.Sprintf(bpTemplate, testCase.apexUpdatable, testCase.javaStrictUpdtabilityLint, baselineProperty)
|
||||
|
||||
result := testApex(t, bp, fixtures...)
|
||||
myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, result, myjavalib.Output("lint.sbox.textproto"))
|
||||
disallowedFlagActual := strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml --disallowed_issues NewApi")
|
||||
|
||||
if disallowedFlagActual != testCase.disallowedFlagExpected {
|
||||
t.Errorf("Failed testcase: %v \nActual lint cmd: %v", testCase.testCaseName, *sboxProto.Commands[0].Command)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdatabilityLintSkipLibcore(t *testing.T) {
|
||||
bp := `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
java_libs: ["myjavalib"],
|
||||
updatable: true,
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
}
|
||||
java_library {
|
||||
name: "myjavalib",
|
||||
srcs: ["MyClass.java"],
|
||||
apex_available: [ "myapex" ],
|
||||
sdk_version: "current",
|
||||
min_sdk_version: "29",
|
||||
lint: {
|
||||
baseline_filename: "lint-baseline.xml",
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
testCases := []struct {
|
||||
testCaseName string
|
||||
moduleDirectory string
|
||||
disallowedFlagExpected bool
|
||||
}{
|
||||
{
|
||||
testCaseName: "lintable module defined outside libcore",
|
||||
moduleDirectory: "",
|
||||
disallowedFlagExpected: true,
|
||||
},
|
||||
{
|
||||
testCaseName: "lintable module defined in libcore root directory",
|
||||
moduleDirectory: "libcore/",
|
||||
disallowedFlagExpected: false,
|
||||
},
|
||||
{
|
||||
testCaseName: "lintable module defined in libcore child directory",
|
||||
moduleDirectory: "libcore/childdir/",
|
||||
disallowedFlagExpected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
lintFileCreator := android.FixtureAddTextFile(testCase.moduleDirectory+"lint-baseline.xml", "")
|
||||
bpFileCreator := android.FixtureAddTextFile(testCase.moduleDirectory+"Android.bp", bp)
|
||||
result := testApex(t, "", lintFileCreator, bpFileCreator)
|
||||
myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, result, myjavalib.Output("lint.sbox.textproto"))
|
||||
cmdFlags := fmt.Sprintf("--baseline %vlint-baseline.xml --disallowed_issues NewApi", testCase.moduleDirectory)
|
||||
disallowedFlagActual := strings.Contains(*sboxProto.Commands[0].Command, cmdFlags)
|
||||
|
||||
if disallowedFlagActual != testCase.disallowedFlagExpected {
|
||||
t.Errorf("Failed testcase: %v \nActual lint cmd: %v", testCase.testCaseName, *sboxProto.Commands[0].Command)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// checks transtive deps of an apex coming from bootclasspath_fragment
|
||||
func TestApexStrictUpdtabilityLintBcpFragmentDeps(t *testing.T) {
|
||||
bp := `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
bootclasspath_fragments: ["mybootclasspathfragment"],
|
||||
updatable: true,
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
}
|
||||
bootclasspath_fragment {
|
||||
name: "mybootclasspathfragment",
|
||||
contents: ["myjavalib"],
|
||||
apex_available: ["myapex"],
|
||||
hidden_api: {
|
||||
split_packages: ["*"],
|
||||
},
|
||||
}
|
||||
java_library {
|
||||
name: "myjavalib",
|
||||
srcs: ["MyClass.java"],
|
||||
apex_available: [ "myapex" ],
|
||||
sdk_version: "current",
|
||||
min_sdk_version: "29",
|
||||
compile_dex: true,
|
||||
lint: {
|
||||
baseline_filename: "lint-baseline.xml",
|
||||
}
|
||||
}
|
||||
`
|
||||
fs := android.MockFS{
|
||||
"lint-baseline.xml": nil,
|
||||
}
|
||||
|
||||
result := testApex(t, bp, dexpreopt.FixtureSetApexBootJars("myapex:myjavalib"), fs.AddToFixture())
|
||||
myjavalib := result.ModuleForTests("myjavalib", "android_common_apex29")
|
||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, result, myjavalib.Output("lint.sbox.textproto"))
|
||||
if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml --disallowed_issues NewApi") {
|
||||
t.Errorf("Strict updabality lint missing in myjavalib coming from bootclasspath_fragment mybootclasspath-fragment\nActual lint cmd: %v", *sboxProto.Commands[0].Command)
|
||||
}
|
||||
}
|
||||
|
||||
// updatable apexes should propagate updatable=true to its apps
|
||||
func TestUpdatableApexEnforcesAppUpdatability(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user