Nick Coghlan avatar Nick Coghlan committed 02f1357 Draft

Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman)

Comments (0)

Files changed (2)

Lib/test/test_cmd_line_script.py

 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,
                     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()

Lib/test/test_raise.py

 
 """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()
 
 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()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.