diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2012-05-21 13:03:30 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2012-05-21 13:03:30 (GMT) |
commit | 1d5ccdb24db4581a677e1db84b8a0f356094740f (patch) | |
tree | 36bebc6f1d5a3ec7cdf5b8b9b87a8bc0563ac52e | |
parent | 3267a30de12724971bd7e7b9262e19c1d9b2becd (diff) | |
download | cpython-1d5ccdb24db4581a677e1db84b8a0f356094740f.zip cpython-1d5ccdb24db4581a677e1db84b8a0f356094740f.tar.gz cpython-1d5ccdb24db4581a677e1db84b8a0f356094740f.tar.bz2 |
Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
-rw-r--r-- | Lib/test/test_cmd_line_script.py | 19 | ||||
-rw-r--r-- | Lib/test/test_raise.py | 53 |
2 files changed, 20 insertions, 52 deletions
diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index 155aafc..83aa163 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -7,6 +7,7 @@ import os import os.path import py_compile +import textwrap from test import support from test.script_helper import ( make_pkg, make_script, make_zip_pkg, make_zip_script, @@ -286,6 +287,24 @@ class CmdLineTest(unittest.TestCase): self._check_output(script_name, rc, out, script_name, script_name, '', '') + def test_pep_409_verbiage(self): + # Make sure PEP 409 syntax properly suppresses + # the context of an exception + script = textwrap.dedent("""\ + try: + raise ValueError + except: + raise NameError from None + """) + with temp_dir() as script_dir: + script_name = _make_test_script(script_dir, 'script', script) + exitcode, stdout, stderr = assert_python_failure(script_name) + text = stderr.decode('ascii').split('\n') + self.assertEqual(len(text), 4) + self.assertTrue(text[0].startswith('Traceback')) + self.assertTrue(text[1].startswith(' File ')) + self.assertTrue(text[3].startswith('NameError')) + def test_main(): support.run_unittest(CmdLineTest) support.reap_children() diff --git a/Lib/test/test_raise.py b/Lib/test/test_raise.py index b169867..be5c1c6 100644 --- a/Lib/test/test_raise.py +++ b/Lib/test/test_raise.py @@ -3,27 +3,13 @@ """Tests for the raise statement.""" -from test import support, script_helper +from test import support import re import sys import types import unittest -try: - from resource import setrlimit, RLIMIT_CORE, error as resource_error -except ImportError: - prepare_subprocess = None -else: - def prepare_subprocess(): - # don't create core file - try: - setrlimit(RLIMIT_CORE, (0, 0)) - except (ValueError, resource_error): - pass - - - def get_tb(): try: raise OSError() @@ -224,43 +210,6 @@ class TestCause(unittest.TestCase): class TestTraceback(unittest.TestCase): - def get_output(self, code, filename=None): - """ - Run the specified code in Python (in a new child process) and read the - output from the standard error or from a file (if filename is set). - Return the output lines as a list. - """ - options = {} - if prepare_subprocess: - options['preexec_fn'] = prepare_subprocess - process = script_helper.spawn_python('-c', code, **options) - stdout, stderr = process.communicate() - exitcode = process.wait() - output = support.strip_python_stderr(stdout) - output = output.decode('ascii', 'backslashreplace') - if filename: - self.assertEqual(output, '') - with open(filename, "rb") as fp: - output = fp.read() - output = output.decode('ascii', 'backslashreplace') - output = re.sub('Current thread 0x[0-9a-f]+', - 'Current thread XXX', - output) - return output.splitlines(), exitcode - - def test_traceback_verbiage(self): - code = """ -try: - raise ValueError -except: - raise NameError from None -""" - text, exitcode = self.get_output(code) - self.assertEqual(len(text), 3) - self.assertTrue(text[0].startswith('Traceback')) - self.assertTrue(text[1].startswith(' File ')) - self.assertTrue(text[2].startswith('NameError')) - def test_sets_traceback(self): try: raise IndexError() |