| //! Tests for the `cargo locate-project` command. |
| |
| use cargo_test_support::project; |
| |
| #[cargo_test] |
| fn simple() { |
| let p = project().build(); |
| |
| p.cargo("locate-project") |
| .with_json(r#"{"root": "[ROOT]/foo/Cargo.toml"}"#) |
| .run(); |
| } |
| |
| #[cargo_test] |
| fn message_format() { |
| let p = project().build(); |
| |
| p.cargo("locate-project --message-format plain") |
| .with_stdout("[ROOT]/foo/Cargo.toml") |
| .run(); |
| |
| p.cargo("locate-project --message-format json") |
| .with_json(r#"{"root": "[ROOT]/foo/Cargo.toml"}"#) |
| .run(); |
| |
| p.cargo("locate-project --message-format cryptic") |
| .with_stderr("error: invalid message format specifier: `cryptic`") |
| .with_status(101) |
| .run(); |
| } |
| |
| #[cargo_test] |
| fn workspace() { |
| let p = project() |
| .file( |
| "Cargo.toml", |
| r#" |
| [package] |
| name = "outer" |
| version = "0.0.0" |
| |
| [workspace] |
| members = ["inner"] |
| "#, |
| ) |
| .file("src/main.rs", "fn main() {}") |
| .file( |
| "inner/Cargo.toml", |
| r#" |
| [package] |
| name = "inner" |
| version = "0.0.0" |
| "#, |
| ) |
| .file("inner/src/lib.rs", "") |
| .build(); |
| |
| let outer_manifest = r#"{"root": "[ROOT]/foo/Cargo.toml"}"#; |
| let inner_manifest = r#"{"root": "[ROOT]/foo/inner/Cargo.toml"}"#; |
| |
| p.cargo("locate-project").with_json(outer_manifest).run(); |
| |
| p.cargo("locate-project") |
| .cwd("inner") |
| .with_json(inner_manifest) |
| .run(); |
| |
| p.cargo("locate-project --workspace") |
| .with_json(outer_manifest) |
| .run(); |
| |
| p.cargo("locate-project --workspace") |
| .cwd("inner") |
| .with_json(outer_manifest) |
| .run(); |
| } |