Skip to content

Commit 6e94c3c

Browse files
bors[bot]asomers
andcommitted
Merge #1033
1033: Fix the tests with libc 0.2.49 and Rust 1.33.0 r=asomers a=asomers Several symbols are now marked as deprecated on OSX. Co-authored-by: Alan Somers <[email protected]>
2 parents a2fa282 + 439b930 commit 6e94c3c

File tree

4 files changed

+84
-62
lines changed

4 files changed

+84
-62
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
2929
([#1020](https://github.com/nix-rust/nix/pull/1020))
3030

3131
### Removed
32+
- `Daemon`, `NOTE_REAP`, and `NOTE_EXIT_REPARENTED` are now deprecated on OSX
33+
and iOS.
34+
([#1033](https://github.com/nix-rust/nix/pull/1033))
3235

3336
## [0.13.0] - 2019-01-15
3437
### Added

src/sys/event.rs

+5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ libc_bitflags!(
135135
NOTE_EXEC;
136136
NOTE_EXIT;
137137
#[cfg(any(target_os = "macos", target_os = "ios"))]
138+
#[deprecated( since="0.14.0", note="Deprecated since OSX 10.9")]
139+
#[allow(deprecated)]
138140
NOTE_EXIT_REPARENTED;
139141
#[cfg(any(target_os = "macos", target_os = "ios"))]
140142
NOTE_EXITSTATUS;
@@ -183,6 +185,9 @@ libc_bitflags!(
183185
NOTE_PCTRLMASK;
184186
NOTE_PDATAMASK;
185187
#[cfg(any(target_os = "macos", target_os = "ios"))]
188+
#[cfg(any(target_os = "macos", target_os = "ios"))]
189+
#[deprecated( since="0.14.0", note="Deprecated since OSX 10.9")]
190+
#[allow(deprecated)]
186191
NOTE_REAP;
187192
NOTE_RENAME;
188193
NOTE_REVOKE;

src/sys/signal.rs

+71-62
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,7 @@ mod sigevent {
833833

834834
#[cfg(test)]
835835
mod tests {
836+
use std::thread;
836837
use super::*;
837838

838839
#[test]
@@ -886,112 +887,120 @@ mod tests {
886887
assert!(two_signals.contains(SIGUSR2));
887888
}
888889

889-
// This test doesn't actually test get_mask functionality, see the set_mask test for that.
890-
#[test]
891-
fn test_thread_signal_get_mask() {
892-
assert!(SigSet::thread_get_mask().is_ok());
893-
}
894-
895890
#[test]
896891
fn test_thread_signal_set_mask() {
897-
let prev_mask = SigSet::thread_get_mask().expect("Failed to get existing signal mask!");
892+
thread::spawn(|| {
893+
let prev_mask = SigSet::thread_get_mask()
894+
.expect("Failed to get existing signal mask!");
898895

899-
let mut test_mask = prev_mask;
900-
test_mask.add(SIGUSR1);
896+
let mut test_mask = prev_mask;
897+
test_mask.add(SIGUSR1);
901898

902-
assert!(test_mask.thread_set_mask().is_ok());
903-
let new_mask = SigSet::thread_get_mask().expect("Failed to get new mask!");
899+
assert!(test_mask.thread_set_mask().is_ok());
900+
let new_mask = SigSet::thread_get_mask()
901+
.expect("Failed to get new mask!");
904902

905-
assert!(new_mask.contains(SIGUSR1));
906-
assert!(!new_mask.contains(SIGUSR2));
903+
assert!(new_mask.contains(SIGUSR1));
904+
assert!(!new_mask.contains(SIGUSR2));
907905

908-
prev_mask.thread_set_mask().expect("Failed to revert signal mask!");
906+
prev_mask.thread_set_mask().expect("Failed to revert signal mask!");
907+
}).join().unwrap();
909908
}
910909

911910
#[test]
912911
fn test_thread_signal_block() {
913-
let mut mask = SigSet::empty();
914-
mask.add(SIGUSR1);
912+
thread::spawn(|| {
913+
let mut mask = SigSet::empty();
914+
mask.add(SIGUSR1);
915915

916-
assert!(mask.thread_block().is_ok());
916+
assert!(mask.thread_block().is_ok());
917917

918-
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
918+
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
919+
}).join().unwrap();
919920
}
920921

921922
#[test]
922923
fn test_thread_signal_unblock() {
923-
let mut mask = SigSet::empty();
924-
mask.add(SIGUSR1);
924+
thread::spawn(|| {
925+
let mut mask = SigSet::empty();
926+
mask.add(SIGUSR1);
925927

926-
assert!(mask.thread_unblock().is_ok());
928+
assert!(mask.thread_unblock().is_ok());
927929

928-
assert!(!SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
930+
assert!(!SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
931+
}).join().unwrap();
929932
}
930933

931934
#[test]
932935
fn test_thread_signal_swap() {
933-
let mut mask = SigSet::empty();
934-
mask.add(SIGUSR1);
935-
mask.thread_block().unwrap();
936+
thread::spawn(|| {
937+
let mut mask = SigSet::empty();
938+
mask.add(SIGUSR1);
939+
mask.thread_block().unwrap();
936940

937-
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
941+
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR1));
938942

939-
let mut mask2 = SigSet::empty();
940-
mask2.add(SIGUSR2);
943+
let mut mask2 = SigSet::empty();
944+
mask2.add(SIGUSR2);
941945

942-
let oldmask = mask2.thread_swap_mask(SigmaskHow::SIG_SETMASK).unwrap();
946+
let oldmask = mask2.thread_swap_mask(SigmaskHow::SIG_SETMASK)
947+
.unwrap();
943948

944-
assert!(oldmask.contains(SIGUSR1));
945-
assert!(!oldmask.contains(SIGUSR2));
949+
assert!(oldmask.contains(SIGUSR1));
950+
assert!(!oldmask.contains(SIGUSR2));
946951

947-
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR2));
952+
assert!(SigSet::thread_get_mask().unwrap().contains(SIGUSR2));
953+
}).join().unwrap();
948954
}
949955

950956
#[test]
951957
fn test_sigaction() {
952958
use libc;
959+
thread::spawn(|| {
960+
extern fn test_sigaction_handler(_: libc::c_int) {}
961+
extern fn test_sigaction_action(_: libc::c_int,
962+
_: *mut libc::siginfo_t, _: *mut libc::c_void) {}
953963

954-
extern fn test_sigaction_handler(_: libc::c_int) {}
955-
extern fn test_sigaction_action(_: libc::c_int,
956-
_: *mut libc::siginfo_t, _: *mut libc::c_void) {}
964+
let handler_sig = SigHandler::Handler(test_sigaction_handler);
957965

958-
let handler_sig = SigHandler::Handler(test_sigaction_handler);
966+
let flags = SaFlags::SA_ONSTACK | SaFlags::SA_RESTART |
967+
SaFlags::SA_SIGINFO;
959968

960-
let flags = SaFlags::SA_ONSTACK | SaFlags::SA_RESTART | SaFlags::SA_SIGINFO;
969+
let mut mask = SigSet::empty();
970+
mask.add(SIGUSR1);
961971

962-
let mut mask = SigSet::empty();
963-
mask.add(SIGUSR1);
972+
let action_sig = SigAction::new(handler_sig, flags, mask);
964973

965-
let action_sig = SigAction::new(handler_sig, flags, mask);
974+
assert_eq!(action_sig.flags(),
975+
SaFlags::SA_ONSTACK | SaFlags::SA_RESTART);
976+
assert_eq!(action_sig.handler(), handler_sig);
966977

967-
assert_eq!(action_sig.flags(), SaFlags::SA_ONSTACK | SaFlags::SA_RESTART);
968-
assert_eq!(action_sig.handler(), handler_sig);
969-
970-
mask = action_sig.mask();
971-
assert!(mask.contains(SIGUSR1));
972-
assert!(!mask.contains(SIGUSR2));
978+
mask = action_sig.mask();
979+
assert!(mask.contains(SIGUSR1));
980+
assert!(!mask.contains(SIGUSR2));
973981

974-
let handler_act = SigHandler::SigAction(test_sigaction_action);
975-
let action_act = SigAction::new(handler_act, flags, mask);
976-
assert_eq!(action_act.handler(), handler_act);
982+
let handler_act = SigHandler::SigAction(test_sigaction_action);
983+
let action_act = SigAction::new(handler_act, flags, mask);
984+
assert_eq!(action_act.handler(), handler_act);
977985

978-
let action_dfl = SigAction::new(SigHandler::SigDfl, flags, mask);
979-
assert_eq!(action_dfl.handler(), SigHandler::SigDfl);
986+
let action_dfl = SigAction::new(SigHandler::SigDfl, flags, mask);
987+
assert_eq!(action_dfl.handler(), SigHandler::SigDfl);
980988

981-
let action_ign = SigAction::new(SigHandler::SigIgn, flags, mask);
982-
assert_eq!(action_ign.handler(), SigHandler::SigIgn);
989+
let action_ign = SigAction::new(SigHandler::SigIgn, flags, mask);
990+
assert_eq!(action_ign.handler(), SigHandler::SigIgn);
991+
}).join().unwrap();
983992
}
984993

985-
// TODO(#251): Re-enable after figuring out flakiness.
986-
#[cfg(not(any(target_os = "macos", target_os = "ios")))]
987994
#[test]
988995
fn test_sigwait() {
989-
let mut mask = SigSet::empty();
990-
mask.add(SIGUSR1);
991-
mask.add(SIGUSR2);
992-
mask.thread_block().unwrap();
993-
994-
raise(SIGUSR1).unwrap();
995-
assert_eq!(mask.wait().unwrap(), SIGUSR1);
996+
thread::spawn(|| {
997+
let mut mask = SigSet::empty();
998+
mask.add(SIGUSR1);
999+
mask.add(SIGUSR2);
1000+
mask.thread_block().unwrap();
1001+
1002+
raise(SIGUSR1).unwrap();
1003+
assert_eq!(mask.wait().unwrap(), SIGUSR1);
1004+
}).join().unwrap();
9961005
}
9971006
}

src/unistd.rs

+5
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,11 @@ pub fn execveat(dirfd: RawFd, pathname: &CString, args: &[CString],
828828
/// descriptors will remain identical after daemonizing.
829829
/// * `noclose = false`: The process' stdin, stdout, and stderr will point to
830830
/// `/dev/null` after daemonizing.
831+
#[cfg_attr(any(target_os = "macos", target_os = "ios"), deprecated(
832+
since="0.14.0",
833+
note="Deprecated in MacOSX 10.5"
834+
))]
835+
#[cfg_attr(any(target_os = "macos", target_os = "ios"), allow(deprecated))]
831836
pub fn daemon(nochdir: bool, noclose: bool) -> Result<()> {
832837
let res = unsafe { libc::daemon(nochdir as c_int, noclose as c_int) };
833838
Errno::result(res).map(drop)

0 commit comments

Comments
 (0)