@@ -4,7 +4,7 @@ use pubgrub::error::PubGrubError;
4
4
use pubgrub:: range:: Range ;
5
5
use pubgrub:: report:: { DefaultStringReporter , Reporter as _} ;
6
6
use pubgrub:: solver:: { resolve, OfflineDependencyProvider } ;
7
- use pubgrub:: type_aliases:: Map ;
7
+ use pubgrub:: type_aliases:: { Map , Set } ;
8
8
use pubgrub:: version:: SemanticVersion ;
9
9
10
10
type NumVS = Range < u32 > ;
@@ -217,13 +217,20 @@ fn confusing_with_lots_of_holes() {
217
217
let mut dependency_provider = OfflineDependencyProvider :: < & str , NumVS > :: new ( ) ;
218
218
219
219
// 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
+ ) ;
221
225
222
226
for i in 1 ..6 {
223
227
// foo depends on bar...
224
228
dependency_provider. add_dependencies ( "foo" , i as u32 , vec ! [ ( "bar" , Range :: full( ) ) ] ) ;
225
229
}
226
230
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
+
227
234
let Err ( PubGrubError :: NoSolution ( mut derivation_tree) ) =
228
235
resolve ( & dependency_provider, "root" , 1u32 )
229
236
else {
@@ -239,4 +246,9 @@ And because there is no version of foo in <1 | >1, <2 | >2, <3 | >3, <4 | >4, <5
239
246
& DefaultStringReporter :: report( & derivation_tree) ,
240
247
"Because foo depends on bar and root 1 depends on foo, root 1 is forbidden."
241
248
) ;
249
+ assert_eq ! (
250
+ derivation_tree. packages( ) ,
251
+ // baz isn't shown.
252
+ Set :: from_iter( & [ "root" , "foo" , "bar" ] )
253
+ ) ;
242
254
}
0 commit comments