1 //! Tests for renaming dependencies.
3 use cargo_test_support
::git
;
4 use cargo_test_support
::paths
;
5 use cargo_test_support
::registry
::{self, Package}
;
6 use cargo_test_support
::{basic_manifest, project}
;
9 fn rename_dependency() {
10 Package
::new("bar", "0.1.0").publish();
11 Package
::new("bar", "0.2.0").publish();
23 bar = { version = "0.1.0" }
24 baz = { version = "0.2.0", package = "bar" }
27 .file("src/lib.rs", "extern crate bar; extern crate baz;")
30 p
.cargo("build").run();
34 fn rename_with_different_names() {
45 baz = { path = "bar", package = "bar" }
48 .file("src/lib.rs", "extern crate baz;")
61 .file("bar/src/lib.rs", "")
64 p
.cargo("build").run();
70 Package
::new("foo", "0.1.0")
71 .file("src/lib.rs", "pub fn foo1() {}")
73 Package
::new("foo", "0.2.0")
74 .file("src/lib.rs", "pub fn foo() {}")
76 Package
::new("foo", "0.1.0")
77 .file("src/lib.rs", "pub fn foo2() {}")
81 let g
= git
::repo(&paths
::root().join("another"))
82 .file("Cargo.toml", &basic_manifest("foo", "0.1.0"))
83 .file("src/lib.rs", "pub fn foo3() {}")
98 foo1 = {{ version = "0.1", package = "foo" }}
99 foo2 = {{ version = "0.1", registry = "alternative", package = "foo" }}
100 foo3 = {{ git = '{}', package = "foo" }}
101 foo4 = {{ path = "foo", package = "foo" }}
124 .file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
125 .file("foo/src/lib.rs", "pub fn foo4() {}")
128 p
.cargo("build -v").run();
132 fn rename_and_patch() {
133 Package
::new("foo", "0.1.0").publish();
145 bar = { version = "0.1", package = "foo" }
148 foo = { path = "foo" }
153 "extern crate bar; pub fn foo() { bar::foo(); }",
155 .file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
156 .file("foo/src/lib.rs", "pub fn foo() {}")
159 p
.cargo("build -v").run();
164 Package
::new("foo", "0.1.0").publish();
176 bar = { version = "0.1", package = "foo" }
178 foo = { version = "0.1" }
181 .file("src/lib.rs", "")
188 [UPDATING] `[..]` index
189 [DOWNLOADING] crates ...
190 [DOWNLOADED] foo v0.1.0 (registry [..])
191 error: the crate `test v0.1.0 ([CWD])` depends on crate `foo v0.1.0` multiple times with different names
198 fn rename_affects_fingerprint() {
199 Package
::new("foo", "0.1.0").publish();
211 foo = { version = "0.1", package = "foo" }
214 .file("src/lib.rs", "extern crate foo;")
217 p
.cargo("build -v").run();
228 bar = { version = "0.1", package = "foo" }
234 .with_stderr_contains("[..]can't find crate for `foo`")
239 fn can_run_doc_tests() {
240 Package
::new("bar", "0.1.0").publish();
241 Package
::new("bar", "0.2.0").publish();
252 bar = { version = "0.1.0" }
253 baz = { version = "0.2.0", package = "bar" }
266 .with_stderr_contains(
269 [RUNNING] `rustdoc [..]--test [..]src/lib.rs \
271 --extern bar=[CWD]/target/debug/deps/libbar-[..].rlib \
272 --extern baz=[CWD]/target/debug/deps/libbar-[..].rlib \
280 fn features_still_work() {
281 Package
::new("foo", "0.1.0").publish();
282 Package
::new("bar", "0.1.0").publish();
294 p1 = { path = 'a', features = ['b'] }
298 .file("src/lib.rs", "")
308 b = { version = "0.1", package = "foo", optional = true }
311 .file("a/src/lib.rs", "extern crate b;")
321 b = { version = "0.1", package = "bar", optional = true }
327 .file("b/src/lib.rs", "extern crate b;")
330 p
.cargo("build -v").run();
334 fn features_not_working() {
335 Package
::new("foo", "0.1.0").publish();
336 Package
::new("bar", "0.1.0").publish();
348 a = { path = 'a', package = 'p1', optional = true }
354 .file("src/lib.rs", "")
355 .file("a/Cargo.toml", &basic_manifest("p1", "0.1.0"))
362 error: failed to parse manifest at `[..]`
365 feature `default` includes `p1` which is neither a dependency nor another feature
372 fn rename_with_dash() {
382 foo-bar = { path = 'a', package = 'a' }
385 .file("src/lib.rs", "extern crate foo_bar;")
386 .file("a/Cargo.toml", &basic_manifest("a", "0.1.0"))
387 .file("a/src/lib.rs", "")
390 p
.cargo("build").run();