Skip to content

Commit

Permalink
Unrolled build for rust-lang#136936
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#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](rust-lang#109379)). This PR updates the test to use `while-echo` for QNX Neutrino while reverting to `yes` for other platforms.
  • Loading branch information
rust-timer authored Feb 19, 2025
2 parents 17c1c32 + 0ffb771 commit edcde4c
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions tests/ui/process/process-sigpipe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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());
Expand Down

0 comments on commit edcde4c

Please sign in to comment.