Skip to content

Commit

Permalink
Select everything if only an exclude is specified
Browse files Browse the repository at this point in the history
  • Loading branch information
Greg Soltis committed Mar 15, 2022
1 parent 3e421cc commit 080b9ba
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 4 deletions.
18 changes: 15 additions & 3 deletions cli/internal/scope/filter/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,21 @@ func (r *Resolver) filterGraph(selectors []*TargetSelector) (*SelectedPackages,
includeSelectors = append(includeSelectors, selector)
}
}
include, err := r.filterGraphWithSelectors(includeSelectors)
if err != nil {
return nil, err
var include *SelectedPackages
if len(includeSelectors) > 0 {
found, err := r.filterGraphWithSelectors(includeSelectors)
if err != nil {
return nil, err
}
include = found
} else {
vertexSet := make(util.Set)
for _, v := range r.Graph.Vertices() {
vertexSet.Add(v)
}
include = &SelectedPackages{
pkgs: vertexSet,
}
}
exclude, err := r.filterGraphWithSelectors(excludeSelectors)
if err != nil {
Expand Down
29 changes: 28 additions & 1 deletion cli/internal/scope/filter/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ func Test_filter(t *testing.T) {
},
[]string{"project-2"},
},
// Note: we don't support the option to switch path prefix mode
// Note: we don't support the option to switch path prefix mode
// {
// "select by parentDir",
// []*TargetSelector{
Expand Down Expand Up @@ -219,6 +219,16 @@ func Test_filter(t *testing.T) {
},
[]string{"project-5"},
},
{
"select all packages except one",
[]*TargetSelector{
{
exclude: true,
namePattern: "project-1",
},
},
[]string{"project-0", "project-2", "project-3", "project-4", "project-5", "project-6"},
},
}

for _, tc := range testCases {
Expand All @@ -228,6 +238,23 @@ func Test_filter(t *testing.T) {
}
setMatches(t, tc.Name, pkgs.pkgs, tc.Expected)
}

pkgs, err := r.GetFilteredPackages([]*TargetSelector{
{
excludeSelf: true,
includeDependencies: true,
namePattern: "project-7",
},
})
if err != nil {
t.Fatalf("unmatched filter failed to filter packages: %v", err)
}
if pkgs.pkgs.Len() != 0 {
t.Errorf("unmatched filter expected no packages, got %v", strings.Join(pkgs.pkgs.UnsafeListOfStrings(), ", "))
}
if len(pkgs.unusedFilters) != 1 {
t.Errorf("unmatched filter expected to report one unused filter, got %v", len(pkgs.unusedFilters))
}
}

func Test_matchScopedPackage(t *testing.T) {
Expand Down

0 comments on commit 080b9ba

Please sign in to comment.