cargo/tests/testsuite/progress.rs
2024-01-26 13:40:46 -06:00

159 lines
3.5 KiB
Rust

//! Tests for progress bar.
use cargo_test_support::project;
use cargo_test_support::registry::Package;
#[cargo_test]
fn bad_progress_config_unknown_when() {
let p = project()
.file(
".cargo/config.toml",
r#"
[term]
progress = { when = 'unknown' }
"#,
)
.file("src/lib.rs", "")
.build();
p.cargo("check")
.with_status(101)
.with_stderr(
"\
[ERROR] error in [..].cargo/config.toml: \
could not load config key `term.progress.when`
Caused by:
unknown variant `unknown`, expected one of `auto`, `never`, `always`
",
)
.run();
}
#[cargo_test]
fn bad_progress_config_missing_width() {
let p = project()
.file(
".cargo/config.toml",
r#"
[term]
progress = { when = 'always' }
"#,
)
.file("src/lib.rs", "")
.build();
p.cargo("check")
.with_status(101)
.with_stderr(
"\
[ERROR] \"always\" progress requires a `width` key
",
)
.run();
}
#[cargo_test]
fn bad_progress_config_missing_when() {
let p = project()
.file(
".cargo/config.toml",
r#"
[term]
progress = { width = 1000 }
"#,
)
.file("src/lib.rs", "")
.build();
p.cargo("check")
.with_status(101)
.with_stderr(
"\
error: missing field `when`
",
)
.run();
}
#[cargo_test]
fn always_shows_progress() {
const N: usize = 3;
let mut deps = String::new();
for i in 1..=N {
Package::new(&format!("dep{}", i), "1.0.0").publish();
deps.push_str(&format!("dep{} = \"1.0\"\n", i));
}
let p = project()
.file(
".cargo/config.toml",
r#"
[term]
progress = { when = 'always', width = 100 }
"#,
)
.file(
"Cargo.toml",
&format!(
r#"
[package]
name = "foo"
version = "0.1.0"
[dependencies]
{}
"#,
deps
),
)
.file("src/lib.rs", "")
.build();
p.cargo("check")
.with_stderr_contains("[DOWNLOADING] [..] crates [..]")
.with_stderr_contains("[..][DOWNLOADED] 3 crates ([..]) in [..]")
.with_stderr_contains("[BUILDING] [..] [..]/4: [..]")
.run();
}
#[cargo_test]
fn never_progress() {
const N: usize = 3;
let mut deps = String::new();
for i in 1..=N {
Package::new(&format!("dep{}", i), "1.0.0").publish();
deps.push_str(&format!("dep{} = \"1.0\"\n", i));
}
let p = project()
.file(
".cargo/config.toml",
r#"
[term]
progress = { when = 'never' }
"#,
)
.file(
"Cargo.toml",
&format!(
r#"
[package]
name = "foo"
version = "0.1.0"
[dependencies]
{}
"#,
deps
),
)
.file("src/lib.rs", "")
.build();
p.cargo("check")
.with_stderr_does_not_contain("[DOWNLOADING] [..] crates [..]")
.with_stderr_does_not_contain("[..][DOWNLOADED] 3 crates ([..]) in [..]")
.with_stderr_does_not_contain("[BUILDING] [..] [..]/4: [..]")
.run();
}