]> granicus.if.org Git - python/commitdiff
Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)
authorNick Coghlan <ncoghlan@gmail.com>
Mon, 21 May 2012 13:03:30 +0000 (23:03 +1000)
committerNick Coghlan <ncoghlan@gmail.com>
Mon, 21 May 2012 13:03:30 +0000 (23:03 +1000)
Lib/test/test_cmd_line_script.py
Lib/test/test_raise.py

index 155aafc7eb94501b654553eecd1809e0ba7560c7..83aa1633566babb11a8756776ff256182d773f54 100644 (file)
@@ -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()
index b169867e1f1b95aa20392c0f7244418245358a8d..be5c1c6cc8cba3978a73f754fb59abd1ce5fb842 100644 (file)
@@ -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()