Skip to content

Commit 28a33de

Browse files
committed
test(resolver): Additional direct minimal version tests
1 parent 8728cca commit 28a33de

File tree

1 file changed

+168
-1
lines changed

1 file changed

+168
-1
lines changed

tests/testsuite/direct_minimal_versions.rs

+168-1
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,172 @@ fn minimal_version_cli() {
3434

3535
let lock = p.read_lockfile();
3636

37-
assert!(!lock.contains("1.1.0"));
37+
assert!(
38+
lock.contains("1.0.0"),
39+
"dep minimal version must be present"
40+
);
41+
assert!(
42+
!lock.contains("1.1.0"),
43+
"dep maximimal version cannot be present"
44+
);
45+
}
46+
47+
#[cargo_test]
48+
fn yanked() {
49+
Package::new("dep", "1.0.0").yanked(true).publish();
50+
Package::new("dep", "1.1.0").publish();
51+
Package::new("dep", "1.2.0").publish();
52+
53+
let p = project()
54+
.file(
55+
"Cargo.toml",
56+
r#"
57+
[package]
58+
name = "foo"
59+
authors = []
60+
version = "0.0.1"
61+
62+
[dependencies]
63+
dep = "1.0"
64+
"#,
65+
)
66+
.file("src/main.rs", "fn main() {}")
67+
.build();
68+
69+
p.cargo("generate-lockfile -Zminimal-versions")
70+
.masquerade_as_nightly_cargo(&["minimal-versions"])
71+
.run();
72+
73+
let lock = p.read_lockfile();
74+
75+
assert!(
76+
lock.contains("1.1.0"),
77+
"dep minimal version must be present"
78+
);
79+
assert!(
80+
!lock.contains("1.0.0"),
81+
"yanked minimal version must be skipped"
82+
);
83+
assert!(
84+
!lock.contains("1.2.0"),
85+
"dep maximimal version cannot be present"
86+
);
87+
}
88+
89+
#[cargo_test]
90+
fn indirect() {
91+
Package::new("indirect", "2.0.0").publish();
92+
Package::new("indirect", "2.1.0").publish();
93+
Package::new("indirect", "2.2.0").publish();
94+
Package::new("direct", "1.0.0")
95+
.dep("indirect", "2.1")
96+
.publish();
97+
Package::new("direct", "1.1.0")
98+
.dep("indirect", "2.1")
99+
.publish();
100+
101+
let p = project()
102+
.file(
103+
"Cargo.toml",
104+
r#"
105+
[package]
106+
name = "foo"
107+
authors = []
108+
version = "0.0.1"
109+
110+
[dependencies]
111+
direct = "1.0"
112+
"#,
113+
)
114+
.file("src/main.rs", "fn main() {}")
115+
.build();
116+
117+
p.cargo("generate-lockfile -Zminimal-versions")
118+
.masquerade_as_nightly_cargo(&["minimal-versions"])
119+
.run();
120+
121+
let lock = p.read_lockfile();
122+
123+
assert!(
124+
lock.contains("1.0.0"),
125+
"direct minimal version must be present"
126+
);
127+
assert!(
128+
!lock.contains("1.1.0"),
129+
"direct maximimal version cannot be present"
130+
);
131+
assert!(
132+
!lock.contains("2.0.0"),
133+
"indirect unmatched version cannot be present"
134+
);
135+
assert!(
136+
lock.contains("2.1.0"),
137+
"indirect minimal version must be present"
138+
);
139+
assert!(
140+
!lock.contains("2.2.0"),
141+
"indirect maximimal version cannot be present"
142+
);
143+
}
144+
145+
#[cargo_test]
146+
fn indirect_conflict() {
147+
Package::new("indirect", "2.0.0").publish();
148+
Package::new("indirect", "2.1.0").publish();
149+
Package::new("indirect", "2.2.0").publish();
150+
Package::new("direct", "1.0.0")
151+
.dep("indirect", "2.1")
152+
.publish();
153+
Package::new("direct", "1.1.0")
154+
.dep("indirect", "2.1")
155+
.publish();
156+
157+
let p = project()
158+
.file(
159+
"Cargo.toml",
160+
r#"
161+
[package]
162+
name = "foo"
163+
authors = []
164+
version = "0.0.1"
165+
166+
[dependencies]
167+
direct = "1.0"
168+
indirect = "2.0"
169+
"#,
170+
)
171+
.file("src/main.rs", "fn main() {}")
172+
.build();
173+
174+
p.cargo("generate-lockfile -Zminimal-versions")
175+
.masquerade_as_nightly_cargo(&["minimal-versions"])
176+
.with_stderr(
177+
"\
178+
[UPDATING] [..]
179+
",
180+
)
181+
.run();
182+
183+
let lock = p.read_lockfile();
184+
185+
assert!(
186+
lock.contains("1.0.0"),
187+
"direct minimal version must be present"
188+
);
189+
assert!(
190+
!lock.contains("1.1.0"),
191+
"direct maximimal version cannot be present"
192+
);
193+
assert!(
194+
!lock.contains("2.0.0"),
195+
"indirect unmatched version cannot be present"
196+
);
197+
assert!(
198+
lock.contains("2.1.0"),
199+
"indirect minimal version must be present"
200+
);
201+
assert!(
202+
!lock.contains("2.2.0"),
203+
"indirect maximimal version cannot be present"
204+
);
38205
}

0 commit comments

Comments
 (0)