Skip to content

Commit

Permalink
fix(filter): dependencies filter should match transitive deps
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-olszewski committed Apr 2, 2024
1 parent 8a76bf4 commit fd713c2
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions crates/turborepo-lib/src/run/scope/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -281,10 +281,10 @@ impl<'a, T: GitChangeDetector> FilterResolver<'a, T> {
let node = package_graph::PackageNode::Workspace(package.clone());

if selector.include_dependencies {
let dependencies = self.pkg_graph.immediate_dependencies(&node);
let dependencies = self.pkg_graph.dependencies(&node);
let dependencies = dependencies
.iter()
.flatten()
.filter(|node| !matches!(node, package_graph::PackageNode::Root))
.map(|i| i.as_package_name().to_owned())
.collect::<Vec<_>>();

Expand All @@ -303,11 +303,11 @@ impl<'a, T: GitChangeDetector> FilterResolver<'a, T> {
package_graph::PackageNode::Workspace(dependent.to_owned());

let dependent_dependencies =
self.pkg_graph.immediate_dependencies(&dependent_node);
self.pkg_graph.dependencies(&dependent_node);

let dependent_dependencies = dependent_dependencies
.iter()
.flatten()
.filter(|node| !matches!(node, package_graph::PackageNode::Root))
.map(|i| i.as_package_name().to_owned())
.collect::<HashSet<_>>();

Expand Down Expand Up @@ -401,7 +401,7 @@ impl<'a, T: GitChangeDetector> FilterResolver<'a, T> {
}

let workspace_node = package_graph::PackageNode::Workspace(package.clone());
let dependencies = self.pkg_graph.immediate_dependencies(&workspace_node);
let dependencies = self.pkg_graph.dependencies(&workspace_node);

for changed_package in &changed_packages {
if !selector.exclude_self && package.eq(changed_package) {
Expand All @@ -412,11 +412,7 @@ impl<'a, T: GitChangeDetector> FilterResolver<'a, T> {
let changed_node =
package_graph::PackageNode::Workspace(changed_package.to_owned());

if dependencies
.as_ref()
.map(|d| d.contains(&changed_node))
.unwrap_or_default()
{
if dependencies.contains(&changed_node) {
roots.insert(package.clone());
matched.insert(package);
break;
Expand Down Expand Up @@ -779,6 +775,19 @@ mod test {
&["project-1", "project-2", "project-4"] ;
"select package with dependencies"
)]
#[test_case(
vec![
TargetSelector {
exclude_self: false,
include_dependencies: true,
name_pattern: "project-0".to_string(),
..Default::default()
}
],
None,
&["project-0", "project-1", "project-2", "project-4", "project-5"] ;
"select package with transitive dependencies"
)]
#[test_case(
vec![
TargetSelector {
Expand Down

0 comments on commit fd713c2

Please sign in to comment.