summaryrefslogtreecommitdiffstats
path: root/src/tools/cargo/tests/testsuite/progress.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/cargo/tests/testsuite/progress.rs')
-rw-r--r--src/tools/cargo/tests/testsuite/progress.rs159
1 files changed, 159 insertions, 0 deletions
diff --git a/src/tools/cargo/tests/testsuite/progress.rs b/src/tools/cargo/tests/testsuite/progress.rs
new file mode 100644
index 000000000..20870a394
--- /dev/null
+++ b/src/tools/cargo/tests/testsuite/progress.rs
@@ -0,0 +1,159 @@
+//! 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",
+ r#"
+ [term]
+ progress = { when = 'unknown' }
+ "#,
+ )
+ .file("src/lib.rs", "")
+ .build();
+
+ p.cargo("check")
+ .with_status(101)
+ .with_stderr(
+ "\
+[ERROR] error in [..].cargo/config: \
+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",
+ 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",
+ 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",
+ 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",
+ 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();
+}