Merge pull request #39 from golangci/feature/skip-dirs-without-go-files-early
skip dirs without go files early: improve logs and save time
This commit is contained in:
commit
0eb6aa7c59
@ -184,5 +184,21 @@ func (pr PathResolver) Resolve(paths ...string) (*PathResolveResult, error) {
|
|||||||
state.addFile(path)
|
state.addFile(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state.excludeDirsWithoutGoFiles()
|
||||||
|
|
||||||
return state.toResult(), nil
|
return state.toResult(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *pathResolveState) excludeDirsWithoutGoFiles() {
|
||||||
|
dirToFiles := map[string]bool{}
|
||||||
|
for f := range s.files {
|
||||||
|
dir := filepath.Dir(f)
|
||||||
|
dirToFiles[dir] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
for dir := range s.dirs {
|
||||||
|
if !dirToFiles[dir] { // no go files in this dir
|
||||||
|
delete(s.dirs, dir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -84,30 +84,27 @@ func TestPathResolverCommonCases(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "empty root recursively",
|
name: "empty root recursively",
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "empty root",
|
name: "empty root",
|
||||||
resolve: []string{"./"},
|
resolve: []string{"./"},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "vendor is excluded recursively",
|
name: "vendor is excluded recursively",
|
||||||
prepare: []string{"vendor/a/"},
|
prepare: []string{"vendor/a/b.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "vendor is excluded",
|
name: "vendor is excluded",
|
||||||
prepare: []string{"vendor/"},
|
prepare: []string{"vendor/a.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "vendor implicitely resolved",
|
name: "vendor implicitely resolved",
|
||||||
prepare: []string{"vendor/"},
|
prepare: []string{"vendor/a.go"},
|
||||||
resolve: []string{"./vendor"},
|
resolve: []string{"./vendor"},
|
||||||
expDirs: []string{"vendor"},
|
expDirs: []string{"vendor"},
|
||||||
|
expFiles: []string{"vendor/a.go"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "extensions filter recursively",
|
name: "extensions filter recursively",
|
||||||
@ -125,7 +122,7 @@ func TestPathResolverCommonCases(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one level dirs exclusion",
|
name: "one level dirs exclusion",
|
||||||
prepare: []string{"a/b/", "a/c.go"},
|
prepare: []string{"a/b/d.go", "a/c.go"},
|
||||||
resolve: []string{"./a"},
|
resolve: []string{"./a"},
|
||||||
expDirs: []string{"a"},
|
expDirs: []string{"a"},
|
||||||
expFiles: []string{"a/c.go"},
|
expFiles: []string{"a/c.go"},
|
||||||
@ -138,28 +135,27 @@ func TestPathResolverCommonCases(t *testing.T) {
|
|||||||
expFiles: []string{"a/b/c.go", "a/d.txt"},
|
expFiles: []string{"a/b/c.go", "a/d.txt"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: ".* is always ignored",
|
name: ".* dotfiles are always ignored",
|
||||||
prepare: []string{".git/a.go", ".circleci/b.go"},
|
prepare: []string{".git/a.go", ".circleci/b.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "exclude dirs on any depth level",
|
name: "exclude dirs on any depth level",
|
||||||
prepare: []string{"ok/.git/a.go"},
|
prepare: []string{"ok/.git/a.go", "ok/b.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{".", "ok"},
|
expDirs: []string{"ok"},
|
||||||
|
expFiles: []string{"ok/b.go"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ignore _*",
|
name: "ignore _*",
|
||||||
prepare: []string{"_any/a.go"},
|
prepare: []string{"_any/a.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{"."},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "include tests",
|
name: "include tests",
|
||||||
prepare: []string{"a/b.go", "a/b_test.go"},
|
prepare: []string{"a/b.go", "a/b_test.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{".", "a"},
|
expDirs: []string{"a"},
|
||||||
expFiles: []string{"a/b.go", "a/b_test.go"},
|
expFiles: []string{"a/b.go", "a/b_test.go"},
|
||||||
includeTests: true,
|
includeTests: true,
|
||||||
},
|
},
|
||||||
@ -167,16 +163,30 @@ func TestPathResolverCommonCases(t *testing.T) {
|
|||||||
name: "exclude tests",
|
name: "exclude tests",
|
||||||
prepare: []string{"a/b.go", "a/b_test.go"},
|
prepare: []string{"a/b.go", "a/b_test.go"},
|
||||||
resolve: []string{"./..."},
|
resolve: []string{"./..."},
|
||||||
expDirs: []string{".", "a"},
|
expDirs: []string{"a"},
|
||||||
expFiles: []string{"a/b.go"},
|
expFiles: []string{"a/b.go"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "exclude tests except explicitly set",
|
name: "exclude tests except explicitly set",
|
||||||
prepare: []string{"a/b.go", "a/b_test.go", "a/c_test.go"},
|
prepare: []string{"a/b.go", "a/b_test.go", "a/c_test.go"},
|
||||||
resolve: []string{"./...", "a/c_test.go"},
|
resolve: []string{"./...", "a/c_test.go"},
|
||||||
expDirs: []string{".", "a"},
|
expDirs: []string{"a"},
|
||||||
expFiles: []string{"a/b.go", "a/c_test.go"},
|
expFiles: []string{"a/b.go", "a/c_test.go"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "exclude dirs with no go files",
|
||||||
|
prepare: []string{"a/b.txt", "a/c/d.go"},
|
||||||
|
resolve: []string{"./..."},
|
||||||
|
expDirs: []string{"a/c"},
|
||||||
|
expFiles: []string{"a/c/d.go"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "exclude dirs with no go files with root dir",
|
||||||
|
prepare: []string{"a/b.txt", "a/c/d.go", "e.go"},
|
||||||
|
resolve: []string{"./..."},
|
||||||
|
expDirs: []string{".", "a/c"},
|
||||||
|
expFiles: []string{"a/c/d.go", "e.go"},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user