about summary refs log tree commit diff
path: root/tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs
diff options
context:
space:
mode:
authorMartin Nordholts <martin.nordholts@codetale.se>2024-04-28 18:02:21 +0200
committerMartin Nordholts <martin.nordholts@codetale.se>2024-05-02 19:48:29 +0200
commitcde0cde151f30e07170d0f3caa721c92bebd7afe (patch)
treef065e316178196507ba419727c37562cdf7f828e /tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs
parente27af2917b80487e9c0de00118fdcb9ccb1177f9 (diff)
downloadrust-cde0cde151f30e07170d0f3caa721c92bebd7afe.tar.gz
rust-cde0cde151f30e07170d0f3caa721c92bebd7afe.zip
Change `SIGPIPE` ui from `#[unix_sigpipe = "..."]` to `-Zon-broken-pipe=...`
In the stabilization attempt of `#[unix_sigpipe = "sig_dfl"]`, a concern
was raised related to using a language attribute for the feature: Long
term, we want `fn lang_start()` to be definable by any crate, not just
libstd. Having a special language attribute in that case becomes
awkward.

So as a first step towards towards the next stabilization attempt, this
PR changes the `#[unix_sigpipe = "..."]` attribute to a compiler flag
`-Zon-broken-pipe=...` to remove that concern, since now the language
is not "contaminated" by this feature.

Another point was also raised, namely that the ui should not leak
**how** it does things, but rather what the **end effect** is. The new
flag uses the proposed naming. This is of course something that can be
iterated on further before stabilization.
Diffstat (limited to 'tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs')
-rw-r--r--tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs29
1 files changed, 0 insertions, 29 deletions
diff --git a/tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs b/tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs
deleted file mode 100644
index 3e63349edb7..00000000000
--- a/tests/ui/attributes/unix_sigpipe/unix_sigpipe-inherit.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-//@ ignore-cross-compile because aux-bin does not yet support it
-//@ only-unix because SIGPIPE is a unix thing
-//@ aux-bin: assert-inherit-sig_dfl.rs
-//@ aux-bin: assert-inherit-sig_ign.rs
-//@ run-pass
-
-#![feature(rustc_private, unix_sigpipe)]
-
-extern crate libc;
-
-// By default the Rust runtime resets SIGPIPE to SIG_DFL before exec'ing child
-// processes so opt-out of that with `#[unix_sigpipe = "sig_dfl"]`. See
-// https://github.com/rust-lang/rust/blob/bf4de3a874753bbee3323081c8b0c133444fed2d/library/std/src/sys/pal/unix/process/process_unix.rs#L359-L384
-#[unix_sigpipe = "sig_dfl"]
-fn main() {
-    // First expect SIG_DFL in a child process with #[unix_sigpipe = "inherit"].
-    assert_inherit_sigpipe_disposition("auxiliary/bin/assert-inherit-sig_dfl");
-
-    // With SIG_IGN we expect #[unix_sigpipe = "inherit"] to also get SIG_IGN.
-    unsafe {
-        libc::signal(libc::SIGPIPE, libc::SIG_IGN);
-    }
-    assert_inherit_sigpipe_disposition("auxiliary/bin/assert-inherit-sig_ign");
-}
-
-fn assert_inherit_sigpipe_disposition(aux_bin: &str) {
-    let mut cmd = std::process::Command::new(aux_bin);
-    assert!(cmd.status().unwrap().success());
-}