find bazel-related files and add them to bazel.list and ninja deps
This retriggers soong_build whenever a new bzl, WORKSPACE, or BUILD.bazel file is changed or added. Test: Manually verified on bionic/libc genrules with manual changes to related BUILD/bzl/WORKSPACE files -- these all retrigger builds. Test: Updated finder_test.go Change-Id: I634384f88781a6b6db32f5d6bf9c07e179e14c39
This commit is contained in:
@@ -103,6 +103,9 @@ type CacheParams struct {
|
||||
|
||||
// IncludeFiles are file names to include as matches
|
||||
IncludeFiles []string
|
||||
|
||||
// IncludeSuffixes are filename suffixes to include as matches.
|
||||
IncludeSuffixes []string
|
||||
}
|
||||
|
||||
// a cacheConfig stores the inputs that determine what should be included in the cache
|
||||
@@ -1310,6 +1313,20 @@ func (f *Finder) statDirSync(path string) statResponse {
|
||||
return stats
|
||||
}
|
||||
|
||||
func (f *Finder) shouldIncludeFile(fileName string) bool {
|
||||
for _, includedName := range f.cacheMetadata.Config.IncludeFiles {
|
||||
if fileName == includedName {
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, includeSuffix := range f.cacheMetadata.Config.IncludeSuffixes {
|
||||
if strings.HasSuffix(fileName, includeSuffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// pruneCacheCandidates removes the items that we don't want to include in our persistent cache
|
||||
func (f *Finder) pruneCacheCandidates(items *DirEntries) {
|
||||
|
||||
@@ -1326,13 +1343,9 @@ func (f *Finder) pruneCacheCandidates(items *DirEntries) {
|
||||
// remove any files that aren't the ones we want to include
|
||||
writeIndex := 0
|
||||
for _, fileName := range items.FileNames {
|
||||
// include only these files
|
||||
for _, includedName := range f.cacheMetadata.Config.IncludeFiles {
|
||||
if fileName == includedName {
|
||||
items.FileNames[writeIndex] = fileName
|
||||
writeIndex++
|
||||
break
|
||||
}
|
||||
if f.shouldIncludeFile(fileName) {
|
||||
items.FileNames[writeIndex] = fileName
|
||||
writeIndex++
|
||||
}
|
||||
}
|
||||
// resize
|
||||
|
@@ -21,6 +21,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"android/soong/finder/fs"
|
||||
@@ -92,6 +93,7 @@ func runSimpleTest(t *testing.T, existentPaths []string, expectedMatches []strin
|
||||
nil,
|
||||
nil,
|
||||
[]string{"findme.txt", "skipme.txt"},
|
||||
nil,
|
||||
},
|
||||
)
|
||||
defer finder.Shutdown()
|
||||
@@ -104,6 +106,46 @@ func runSimpleTest(t *testing.T, existentPaths []string, expectedMatches []strin
|
||||
fs.AssertSameResponse(t, foundPaths, absoluteMatches)
|
||||
}
|
||||
|
||||
// runTestWithSuffixes creates a few files, searches for findme.txt or any file
|
||||
// with suffix `.findme_ext` and checks for the expected matches
|
||||
func runTestWithSuffixes(t *testing.T, existentPaths []string, expectedMatches []string) {
|
||||
filesystem := newFs()
|
||||
root := "/tmp"
|
||||
filesystem.MkDirs(root)
|
||||
for _, path := range existentPaths {
|
||||
fs.Create(t, filepath.Join(root, path), filesystem)
|
||||
}
|
||||
|
||||
finder := newFinder(t,
|
||||
filesystem,
|
||||
CacheParams{
|
||||
"/cwd",
|
||||
[]string{root},
|
||||
nil,
|
||||
nil,
|
||||
[]string{"findme.txt", "skipme.txt"},
|
||||
[]string{".findme_ext"},
|
||||
},
|
||||
)
|
||||
defer finder.Shutdown()
|
||||
|
||||
foundPaths := finder.FindMatching(root,
|
||||
func(entries DirEntries) (dirs []string, files []string) {
|
||||
matches := []string{}
|
||||
for _, foundName := range entries.FileNames {
|
||||
if foundName == "findme.txt" || strings.HasSuffix(foundName, ".findme_ext") {
|
||||
matches = append(matches, foundName)
|
||||
}
|
||||
}
|
||||
return entries.DirNames, matches
|
||||
})
|
||||
absoluteMatches := []string{}
|
||||
for i := range expectedMatches {
|
||||
absoluteMatches = append(absoluteMatches, filepath.Join(root, expectedMatches[i]))
|
||||
}
|
||||
fs.AssertSameResponse(t, foundPaths, absoluteMatches)
|
||||
}
|
||||
|
||||
// testAgainstSeveralThreadcounts runs the given test for each threadcount that we care to test
|
||||
func testAgainstSeveralThreadcounts(t *testing.T, tester func(t *testing.T, numThreads int)) {
|
||||
// test singlethreaded, multithreaded, and also using the same number of threads as
|
||||
@@ -135,6 +177,13 @@ func TestIncludeFiles(t *testing.T) {
|
||||
)
|
||||
}
|
||||
|
||||
func TestIncludeFilesAndSuffixes(t *testing.T) {
|
||||
runTestWithSuffixes(t,
|
||||
[]string{"findme.txt", "skipme.txt", "alsome.findme_ext"},
|
||||
[]string{"findme.txt", "alsome.findme_ext"},
|
||||
)
|
||||
}
|
||||
|
||||
func TestNestedDirectories(t *testing.T) {
|
||||
runSimpleTest(t,
|
||||
[]string{"findme.txt", "skipme.txt", "subdir/findme.txt", "subdir/skipme.txt"},
|
||||
@@ -142,6 +191,13 @@ func TestNestedDirectories(t *testing.T) {
|
||||
)
|
||||
}
|
||||
|
||||
func TestNestedDirectoriesWithSuffixes(t *testing.T) {
|
||||
runTestWithSuffixes(t,
|
||||
[]string{"findme.txt", "skipme.txt", "subdir/findme.txt", "subdir/skipme.txt", "subdir/alsome.findme_ext"},
|
||||
[]string{"findme.txt", "subdir/findme.txt", "subdir/alsome.findme_ext"},
|
||||
)
|
||||
}
|
||||
|
||||
func TestEmptyDirectory(t *testing.T) {
|
||||
runSimpleTest(t,
|
||||
[]string{},
|
||||
|
Reference in New Issue
Block a user