2016-02-05 23:14:17 +00:00
|
|
|
use std::fs::{self, File};
|
|
|
|
use std::io::prelude::*;
|
|
|
|
|
2018-07-21 21:17:44 +00:00
|
|
|
use support::paths::{self, CargoPathExt};
|
|
|
|
use support::registry::Package;
|
2018-07-24 22:35:01 +00:00
|
|
|
use support::{basic_manifest, execs, project};
|
2018-07-21 21:17:44 +00:00
|
|
|
use support::hamcrest::assert_that;
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
fn setup() {
|
|
|
|
let root = paths::root();
|
|
|
|
t!(fs::create_dir(&root.join(".cargo")));
|
2018-03-14 15:17:44 +00:00
|
|
|
t!(t!(File::create(root.join(".cargo/config"))).write_all(
|
|
|
|
br#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[source.crates-io]
|
|
|
|
registry = 'https://wut'
|
|
|
|
replace-with = 'my-awesome-local-registry'
|
|
|
|
|
|
|
|
[source.my-awesome-local-registry]
|
|
|
|
local-registry = 'registry'
|
2018-03-14 15:17:44 +00:00
|
|
|
"#
|
|
|
|
));
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn simple() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = "0.0.1"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2018-07-25 00:30:32 +00:00
|
|
|
.file("src/lib.rs", "extern crate bar; pub fn foo() { bar::bar(); }")
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2018-07-20 17:41:44 +00:00
|
|
|
[UNPACKING] bar v0.0.1 ([..])
|
|
|
|
[COMPILING] bar v0.0.1
|
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-07-05 17:28:51 +00:00
|
|
|
[FINISHED] [..]
|
2016-02-05 23:14:17 +00:00
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr("[FINISHED] [..]"),
|
2018-03-14 15:17:44 +00:00
|
|
|
);
|
2018-08-02 10:29:39 +00:00
|
|
|
assert_that(p.cargo("test"), execs());
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn multiple_versions() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1").local(true).publish();
|
|
|
|
Package::new("bar", "0.1.0")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2018-07-25 00:30:32 +00:00
|
|
|
.file("src/lib.rs", "extern crate bar; pub fn foo() { bar::bar(); }")
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2018-07-20 17:41:44 +00:00
|
|
|
[UNPACKING] bar v0.1.0 ([..])
|
|
|
|
[COMPILING] bar v0.1.0
|
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-07-05 17:28:51 +00:00
|
|
|
[FINISHED] [..]
|
2016-02-05 23:14:17 +00:00
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.2.0")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
|
|
|
|
|
|
|
assert_that(
|
2018-08-18 14:05:45 +00:00
|
|
|
p.cargo("update -v"),
|
2018-03-14 15:43:41 +00:00
|
|
|
execs()
|
2018-07-20 17:41:44 +00:00
|
|
|
.with_stderr("[UPDATING] bar v0.1.0 -> v0.2.0"),
|
2018-03-14 15:17:44 +00:00
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn multiple_names() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("baz", "0.1.0")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn baz() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
bar = "*"
|
2018-07-20 17:41:44 +00:00
|
|
|
baz = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.file(
|
|
|
|
"src/lib.rs",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
extern crate bar;
|
2018-07-20 17:41:44 +00:00
|
|
|
extern crate baz;
|
|
|
|
pub fn foo() {
|
2016-02-05 23:14:17 +00:00
|
|
|
bar::bar();
|
2018-07-20 17:41:44 +00:00
|
|
|
baz::baz();
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2016-02-05 23:14:17 +00:00
|
|
|
[UNPACKING] [..]
|
|
|
|
[UNPACKING] [..]
|
|
|
|
[COMPILING] [..]
|
|
|
|
[COMPILING] [..]
|
2018-07-20 17:41:44 +00:00
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-07-05 17:28:51 +00:00
|
|
|
[FINISHED] [..]
|
2016-02-05 23:14:17 +00:00
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn interdependent() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("baz", "0.1.0")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.dep("bar", "*")
|
|
|
|
.file("src/lib.rs", "extern crate bar; pub fn baz() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
bar = "*"
|
2018-07-20 17:41:44 +00:00
|
|
|
baz = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.file(
|
|
|
|
"src/lib.rs",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
extern crate bar;
|
2018-07-20 17:41:44 +00:00
|
|
|
extern crate baz;
|
|
|
|
pub fn foo() {
|
2016-02-05 23:14:17 +00:00
|
|
|
bar::bar();
|
2018-07-20 17:41:44 +00:00
|
|
|
baz::baz();
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2016-02-05 23:14:17 +00:00
|
|
|
[UNPACKING] [..]
|
|
|
|
[UNPACKING] [..]
|
2018-07-20 17:41:44 +00:00
|
|
|
[COMPILING] bar v0.0.1
|
|
|
|
[COMPILING] baz v0.1.0
|
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-07-05 17:28:51 +00:00
|
|
|
[FINISHED] [..]
|
2016-02-05 23:14:17 +00:00
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn path_dep_rewritten() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("baz", "0.1.0")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.dep("bar", "*")
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "baz"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.1.0"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = { path = "bar", version = "*" }
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "extern crate bar; pub fn baz() {}")
|
2018-07-24 22:35:01 +00:00
|
|
|
.file("bar/Cargo.toml", &basic_manifest("bar", "0.0.1"))
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("bar/src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
bar = "*"
|
2018-07-20 17:41:44 +00:00
|
|
|
baz = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
|
|
|
.file(
|
|
|
|
"src/lib.rs",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
extern crate bar;
|
2018-07-20 17:41:44 +00:00
|
|
|
extern crate baz;
|
|
|
|
pub fn foo() {
|
2016-02-05 23:14:17 +00:00
|
|
|
bar::bar();
|
2018-07-20 17:41:44 +00:00
|
|
|
baz::baz();
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2016-02-05 23:14:17 +00:00
|
|
|
[UNPACKING] [..]
|
|
|
|
[UNPACKING] [..]
|
2018-07-20 17:41:44 +00:00
|
|
|
[COMPILING] bar v0.0.1
|
|
|
|
[COMPILING] baz v0.1.0
|
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-07-05 17:28:51 +00:00
|
|
|
[FINISHED] [..]
|
2016-02-05 23:14:17 +00:00
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn invalid_dir_bad() {
|
|
|
|
setup();
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2016-02-05 23:14:17 +00:00
|
|
|
.file("src/lib.rs", "")
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
".cargo/config",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[source.crates-io]
|
|
|
|
registry = 'https://wut'
|
|
|
|
replace-with = 'my-awesome-local-directory'
|
|
|
|
|
|
|
|
[source.my-awesome-local-directory]
|
|
|
|
local-registry = '/path/to/nowhere'
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
|
|
|
execs().with_status(101).with_stderr(
|
|
|
|
"\
|
2018-07-20 17:41:44 +00:00
|
|
|
[ERROR] failed to load source for a dependency on `bar`
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
Caused by:
|
2017-10-04 22:07:01 +00:00
|
|
|
Unable to update registry `https://[..]`
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
Caused by:
|
2017-10-04 22:07:01 +00:00
|
|
|
failed to update replaced source registry `https://[..]`
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
Caused by:
|
|
|
|
local registry path is not a directory: [..]path[..]to[..]nowhere
|
2018-03-14 15:17:44 +00:00
|
|
|
",
|
|
|
|
),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn different_directory_replacing_the_registry_is_bad() {
|
|
|
|
setup();
|
|
|
|
|
|
|
|
// Move our test's .cargo/config to a temporary location and publish a
|
|
|
|
// registry package we're going to use first.
|
|
|
|
let config = paths::root().join(".cargo");
|
|
|
|
let config_tmp = paths::root().join(".cargo-old");
|
|
|
|
t!(fs::rename(&config, &config_tmp));
|
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-02-05 23:14:17 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-02-05 23:14:17 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = "*"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2017-07-22 03:12:21 +00:00
|
|
|
.file("src/lib.rs", "")
|
|
|
|
.build();
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
// Generate a lock file against the crates.io registry
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1").publish();
|
2018-08-02 10:29:39 +00:00
|
|
|
assert_that(p.cargo("build"), execs());
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
// Switch back to our directory source, and now that we're replacing
|
|
|
|
// crates.io make sure that this fails because we're replacing with a
|
|
|
|
// different checksum
|
|
|
|
config.rm_rf();
|
|
|
|
t!(fs::rename(&config_tmp, &config));
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.file("src/lib.rs", "invalid")
|
|
|
|
.local(true)
|
|
|
|
.publish();
|
|
|
|
|
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
|
|
|
execs().with_status(101).with_stderr(
|
|
|
|
"\
|
2018-07-20 17:41:44 +00:00
|
|
|
[ERROR] checksum for `bar v0.0.1` changed between lock files
|
2016-02-05 23:14:17 +00:00
|
|
|
|
|
|
|
this could be indicative of a few possible errors:
|
|
|
|
|
|
|
|
* the lock file is corrupt
|
|
|
|
* a replacement source in use (e.g. a mirror) returned a different checksum
|
|
|
|
* the source itself may be corrupt in one way or another
|
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
unable to verify that `bar v0.0.1` is the same as when the lockfile was generated
|
2016-02-05 23:14:17 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
",
|
|
|
|
),
|
|
|
|
);
|
2016-02-05 23:14:17 +00:00
|
|
|
}
|
2016-09-13 02:26:16 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn crates_io_registry_url_is_optional() {
|
|
|
|
let root = paths::root();
|
|
|
|
t!(fs::create_dir(&root.join(".cargo")));
|
2018-03-14 15:17:44 +00:00
|
|
|
t!(t!(File::create(root.join(".cargo/config"))).write_all(
|
|
|
|
br#"
|
2016-09-13 02:26:16 +00:00
|
|
|
[source.crates-io]
|
|
|
|
replace-with = 'my-awesome-local-registry'
|
|
|
|
|
|
|
|
[source.my-awesome-local-registry]
|
|
|
|
local-registry = 'registry'
|
2018-03-14 15:17:44 +00:00
|
|
|
"#
|
|
|
|
));
|
2016-09-13 02:26:16 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
Package::new("bar", "0.0.1")
|
2018-03-14 15:17:44 +00:00
|
|
|
.local(true)
|
2018-07-20 17:41:44 +00:00
|
|
|
.file("src/lib.rs", "pub fn bar() {}")
|
2018-03-14 15:17:44 +00:00
|
|
|
.publish();
|
2016-09-13 02:26:16 +00:00
|
|
|
|
2018-07-20 17:41:44 +00:00
|
|
|
let p = project()
|
2018-03-14 15:17:44 +00:00
|
|
|
.file(
|
|
|
|
"Cargo.toml",
|
|
|
|
r#"
|
2016-09-13 02:26:16 +00:00
|
|
|
[project]
|
2018-07-20 17:41:44 +00:00
|
|
|
name = "foo"
|
2016-09-13 02:26:16 +00:00
|
|
|
version = "0.0.1"
|
|
|
|
authors = []
|
|
|
|
|
|
|
|
[dependencies]
|
2018-07-20 17:41:44 +00:00
|
|
|
bar = "0.0.1"
|
2018-03-14 15:17:44 +00:00
|
|
|
"#,
|
|
|
|
)
|
2018-07-25 00:30:32 +00:00
|
|
|
.file("src/lib.rs", "extern crate bar; pub fn foo() { bar::bar(); }")
|
2017-07-22 03:12:21 +00:00
|
|
|
.build();
|
2016-09-13 02:26:16 +00:00
|
|
|
|
2018-03-14 15:17:44 +00:00
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr(&format!(
|
2018-03-14 15:17:44 +00:00
|
|
|
"\
|
2018-07-20 17:41:44 +00:00
|
|
|
[UNPACKING] bar v0.0.1 ([..])
|
|
|
|
[COMPILING] bar v0.0.1
|
|
|
|
[COMPILING] foo v0.0.1 ({dir})
|
2016-09-13 02:26:16 +00:00
|
|
|
[FINISHED] [..]
|
|
|
|
",
|
2018-03-14 15:17:44 +00:00
|
|
|
dir = p.url()
|
|
|
|
)),
|
|
|
|
);
|
|
|
|
assert_that(
|
|
|
|
p.cargo("build"),
|
2018-08-02 10:29:39 +00:00
|
|
|
execs().with_stderr("[FINISHED] [..]"),
|
2018-03-14 15:17:44 +00:00
|
|
|
);
|
2018-08-02 10:29:39 +00:00
|
|
|
assert_that(p.cargo("test"), execs());
|
2016-09-13 02:26:16 +00:00
|
|
|
}
|