mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00

Extract out all our test support code to its own standalone crate so it can be shared between multiple test suites if necessary.
134 lines
3.2 KiB
Rust
134 lines
3.2 KiB
Rust
use cargo_test_support::registry::Package;
|
|
use cargo_test_support::rustc_host;
|
|
use cargo_test_support::{basic_manifest, cross_compile, project};
|
|
|
|
#[cargo_test]
|
|
fn no_deps() {
|
|
let p = project()
|
|
.file("src/main.rs", "mod a; fn main() {}")
|
|
.file("src/a.rs", "")
|
|
.build();
|
|
|
|
p.cargo("fetch").with_stdout("").run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn fetch_all_platform_dependencies_when_no_target_is_given() {
|
|
if cross_compile::disabled() {
|
|
return;
|
|
}
|
|
|
|
Package::new("d1", "1.2.3")
|
|
.file("Cargo.toml", &basic_manifest("d1", "1.2.3"))
|
|
.file("src/lib.rs", "")
|
|
.publish();
|
|
|
|
Package::new("d2", "0.1.2")
|
|
.file("Cargo.toml", &basic_manifest("d2", "0.1.2"))
|
|
.file("src/lib.rs", "")
|
|
.publish();
|
|
|
|
let target = cross_compile::alternate();
|
|
let host = rustc_host();
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
&format!(
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
version = "0.0.1"
|
|
authors = []
|
|
|
|
[target.{host}.dependencies]
|
|
d1 = "1.2.3"
|
|
|
|
[target.{target}.dependencies]
|
|
d2 = "0.1.2"
|
|
"#,
|
|
host = host,
|
|
target = target
|
|
),
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("fetch")
|
|
.with_stderr_contains("[DOWNLOADED] d1 v1.2.3 [..]")
|
|
.with_stderr_contains("[DOWNLOADED] d2 v0.1.2 [..]")
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn fetch_platform_specific_dependencies() {
|
|
if cross_compile::disabled() {
|
|
return;
|
|
}
|
|
|
|
Package::new("d1", "1.2.3")
|
|
.file("Cargo.toml", &basic_manifest("d1", "1.2.3"))
|
|
.file("src/lib.rs", "")
|
|
.publish();
|
|
|
|
Package::new("d2", "0.1.2")
|
|
.file("Cargo.toml", &basic_manifest("d2", "0.1.2"))
|
|
.file("src/lib.rs", "")
|
|
.publish();
|
|
|
|
let target = cross_compile::alternate();
|
|
let host = rustc_host();
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
&format!(
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
version = "0.0.1"
|
|
authors = []
|
|
|
|
[target.{host}.dependencies]
|
|
d1 = "1.2.3"
|
|
|
|
[target.{target}.dependencies]
|
|
d2 = "0.1.2"
|
|
"#,
|
|
host = host,
|
|
target = target
|
|
),
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("fetch --target")
|
|
.arg(&host)
|
|
.with_stderr_contains("[DOWNLOADED] d1 v1.2.3 [..]")
|
|
.with_stderr_does_not_contain("[DOWNLOADED] d2 v0.1.2 [..]")
|
|
.run();
|
|
|
|
p.cargo("fetch --target")
|
|
.arg(&target)
|
|
.with_stderr_contains("[DOWNLOADED] d2 v0.1.2[..]")
|
|
.with_stderr_does_not_contain("[DOWNLOADED] d1 v1.2.3 [..]")
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn fetch_warning() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
version = "1.0.0"
|
|
misspelled = "wut"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
p.cargo("fetch")
|
|
.with_stderr("[WARNING] unused manifest key: package.misspelled")
|
|
.run();
|
|
}
|