Skip to content

Commit 9008647

Browse files
committed
test(clean): Verify spec version parsing
1 parent 3962982 commit 9008647

File tree

1 file changed

+99
-7
lines changed

1 file changed

+99
-7
lines changed

tests/testsuite/clean.rs

Lines changed: 99 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -569,10 +569,10 @@ fn assert_all_clean(build_dir: &Path) {
569569
}
570570

571571
#[cargo_test]
572-
fn clean_spec_multiple() {
572+
fn clean_spec_version() {
573573
// 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();
576576

577577
let p = project()
578578
.file(
@@ -583,8 +583,8 @@ fn clean_spec_multiple() {
583583
version = "0.1.0"
584584
585585
[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"}
588588
"#,
589589
)
590590
.file("src/lib.rs", "")
@@ -604,9 +604,9 @@ error: package ID specification `baz` did not match any packages
604604
)
605605
.run();
606606

607-
p.cargo("clean -p bar:1.0.0")
607+
p.cargo("clean -p bar:0.1.0")
608608
.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, \
610610
cleaning all versions of `bar` found",
611611
)
612612
.run();
@@ -622,6 +622,98 @@ error: package ID specification `baz` did not match any packages
622622
}
623623
}
624624

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+
625717
#[cargo_test]
626718
fn clean_spec_reserved() {
627719
// Clean when a target (like a test) has a reserved name. In this case,

0 commit comments

Comments
 (0)