mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-25 11:14:46 +00:00
330 lines
7.6 KiB
Rust
330 lines
7.6 KiB
Rust
//! Tests for the `--message-format` flag for `cargo package`.
|
|
|
|
use crate::prelude::*;
|
|
use cargo_test_support::project;
|
|
use cargo_test_support::str;
|
|
|
|
#[cargo_test]
|
|
fn gated() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("package --list --message-format json")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_status(101)
|
|
.with_stderr_data(str![[r#"
|
|
[ERROR] the `--message-format` flag is unstable, pass `-Z unstable-options` to enable it
|
|
See https://github.com/rust-lang/cargo/issues/15353 for more information about the `--message-format` flag.
|
|
|
|
"#]])
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn requires_list() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("package --message-format json -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_status(1)
|
|
.with_stderr_data(str![[r#"
|
|
[ERROR] the following required arguments were not provided:
|
|
--list
|
|
|
|
Usage: cargo[EXE] package --list --message-format <FMT> -Z <FLAG>
|
|
|
|
For more information, try '--help'.
|
|
|
|
"#]])
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn human() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("package --list --message-format human -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_stderr_data(str![""])
|
|
.with_stdout_data(str![[r#"
|
|
Cargo.lock
|
|
Cargo.toml
|
|
Cargo.toml.orig
|
|
src/lib.rs
|
|
|
|
"#]])
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn single_package() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "foo"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("package --list --message-format json -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_stderr_data(str![""])
|
|
.with_stdout_data(
|
|
str![[r#"
|
|
[
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo#0.0.0"
|
|
}
|
|
]
|
|
"#]]
|
|
.is_json()
|
|
.against_jsonlines(),
|
|
)
|
|
.run();
|
|
|
|
// has existing lockfile
|
|
p.cargo("generate-lockfile").run();
|
|
p.cargo("package --list --message-format json -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_stderr_data(str![""])
|
|
.with_stdout_data(
|
|
str![[r#"
|
|
[
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/Cargo.lock"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo#0.0.0"
|
|
}
|
|
]
|
|
"#]]
|
|
.is_json()
|
|
.against_jsonlines(),
|
|
)
|
|
.run();
|
|
}
|
|
|
|
#[cargo_test]
|
|
fn workspace() {
|
|
let p = project()
|
|
.file(
|
|
"Cargo.toml",
|
|
r#"
|
|
[workspace]
|
|
members = ["gondor", "rohan"]
|
|
"#,
|
|
)
|
|
.file(
|
|
"gondor/Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "gondor"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("gondor/src/lib.rs", "")
|
|
.file(
|
|
"rohan/Cargo.toml",
|
|
r#"
|
|
[package]
|
|
name = "rohan"
|
|
edition = "2015"
|
|
license = "MIT"
|
|
description = "foo"
|
|
documentation = "foo"
|
|
"#,
|
|
)
|
|
.file("rohan/src/lib.rs", "")
|
|
.build();
|
|
|
|
p.cargo("package --list --message-format json -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_stderr_data(str![""])
|
|
.with_stdout_data(
|
|
str![[r#"
|
|
[
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/gondor/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/gondor/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/gondor/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo/gondor#0.0.0"
|
|
},
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/rohan/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/rohan/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/rohan/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo/rohan#0.0.0"
|
|
}
|
|
]
|
|
"#]]
|
|
.is_json()
|
|
.against_jsonlines(),
|
|
)
|
|
.run();
|
|
|
|
// has existing lockfile
|
|
p.cargo("generate-lockfile").run();
|
|
p.cargo("package --list --message-format json -Zunstable-options")
|
|
.masquerade_as_nightly_cargo(&["package --message-format"])
|
|
.with_stderr_data(str![""])
|
|
.with_stdout_data(
|
|
str![[r#"
|
|
[
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/Cargo.lock"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/gondor/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/gondor/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/gondor/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo/gondor#0.0.0"
|
|
},
|
|
{
|
|
"files": {
|
|
"Cargo.lock": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/Cargo.lock"
|
|
},
|
|
"Cargo.toml": {
|
|
"kind": "generate",
|
|
"path": "[ROOT]/foo/rohan/Cargo.toml"
|
|
},
|
|
"Cargo.toml.orig": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/rohan/Cargo.toml"
|
|
},
|
|
"src/lib.rs": {
|
|
"kind": "copy",
|
|
"path": "[ROOT]/foo/rohan/src/lib.rs"
|
|
}
|
|
},
|
|
"id": "path+[ROOTURL]/foo/rohan#0.0.0"
|
|
}
|
|
]
|
|
"#]]
|
|
.is_json()
|
|
.against_jsonlines(),
|
|
)
|
|
.run();
|
|
}
|