self.assertIn(repr(error_data), str(e.exception))
-
+ @unittest.skipIf(not os.path.exists('/proc/self/status'),
+ "need /proc/self/status")
def test_restore_signals(self):
- # Code coverage for both values of restore_signals to make sure it
- # at least does not blow up.
- # A test for behavior would be complex. Contributions welcome.
- subprocess.call([sys.executable, "-c", ""], restore_signals=True)
- subprocess.call([sys.executable, "-c", ""], restore_signals=False)
+ # Blindly assume that cat exists on systems with /proc/self/status...
+ default_proc_status = subprocess.check_output(
+ ['cat', '/proc/self/status'],
+ restore_signals=False)
+ for line in default_proc_status.splitlines():
+ if line.startswith(b'SigIgn'):
+ default_sig_ign_mask = line
+ break
+ else:
+ self.skipTest("SigIgn not found in /proc/self/status.")
+ restored_proc_status = subprocess.check_output(
+ ['cat', '/proc/self/status'],
+ restore_signals=True)
+ for line in restored_proc_status.splitlines():
+ if line.startswith(b'SigIgn'):
+ restored_sig_ign_mask = line
+ break
+ self.assertNotEqual(default_sig_ign_mask, restored_sig_ign_mask,
+ msg="restore_signals=True should've unblocked "
+ "SIGPIPE and friends.")
def test_start_new_session(self):
# For code coverage of calling setsid(). We don't care if we get an