mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Rollup merge of #136936 - xingxue-ibm:sigpipe-test, r=workingjubilee
Use 'yes' instead of 'while-echo' in tests/ui/process/process-sigpipe.rs except 'nto' The `sh` of AIX prints a message about a broken pipe when using the `while-echo` command. It works as expected when using the `yes` command instead. `yes` was originally used in this test but was later replaced with `while-echo` because QNX Neutrino does not have `yes` ([Replace yes command by while-echo in test tests/ui/process/process-sigpipe.rs](https://github.com/rust-lang/rust/pull/109379)). This PR updates the test to use `while-echo` for QNX Neutrino while reverting to `yes` for other platforms.
This commit is contained in:
commit
616b6c35a5
@ -9,9 +9,9 @@
|
||||
// Make sure that these behaviors don't get inherited to children
|
||||
// spawned via std::process, since they're needed for traditional UNIX
|
||||
// filter behavior.
|
||||
// This test checks that `while echo y ; do : ; done | head` terminates
|
||||
// (instead of running forever), and that it does not print an error
|
||||
// message about a broken pipe.
|
||||
// This test checks that `yes` or `while echo y ; do : ; done | head`
|
||||
// terminates (instead of running forever), and that it does not print an
|
||||
// error message about a broken pipe.
|
||||
|
||||
//@ ignore-vxworks no 'sh'
|
||||
//@ ignore-fuchsia no 'sh'
|
||||
@ -22,14 +22,21 @@ use std::process;
|
||||
use std::thread;
|
||||
|
||||
fn main() {
|
||||
// Just in case `yes` doesn't check for EPIPE...
|
||||
// Just in case `yes` or `while-echo` doesn't check for EPIPE...
|
||||
thread::spawn(|| {
|
||||
thread::sleep_ms(5000);
|
||||
process::exit(1);
|
||||
});
|
||||
// QNX Neutrino does not have `yes`. Therefore, use `while-echo` for `nto`
|
||||
// and `yes` for other platforms.
|
||||
let command = if cfg!(target_os = "nto") {
|
||||
"while echo y ; do : ; done | head"
|
||||
} else {
|
||||
"yes | head"
|
||||
};
|
||||
let output = process::Command::new("sh")
|
||||
.arg("-c")
|
||||
.arg("while echo y ; do : ; done | head")
|
||||
.arg(command)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(output.status.success());
|
||||
|
Loading…
Reference in New Issue
Block a user