Move target sdk version enforcement check

Enforce target sdk version flag could only be used by `android_app`,
moving the check into a common function `generateAndroidBuildActions`.
This would ensure that the `enforce_target_sdk_version` flag
can also be set by `android_test` and `android_test_helper_app`.

Bug: b/227460469
Test: m nothing

Change-Id: I86e0bf684a5083221dae53907d9f548a0390b673
This commit is contained in:
Harshit Mahajan
2023-01-09 20:45:55 +00:00
parent 64b0fbd151
commit 8f202ad925
2 changed files with 76 additions and 5 deletions

View File

@@ -3203,7 +3203,7 @@ func TestEnforceDefaultAppTargetSdkVersionFlag(t *testing.T) {
updatable: true,
},
{
name: "[SDK finalised] Enforce Target SDK Version: Android.bp has current targetSdkVersion",
name: "Enforce Target SDK Version: Android.bp has current targetSdkVersion",
enforceDefaultTargetSdkVersion: true,
platform_sdk_final: false,
targetSdkVersionInBp: "current",
@@ -3259,6 +3259,76 @@ func TestEnforceDefaultAppTargetSdkVersionFlag(t *testing.T) {
}
}
func TestEnforceDefaultAppTargetSdkVersionFlagForTests(t *testing.T) {
platform_sdk_codename := "Tiramisu"
platform_sdk_version := 33
testCases := []struct {
name string
enforceDefaultTargetSdkVersion bool
expectedError string
platform_sdk_final bool
targetSdkVersionInBp string
targetSdkVersionExpected string
}{
{
name: "Not enforcing Target SDK Version: Android.bp has older targetSdkVersion",
enforceDefaultTargetSdkVersion: false,
targetSdkVersionInBp: "29",
targetSdkVersionExpected: "29",
},
{
name: "[SDK finalised] Enforce Target SDK Version: Android.bp has current targetSdkVersion",
enforceDefaultTargetSdkVersion: true,
platform_sdk_final: true,
targetSdkVersionInBp: "current",
targetSdkVersionExpected: "33",
},
{
name: "Enforce Target SDK Version: Android.bp has current targetSdkVersion",
enforceDefaultTargetSdkVersion: true,
platform_sdk_final: false,
targetSdkVersionInBp: "current",
targetSdkVersionExpected: "10000",
},
}
for _, testCase := range testCases {
errExpected := testCase.expectedError != ""
bp := fmt.Sprintf(`
android_test {
name: "foo",
enforce_default_target_sdk_version: %t,
min_sdk_version: "29",
target_sdk_version: "%v",
}
`, testCase.enforceDefaultTargetSdkVersion, testCase.targetSdkVersionInBp)
fixture := android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,
android.PrepareForTestWithAllowMissingDependencies,
android.PrepareForTestWithAndroidMk,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
// explicitly set following platform variables to make the test deterministic
variables.Platform_sdk_final = &testCase.platform_sdk_final
variables.Platform_sdk_version = &platform_sdk_version
variables.Platform_sdk_codename = &platform_sdk_codename
variables.Unbundled_build_apps = []string{"sampleModule"}
}),
)
errorHandler := android.FixtureExpectsNoErrors
if errExpected {
errorHandler = android.FixtureExpectsAtLeastOneErrorMatchingPattern(testCase.expectedError)
}
result := fixture.ExtendWithErrorHandler(errorHandler).RunTestWithBp(t, bp)
if !errExpected {
foo := result.ModuleForTests("foo", "android_common")
manifestFixerArgs := foo.Output("manifest_fixer/AndroidManifest.xml").Args["args"]
android.AssertStringDoesContain(t, testCase.name, manifestFixerArgs, "--targetSdkVersion "+testCase.targetSdkVersionExpected)
}
}
}
func TestAppMissingCertificateAllowMissingDependencies(t *testing.T) {
result := android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,