Merge "Properly check the deapexed files in tests." am: 871109e91d

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

Change-Id: I3459c1a1a49812df0a421f02942c01af96df47bd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jiakai Zhang
2023-02-10 16:25:06 +00:00
committed by Automerger Merge Worker
2 changed files with 33 additions and 9 deletions

View File

@@ -3484,14 +3484,14 @@ func getFiles(t *testing.T, ctx *android.TestContext, moduleName, variant string
return ret
}
func ensureExactContents(t *testing.T, ctx *android.TestContext, moduleName, variant string, files []string) {
func assertFileListEquals(t *testing.T, expectedFiles []string, actualFiles []fileInApex) {
t.Helper()
var failed bool
var surplus []string
filesMatched := make(map[string]bool)
for _, file := range getFiles(t, ctx, moduleName, variant) {
for _, file := range actualFiles {
matchFound := false
for _, expected := range files {
for _, expected := range expectedFiles {
if file.match(expected) {
matchFound = true
filesMatched[expected] = true
@@ -3509,9 +3509,9 @@ func ensureExactContents(t *testing.T, ctx *android.TestContext, moduleName, var
failed = true
}
if len(files) > len(filesMatched) {
if len(expectedFiles) > len(filesMatched) {
var missing []string
for _, expected := range files {
for _, expected := range expectedFiles {
if !filesMatched[expected] {
missing = append(missing, expected)
}
@@ -3525,6 +3525,32 @@ func ensureExactContents(t *testing.T, ctx *android.TestContext, moduleName, var
}
}
func ensureExactContents(t *testing.T, ctx *android.TestContext, moduleName, variant string, files []string) {
assertFileListEquals(t, files, getFiles(t, ctx, moduleName, variant))
}
func ensureExactDeapexedContents(t *testing.T, ctx *android.TestContext, moduleName string, variant string, files []string) {
deapexer := ctx.ModuleForTests(moduleName+".deapexer", variant).Rule("deapexer")
outputs := make([]string, 0, len(deapexer.ImplicitOutputs)+1)
if deapexer.Output != nil {
outputs = append(outputs, deapexer.Output.String())
}
for _, output := range deapexer.ImplicitOutputs {
outputs = append(outputs, output.String())
}
actualFiles := make([]fileInApex, 0, len(outputs))
for _, output := range outputs {
dir := "/deapexer/"
pos := strings.LastIndex(output, dir)
if pos == -1 {
t.Fatal("Unknown deapexer output ", output)
}
path := output[pos+len(dir):]
actualFiles = append(actualFiles, fileInApex{path: path, src: "", isLink: false})
}
assertFileListEquals(t, files, actualFiles)
}
func TestVndkApexCurrent(t *testing.T) {
commonFiles := []string{
"lib/libc++.so",

View File

@@ -530,9 +530,8 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
java.FixtureSetBootImageInstallDirOnDevice("art", "apex/com.android.art/javalib"),
).RunTest(t)
ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
ensureExactDeapexedContents(t, result.TestContext, "com.android.art", "android_common", []string{
"etc/boot-image.prof",
"etc/classpaths/bootclasspath.pb",
"javalib/arm/boot.art",
"javalib/arm/boot.oat",
"javalib/arm/boot.vdex",
@@ -592,9 +591,8 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) {
java.FixtureSetBootImageInstallDirOnDevice("art", "system/framework"),
).RunTest(t)
ensureExactContents(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
ensureExactDeapexedContents(t, result.TestContext, "com.android.art", "android_common", []string{
"etc/boot-image.prof",
"etc/classpaths/bootclasspath.pb",
"javalib/bar.jar",
"javalib/foo.jar",
})