def test_after_exception(self): """Test setting, getting state after exception in threads """ state['a'] = 1 buf_out = StringIO() buf_err = StringIO() try: with stdout_err_redirector(buf_out, buf_err): with thread_state_context(): def worker(): """thread worker function""" raise RuntimeError threads = [] for _ in range(20): thread = threading.Thread(target=worker) thread.start() threads.append(thread) for thread in threads: thread.join() raise RuntimeError except RuntimeError: pass self.assertEqual(state['a'], 1)
def test_after_exception(self): """Test setting, getting state after exception in threads """ state['a'] = 1 buf_out = StringIO() buf_err = StringIO() try: with stdout_err_redirector(buf_out, buf_err): with thread_state_context(): def worker(): """thread worker function""" raise RuntimeError threads = [] for _ in range(20): thread = threading.Thread(target=worker) thread.start() threads.append(thread) for thread in threads: thread.join() raise RuntimeError except RuntimeError: pass self.assertEqual(state['a'], 1)
def test_captures_stdout_stderr(self): """Test capturing stdout and stderr from print """ message1 = "This should be captured on stdout..." message2 = "And this should be captured on stderr..." buf_out = io.StringIO() buf_err = io.StringIO() with stdout_err_redirector(buf_out, buf_err): print(message1) print(message2, file=sys.stderr) self.assertEqual(buf_out.getvalue(), message1 + '\n') self.assertEqual(buf_err.getvalue(), message2 + '\n')
def test_delegating_exception(self): """Test delegating a call from the same process with an exception """ called = [0] _buf_out = StringIO() buf_err = StringIO() with stdout_err_redirector(_buf_out, buf_err): def target(): """Target function""" called[0] += 1 raise RuntimeError() delegated = DelegateCall(target) self.assertEqual(called[0], 0) delegated() delegated.join() self.assertEqual(called[0], 1) self.assertRegexpMatches(buf_err.getvalue(), 'RuntimeError')
def test_delegating_exception(self): """Test delegating a call from the same process with an exception """ called = [0] _buf_out = StringIO() buf_err = StringIO() with stdout_err_redirector(_buf_out, buf_err): def target(): """Target function""" called[0] += 1 raise RuntimeError() delegated = DelegateCall(target) self.assertEqual(called[0], 0) delegated() delegated.join() self.assertEqual(called[0], 1) self.assertRegexpMatches(buf_err.getvalue(), 'RuntimeError')