@@ -569,10 +569,10 @@ fn assert_all_clean(build_dir: &Path) {
569
569
}
570
570
571
571
#[ cargo_test]
572
- fn clean_spec_multiple ( ) {
572
+ fn clean_spec_version ( ) {
573
573
// clean -p foo where foo matches multiple versions
574
- Package :: new ( "bar" , "1.0 .0" ) . publish ( ) ;
575
- Package :: new ( "bar" , "2.0 .0" ) . publish ( ) ;
574
+ Package :: new ( "bar" , "0.1 .0" ) . publish ( ) ;
575
+ Package :: new ( "bar" , "0.2 .0" ) . publish ( ) ;
576
576
577
577
let p = project ( )
578
578
. file (
@@ -583,8 +583,8 @@ fn clean_spec_multiple() {
583
583
version = "0.1.0"
584
584
585
585
[dependencies]
586
- bar1 = {version="1.0 ", package="bar"}
587
- bar2 = {version="2.0 ", package="bar"}
586
+ bar1 = {version="0.1 ", package="bar"}
587
+ bar2 = {version="0.2 ", package="bar"}
588
588
"# ,
589
589
)
590
590
. file ( "src/lib.rs" , "" )
@@ -604,9 +604,9 @@ error: package ID specification `baz` did not match any packages
604
604
)
605
605
. run ( ) ;
606
606
607
- p. cargo ( "clean -p bar:1.0 .0" )
607
+ p. cargo ( "clean -p bar:0.1 .0" )
608
608
. with_stderr (
609
- "warning: version qualifier in `-p bar:1.0 .0` is ignored, \
609
+ "warning: version qualifier in `-p bar:0.1 .0` is ignored, \
610
610
cleaning all versions of `bar` found",
611
611
)
612
612
. run ( ) ;
@@ -622,6 +622,98 @@ error: package ID specification `baz` did not match any packages
622
622
}
623
623
}
624
624
625
+ #[ cargo_test]
626
+ fn clean_spec_partial_version ( ) {
627
+ // clean -p foo where foo matches multiple versions
628
+ Package :: new ( "bar" , "0.1.0" ) . publish ( ) ;
629
+ Package :: new ( "bar" , "0.2.0" ) . publish ( ) ;
630
+
631
+ let p = project ( )
632
+ . file (
633
+ "Cargo.toml" ,
634
+ r#"
635
+ [package]
636
+ name = "foo"
637
+ version = "0.1.0"
638
+
639
+ [dependencies]
640
+ bar1 = {version="0.1", package="bar"}
641
+ bar2 = {version="0.2", package="bar"}
642
+ "# ,
643
+ )
644
+ . file ( "src/lib.rs" , "" )
645
+ . build ( ) ;
646
+
647
+ p. cargo ( "build" ) . run ( ) ;
648
+
649
+ // Check suggestion for bad pkgid.
650
+ p. cargo ( "clean -p baz" )
651
+ . with_status ( 101 )
652
+ . with_stderr (
653
+ "\
654
+ error: package ID specification `baz` did not match any packages
655
+
656
+ <tab>Did you mean `bar`?
657
+ " ,
658
+ )
659
+ . run ( ) ;
660
+
661
+ p. cargo ( "clean -p bar:0.1" )
662
+ . with_status ( 101 )
663
+ . with_stderr (
664
+ "\
665
+ error: cannot parse '0.1' as a SemVer version
666
+ " ,
667
+ )
668
+ . run ( ) ;
669
+ }
670
+
671
+ #[ cargo_test]
672
+ fn clean_spec_partial_version_ambiguous ( ) {
673
+ // clean -p foo where foo matches multiple versions
674
+ Package :: new ( "bar" , "0.1.0" ) . publish ( ) ;
675
+ Package :: new ( "bar" , "0.2.0" ) . publish ( ) ;
676
+
677
+ let p = project ( )
678
+ . file (
679
+ "Cargo.toml" ,
680
+ r#"
681
+ [package]
682
+ name = "foo"
683
+ version = "0.1.0"
684
+
685
+ [dependencies]
686
+ bar1 = {version="0.1", package="bar"}
687
+ bar2 = {version="0.2", package="bar"}
688
+ "# ,
689
+ )
690
+ . file ( "src/lib.rs" , "" )
691
+ . build ( ) ;
692
+
693
+ p. cargo ( "build" ) . run ( ) ;
694
+
695
+ // Check suggestion for bad pkgid.
696
+ p. cargo ( "clean -p baz" )
697
+ . with_status ( 101 )
698
+ . with_stderr (
699
+ "\
700
+ error: package ID specification `baz` did not match any packages
701
+
702
+ <tab>Did you mean `bar`?
703
+ " ,
704
+ )
705
+ . run ( ) ;
706
+
707
+ p. cargo ( "clean -p bar:0" )
708
+ . with_status ( 101 )
709
+ . with_stderr (
710
+ "\
711
+ error: cannot parse '0' as a SemVer version
712
+ " ,
713
+ )
714
+ . run ( ) ;
715
+ }
716
+
625
717
#[ cargo_test]
626
718
fn clean_spec_reserved ( ) {
627
719
// Clean when a target (like a test) has a reserved name. In this case,
0 commit comments