@@ -4,7 +4,7 @@ use pubgrub::error::PubGrubError;
44use pubgrub:: range:: Range ;
55use pubgrub:: report:: { DefaultStringReporter , Reporter as _} ;
66use pubgrub:: solver:: { resolve, OfflineDependencyProvider } ;
7- use pubgrub:: type_aliases:: Map ;
7+ use pubgrub:: type_aliases:: { Map , Set } ;
88use pubgrub:: version:: SemanticVersion ;
99
1010type NumVS = Range < u32 > ;
@@ -217,13 +217,20 @@ fn confusing_with_lots_of_holes() {
217217 let mut dependency_provider = OfflineDependencyProvider :: < & str , NumVS > :: new ( ) ;
218218
219219 // root depends on foo...
220- dependency_provider. add_dependencies ( "root" , 1u32 , vec ! [ ( "foo" , Range :: full( ) ) ] ) ;
220+ dependency_provider. add_dependencies (
221+ "root" ,
222+ 1u32 ,
223+ vec ! [ ( "foo" , Range :: full( ) ) , ( "baz" , Range :: full( ) ) ] ,
224+ ) ;
221225
222226 for i in 1 ..6 {
223227 // foo depends on bar...
224228 dependency_provider. add_dependencies ( "foo" , i as u32 , vec ! [ ( "bar" , Range :: full( ) ) ] ) ;
225229 }
226230
231+ // This package is part of the dependency tree, but it's not part of the conflict
232+ dependency_provider. add_dependencies ( "baz" , 1u32 , vec ! [ ] ) ;
233+
227234 let Err ( PubGrubError :: NoSolution ( mut derivation_tree) ) =
228235 resolve ( & dependency_provider, "root" , 1u32 )
229236 else {
@@ -239,4 +246,9 @@ And because there is no version of foo in <1 | >1, <2 | >2, <3 | >3, <4 | >4, <5
239246 & DefaultStringReporter :: report( & derivation_tree) ,
240247 "Because foo depends on bar and root 1 depends on foo, root 1 is forbidden."
241248 ) ;
249+ assert_eq ! (
250+ derivation_tree. packages( ) ,
251+ // baz isn't shown.
252+ Set :: from_iter( & [ "root" , "foo" , "bar" ] )
253+ ) ;
242254}
0 commit comments