diff --git a/cli/internal/scope/filter/filter.go b/cli/internal/scope/filter/filter.go index e9aa9561d5e64..57c791928bf4b 100644 --- a/cli/internal/scope/filter/filter.go +++ b/cli/internal/scope/filter/filter.go @@ -292,7 +292,11 @@ func (r *Resolver) filterSubtreesWithSelector(selector *TargetSelector) (util.Se return nil, err } for changedPkg := range changedPkgs { - if deps.Include(changedPkg) { + if !selector.excludeSelf && pkg == changedPkg { + roots.Add(pkg) + break + } + if deps.Include(changedPkg) { roots.Add(pkg) matched.Add(changedPkg) break diff --git a/cli/internal/scope/filter/filter_test.go b/cli/internal/scope/filter/filter_test.go index 96f955ad04a22..92cd84ac24f81 100644 --- a/cli/internal/scope/filter/filter_test.go +++ b/cli/internal/scope/filter/filter_test.go @@ -440,6 +440,19 @@ func Test_SCM(t *testing.T) { }, // Note: missing test here that takes advantage of automatically exempting // test-only changes from pulling in dependents + // + // turbo-specific tests below here + { + "changed package was requested scope, and we're matching dependencies", + []*TargetSelector{ + { + diff: "HEAD~1", + namePattern: "package-1", + matchDependencies: true, + }, + }, + []string{"package-1"}, + }, } for _, tc := range testCases {