Generate android_certificate_directory
Previously, partners were required to add an
android_certificate_directory filegroup in their certificate
directories, and allowlist that BUILD file. Now, we generate the
filegroup automatically.
We're using a different name, generated_android_certificate_directory,
to avoid conflicts with already-checked-in filegroups.
Bug: 285777389
Test: b test //build/bazel/rules/apex/...
Change-Id: Ib1bde487acd79d58368faf0aad02ded0bcdaceb4
diff --git a/bp2build/conversion_test.go b/bp2build/conversion_test.go
index 89dd38e..6b10077 100644
--- a/bp2build/conversion_test.go
+++ b/bp2build/conversion_test.go
@@ -83,7 +83,8 @@
func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) {
testConfig := android.TestConfig("", make(map[string]string), "", make(map[string][]byte))
- files, err := soongInjectionFiles(testConfig, CreateCodegenMetrics())
+ codegenCtx := NewCodegenContext(testConfig, android.NewTestContext(testConfig).Context, Bp2Build, "")
+ files, err := createSoongInjectionDirFiles(codegenCtx, CreateCodegenMetrics())
if err != nil {
t.Error(err)
}
@@ -106,6 +107,10 @@
},
{
dir: "cc_toolchain",
+ basename: "ndk_libs.bzl",
+ },
+ {
+ dir: "cc_toolchain",
basename: "sanitizer_constants.bzl",
},
{
@@ -182,15 +187,45 @@
},
}
- if len(files) != len(expectedFilePaths) {
- t.Errorf("Expected %d file, got %d", len(expectedFilePaths), len(files))
+ less := func(a bazelFilepath, b bazelFilepath) bool {
+ return a.dir+"/"+a.basename < b.dir+"/"+b.basename
}
- for i := range files {
- actualFile, expectedFile := files[i], expectedFilePaths[i]
+ fileToFilepath := func(a BazelFile) bazelFilepath {
+ return bazelFilepath{basename: a.Basename, dir: a.Dir}
+ }
- if actualFile.Dir != expectedFile.dir || actualFile.Basename != expectedFile.basename {
- t.Errorf("Did not find expected file %s/%s", actualFile.Dir, actualFile.Basename)
+ sort.Slice(expectedFilePaths, func(i, j int) bool {
+ return less(expectedFilePaths[i], expectedFilePaths[j])
+ })
+ sort.Slice(files, func(i, j int) bool {
+ return less(fileToFilepath(files[i]), fileToFilepath(files[j]))
+ })
+
+ i := 0
+ j := 0
+ for i < len(expectedFilePaths) && j < len(files) {
+ expectedFile, actualFile := expectedFilePaths[i], files[j]
+
+ if actualFile.Dir == expectedFile.dir && actualFile.Basename == expectedFile.basename {
+ i++
+ j++
+ } else if less(expectedFile, fileToFilepath(actualFile)) {
+ t.Errorf("Did not find expected file %s/%s", expectedFile.dir, expectedFile.basename)
+ i++
+ } else {
+ t.Errorf("Found unexpected file %s/%s", actualFile.Dir, actualFile.Basename)
+ j++
}
}
+ for i < len(expectedFilePaths) {
+ expectedFile := expectedFilePaths[i]
+ t.Errorf("Did not find expected file %s/%s", expectedFile.dir, expectedFile.basename)
+ i++
+ }
+ for j < len(files) {
+ actualFile := files[j]
+ t.Errorf("Found unexpected file %s/%s", actualFile.Dir, actualFile.Basename)
+ j++
+ }
}