add variant_version property to apexBundle

This property allows modifying the variant version that is put into the
APEX manifest.

Bug: 285138555
(cherry picked from https://android-review.googlesource.com/q/commit:6d65a0fc3dde0e488b2af91d166c8d37630a5b2e)
Merged-In: I42b8c0ddad8822a0a329e99ec4ec62f8c3546ee9
Change-Id: I42b8c0ddad8822a0a329e99ec4ec62f8c3546ee9
This commit is contained in:
Sam Delmerico
2023-06-05 15:55:57 -04:00
committed by Cherrypicker Worker
parent 1dc63117f2
commit aae62179ce
3 changed files with 102 additions and 0 deletions

View File

@@ -6556,6 +6556,89 @@ func TestApexAvailable_InvalidApexName(t *testing.T) {
}`)
}
func TestApexAvailable_ApexAvailableNameWithVersionCodeError(t *testing.T) {
t.Run("negative variant_version produces error", func(t *testing.T) {
testApexError(t, "expected an integer between 0-9; got -1", `
apex {
name: "myapex",
key: "myapex.key",
apex_available_name: "com.android.foo",
variant_version: "-1",
updatable: false,
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
`)
})
t.Run("variant_version greater than 9 produces error", func(t *testing.T) {
testApexError(t, "expected an integer between 0-9; got 10", `
apex {
name: "myapex",
key: "myapex.key",
apex_available_name: "com.android.foo",
variant_version: "10",
updatable: false,
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
`)
})
}
func TestApexAvailable_ApexAvailableNameWithVersionCode(t *testing.T) {
context := android.GroupFixturePreparers(
android.PrepareForIntegrationTestWithAndroid,
PrepareForTestWithApexBuildComponents,
android.FixtureMergeMockFs(android.MockFS{
"system/sepolicy/apex/foo-file_contexts": nil,
"system/sepolicy/apex/bar-file_contexts": nil,
}),
)
result := context.RunTestWithBp(t, `
apex {
name: "foo",
key: "myapex.key",
apex_available_name: "com.android.foo",
variant_version: "0",
updatable: false,
}
apex {
name: "bar",
key: "myapex.key",
apex_available_name: "com.android.foo",
variant_version: "3",
updatable: false,
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
`)
fooManifestRule := result.ModuleForTests("foo", "android_common_foo_image").Rule("apexManifestRule")
fooExpectedDefaultVersion := android.DefaultUpdatableModuleVersion
fooActualDefaultVersion := fooManifestRule.Args["default_version"]
if fooActualDefaultVersion != fooExpectedDefaultVersion {
t.Errorf("expected to find defaultVersion %q; got %q", fooExpectedDefaultVersion, fooActualDefaultVersion)
}
barManifestRule := result.ModuleForTests("bar", "android_common_bar_image").Rule("apexManifestRule")
defaultVersionInt, _ := strconv.Atoi(android.DefaultUpdatableModuleVersion)
barExpectedDefaultVersion := fmt.Sprint(defaultVersionInt + 3)
barActualDefaultVersion := barManifestRule.Args["default_version"]
if barActualDefaultVersion != barExpectedDefaultVersion {
t.Errorf("expected to find defaultVersion %q; got %q", barExpectedDefaultVersion, barActualDefaultVersion)
}
}
func TestApexAvailable_ApexAvailableName(t *testing.T) {
t.Run("using name of apex that sets apex_available_name is not allowed", func(t *testing.T) {
testApexError(t, "Consider adding \"myapex\" to 'apex_available' property of \"AppFoo\"", `