about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorChris Emerson <github@mail.nosreme.org>2019-11-12 02:55:04 +0000
committerCaleb Cartwright <calebcartwright@users.noreply.github.com>2022-01-02 10:06:06 -0600
commit34263cd6bdb29df23258a96ea18fe986efe8dad0 (patch)
treefce6b7e54f8e332c5d63bc5716a6ee1720f80fe6 /src/test
parent93b7de5b0110a1ab79714c3dfd009a4aae3e34b1 (diff)
Fix --check -l with stdin. (#3910)
* Fix some possible panics when using `--check` with stdin.

One case which doesn't work is when there are only line ending fixes;
with stdin rustfmt is unable to detect the difference as it stores
the input with Unix line endings.

* Add test for `rustfmt --check -l` with stdin.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/mod.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/mod.rs b/src/test/mod.rs
index e1a7972ec82..db1cf88479c 100644
--- a/src/test/mod.rs
+++ b/src/test/mod.rs
@@ -989,3 +989,29 @@ fn verify_check_works_with_stdin() {
         .expect("Failed to wait on rustfmt child");
     assert!(output.status.success());
 }
+
+#[test]
+fn verify_check_l_works_with_stdin() {
+    init_log();
+
+    let mut child = Command::new(rustfmt().to_str().unwrap())
+        .arg("--check")
+        .arg("-l")
+        .stdin(Stdio::piped())
+        .stdout(Stdio::piped())
+        .stderr(Stdio::piped())
+        .spawn()
+        .expect("run with check option failed");
+
+    {
+        let stdin = child.stdin.as_mut().expect("Failed to open stdin");
+        stdin
+            .write_all("fn main()\n{}\n".as_bytes())
+            .expect("Failed to write to rustfmt --check");
+    }
+    let output = child
+        .wait_with_output()
+        .expect("Failed to wait on rustfmt child");
+    assert!(output.status.success());
+    assert_eq!(std::str::from_utf8(&output.stdout).unwrap(), "stdin\n");
+}