diff -r 3328e388cb28 Lib/test/test_cmd_line_script.py --- a/Lib/test/test_cmd_line_script.py Tue Feb 28 08:06:01 2012 +0000 +++ b/Lib/test/test_cmd_line_script.py Tue Feb 28 07:17:29 2012 -0800 @@ -6,6 +6,7 @@ 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, @@ -274,6 +275,22 @@ self._check_output(script_name, rc, out, script_name, script_name, '', '') + def test_traceback_verbiage(self): + # Make sure PEP 409 syntax properly suppresses + # the context of an exception + testfn = make_script('', support.TESTFN, textwrap.dedent("""\ + try: + raise ValueError + except: + raise NameError from None + """)) + exitcode, stdout, stderr = assert_python_failure(testfn) + 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 -r 3328e388cb28 Lib/test/test_raise.py --- a/Lib/test/test_raise.py Tue Feb 28 08:06:01 2012 +0000 +++ b/Lib/test/test_raise.py Tue Feb 28 07:17:29 2012 -0800 @@ -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() @@ -221,43 +207,6 @@ 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()