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')
Example #5
0
    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')