summaryrefslogtreecommitdiffstats
path: root/src/tools/cargo/tests/testsuite/build_plan.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/cargo/tests/testsuite/build_plan.rs')
-rw-r--r--src/tools/cargo/tests/testsuite/build_plan.rs222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/tools/cargo/tests/testsuite/build_plan.rs b/src/tools/cargo/tests/testsuite/build_plan.rs
new file mode 100644
index 000000000..647bc1234
--- /dev/null
+++ b/src/tools/cargo/tests/testsuite/build_plan.rs
@@ -0,0 +1,222 @@
+//! Tests for --build-plan feature.
+
+use cargo_test_support::registry::Package;
+use cargo_test_support::{basic_bin_manifest, basic_manifest, main_file, project};
+
+#[cargo_test]
+fn cargo_build_plan_simple() {
+ let p = project()
+ .file("Cargo.toml", &basic_bin_manifest("foo"))
+ .file("src/foo.rs", &main_file(r#""i am foo""#, &[]))
+ .build();
+
+ p.cargo("build --build-plan -Zunstable-options")
+ .masquerade_as_nightly_cargo(&["build-plan"])
+ .with_json(
+ r#"
+ {
+ "inputs": [
+ "[..]/foo/Cargo.toml"
+ ],
+ "invocations": [
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": "{...}",
+ "package_name": "foo",
+ "package_version": "0.5.0",
+ "program": "rustc",
+ "target_kind": ["bin"],
+ "compile_mode": "build"
+ }
+ ]
+ }
+ "#,
+ )
+ .run();
+ assert!(!p.bin("foo").is_file());
+}
+
+#[cargo_test]
+fn cargo_build_plan_single_dep() {
+ let p = project()
+ .file(
+ "Cargo.toml",
+ r#"
+ [package]
+ name = "foo"
+ authors = []
+ version = "0.5.0"
+
+ [dependencies]
+ bar = { path = "bar" }
+ "#,
+ )
+ .file(
+ "src/lib.rs",
+ r#"
+ extern crate bar;
+ pub fn foo() { bar::bar(); }
+
+ #[test]
+ fn test() { foo(); }
+ "#,
+ )
+ .file("bar/Cargo.toml", &basic_manifest("bar", "0.0.1"))
+ .file("bar/src/lib.rs", "pub fn bar() {}")
+ .build();
+ p.cargo("build --build-plan -Zunstable-options")
+ .masquerade_as_nightly_cargo(&["build-plan"])
+ .with_json(
+ r#"
+ {
+ "inputs": [
+ "[..]/foo/Cargo.toml",
+ "[..]/foo/bar/Cargo.toml"
+ ],
+ "invocations": [
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": [
+ "[..]/foo/target/debug/deps/libbar-[..].rlib",
+ "[..]/foo/target/debug/deps/libbar-[..].rmeta"
+ ],
+ "package_name": "bar",
+ "package_version": "0.0.1",
+ "program": "rustc",
+ "target_kind": ["lib"],
+ "compile_mode": "build"
+ },
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [0],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": [
+ "[..]/foo/target/debug/deps/libfoo-[..].rlib",
+ "[..]/foo/target/debug/deps/libfoo-[..].rmeta"
+ ],
+ "package_name": "foo",
+ "package_version": "0.5.0",
+ "program": "rustc",
+ "target_kind": ["lib"],
+ "compile_mode": "build"
+ }
+ ]
+ }
+ "#,
+ )
+ .run();
+}
+
+#[cargo_test]
+fn cargo_build_plan_build_script() {
+ let p = project()
+ .file(
+ "Cargo.toml",
+ r#"
+ [package]
+
+ name = "foo"
+ version = "0.5.0"
+ authors = ["wycats@example.com"]
+ build = "build.rs"
+ "#,
+ )
+ .file("src/main.rs", r#"fn main() {}"#)
+ .file("build.rs", r#"fn main() {}"#)
+ .build();
+
+ p.cargo("build --build-plan -Zunstable-options")
+ .masquerade_as_nightly_cargo(&["build-plan"])
+ .with_json(
+ r#"
+ {
+ "inputs": [
+ "[..]/foo/Cargo.toml"
+ ],
+ "invocations": [
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": "{...}",
+ "package_name": "foo",
+ "package_version": "0.5.0",
+ "program": "rustc",
+ "target_kind": ["custom-build"],
+ "compile_mode": "build"
+ },
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [0],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": [],
+ "package_name": "foo",
+ "package_version": "0.5.0",
+ "program": "[..]/build-script-build",
+ "target_kind": ["custom-build"],
+ "compile_mode": "run-custom-build"
+ },
+ {
+ "args": "{...}",
+ "cwd": "[..]/cit/[..]/foo",
+ "deps": [1],
+ "env": "{...}",
+ "kind": null,
+ "links": "{...}",
+ "outputs": "{...}",
+ "package_name": "foo",
+ "package_version": "0.5.0",
+ "program": "rustc",
+ "target_kind": ["bin"],
+ "compile_mode": "build"
+ }
+ ]
+ }
+ "#,
+ )
+ .run();
+}
+
+#[cargo_test]
+fn build_plan_with_dev_dep() {
+ Package::new("bar", "0.1.0").publish();
+
+ let p = project()
+ .file(
+ "Cargo.toml",
+ r#"
+ [package]
+ name = "foo"
+ version = "0.5.0"
+ authors = []
+
+ [dev-dependencies]
+ bar = "*"
+ "#,
+ )
+ .file("src/lib.rs", "")
+ .build();
+
+ p.cargo("build --build-plan -Zunstable-options")
+ .masquerade_as_nightly_cargo(&["build-plan"])
+ .run();
+}