diff --git a/src/session.rs b/src/session.rs index 08c993b..5da44aa 100644 --- a/src/session.rs +++ b/src/session.rs @@ -495,7 +495,9 @@ impl Session { target: resolved.label, found_in_graph: resolved.exists, chain_count: chains.len(), - direct_import: cuts.is_empty() && chains.iter().all(|c| c.len() == 2), + direct_import: !chains.is_empty() + && cuts.is_empty() + && chains.iter().all(|c| c.len() == 2), cut_points: cuts .iter() .map(|c| CutEntry { @@ -1002,6 +1004,16 @@ mod tests { assert!(report.cut_points.is_empty()); } + #[test] + fn cut_report_nonexistent_target() { + let (_tmp, entry) = test_project(); + let mut session = Session::open(&entry, true).unwrap(); + let report = session.cut_report("nonexistent-pkg", 10, false); + assert!(!report.found_in_graph); + assert_eq!(report.chain_count, 0); + assert!(!report.direct_import); + } + #[test] fn packages_report_empty_for_first_party() { let (_tmp, entry) = test_project();