@@ -529,6 +529,50 @@ fn test_wildcard_major_coerced_by_subdepdency() {
529529    ) ; 
530530} 
531531
532+ #[ test]  
533+ fn  test_wildcard_major_coerced_by_indirect_subdepdency ( )  { 
534+     let  reg = registry ( vec ! [ 
535+         pkg!( "foo"  => [ dep_req( "util" ,  "0.1" ) ] ) , 
536+         pkg!( "bar"  => [ dep_req( "car" ,  "1.0.0" ) ] ) , 
537+         pkg!( "car"  => [ dep_req( "util" ,  "0.2" ) ] ) , 
538+         pkg!( ( "util" ,  "0.1.0" ) ) , 
539+         pkg!( ( "util" ,  "0.2.0" ) ) , 
540+         pkg!( ( "util" ,  "0.3.0" ) ) , 
541+     ] ) ; 
542+ 
543+     let  res = resolve_with_global_context_raw ( 
544+         vec ! [ 
545+             dep_req( "foo" ,  "1.0.0" ) , 
546+             dep_req( "bar" ,  "1.0.0" ) , 
547+             dep_req( "util" ,  "0.*" ) , 
548+         ] , 
549+         & reg, 
550+         & GlobalContext :: default ( ) . unwrap ( ) , 
551+     ) 
552+     . unwrap ( ) ; 
553+ 
554+     // In this case, 0.1.0, 0.2.0 and 0.3.0 satisfy root. It should pick the highest 
555+     // version that exists in the dependency tree. 
556+     assert_eq ! ( 
557+         res. deps( pkg_id( "root" ) ) . skip( 2 ) . next( ) . unwrap( ) . 0 , 
558+         ( "util" ,  "0.2.0" ) . to_pkgid( ) 
559+     ) ; 
560+ 
561+     let  res = res. sort ( ) ; 
562+ 
563+     assert_same ( 
564+         & res, 
565+         & names ( & [ 
566+             ( "root" ,  "1.0.0" ) , 
567+             ( "foo" ,  "1.0.0" ) , 
568+             ( "bar" ,  "1.0.0" ) , 
569+             ( "car" ,  "1.0.0" ) , 
570+             ( "util" ,  "0.1.0" ) , 
571+             ( "util" ,  "0.2.0" ) , 
572+         ] ) , 
573+     ) ; 
574+ } 
575+ 
532576#[ test]  
533577fn  test_range_major ( )  { 
534578    let  reg = registry ( vec ! [ 
0 commit comments