Kaydet (Commit) da43ee43 authored tarafından Victor Stinner's avatar Victor Stinner

Issue #25694: Fix test_regrtest for installed Python

üst dc096555
...@@ -14,6 +14,7 @@ import platform ...@@ -14,6 +14,7 @@ import platform
import re import re
import subprocess import subprocess
import sys import sys
import sysconfig
import textwrap import textwrap
import unittest import unittest
from test import libregrtest from test import libregrtest
...@@ -306,7 +307,7 @@ class BaseTestCase(unittest.TestCase): ...@@ -306,7 +307,7 @@ class BaseTestCase(unittest.TestCase):
TESTNAME_REGEX = r'test_[a-z0-9_]+' TESTNAME_REGEX = r'test_[a-z0-9_]+'
def setUp(self): def setUp(self):
self.testdir = os.path.join(ROOT_DIR, 'Lib', 'test') self.testdir = os.path.realpath(os.path.dirname(__file__))
# When test_regrtest is interrupted by CTRL+c, it can leave # When test_regrtest is interrupted by CTRL+c, it can leave
# temporary test files # temporary test files
...@@ -330,8 +331,13 @@ class BaseTestCase(unittest.TestCase): ...@@ -330,8 +331,13 @@ class BaseTestCase(unittest.TestCase):
self.addCleanup(support.unlink, path) self.addCleanup(support.unlink, path)
# Use 'x' mode to ensure that we do not override existing tests # Use 'x' mode to ensure that we do not override existing tests
with open(path, 'x', encoding='utf-8') as fp: try:
fp.write(code) with open(path, 'x', encoding='utf-8') as fp:
fp.write(code)
except PermissionError as exc:
if not sysconfig.is_python_build():
self.skipTest("cannot write %s: %s" % (path, exc))
raise
return name return name
def regex_search(self, regex, output): def regex_search(self, regex, output):
...@@ -471,7 +477,7 @@ class ProgramsTestCase(BaseTestCase): ...@@ -471,7 +477,7 @@ class ProgramsTestCase(BaseTestCase):
def test_script_regrtest(self): def test_script_regrtest(self):
# Lib/test/regrtest.py # Lib/test/regrtest.py
script = os.path.join(ROOT_DIR, 'Lib', 'test', 'regrtest.py') script = os.path.join(self.testdir, 'regrtest.py')
args = [*self.python_args, script, *self.regrtest_args, *self.tests] args = [*self.python_args, script, *self.regrtest_args, *self.tests]
self.run_tests(args) self.run_tests(args)
...@@ -503,10 +509,12 @@ class ProgramsTestCase(BaseTestCase): ...@@ -503,10 +509,12 @@ class ProgramsTestCase(BaseTestCase):
def test_script_autotest(self): def test_script_autotest(self):
# Lib/test/autotest.py # Lib/test/autotest.py
script = os.path.join(ROOT_DIR, 'Lib', 'test', 'autotest.py') script = os.path.join(self.testdir, 'autotest.py')
args = [*self.python_args, script, *self.regrtest_args, *self.tests] args = [*self.python_args, script, *self.regrtest_args, *self.tests]
self.run_tests(args) self.run_tests(args)
@unittest.skipUnless(sysconfig.is_python_build(),
'run_tests.py script is not installed')
def test_tools_script_run_tests(self): def test_tools_script_run_tests(self):
# Tools/scripts/run_tests.py # Tools/scripts/run_tests.py
script = os.path.join(ROOT_DIR, 'Tools', 'scripts', 'run_tests.py') script = os.path.join(ROOT_DIR, 'Tools', 'scripts', 'run_tests.py')
...@@ -516,6 +524,8 @@ class ProgramsTestCase(BaseTestCase): ...@@ -516,6 +524,8 @@ class ProgramsTestCase(BaseTestCase):
proc = self.run_command(args) proc = self.run_command(args)
self.check_output(proc.stdout) self.check_output(proc.stdout)
@unittest.skipUnless(sysconfig.is_python_build(),
'test.bat script is not installed')
@unittest.skipUnless(sys.platform == 'win32', 'Windows only') @unittest.skipUnless(sys.platform == 'win32', 'Windows only')
def test_tools_buildbot_test(self): def test_tools_buildbot_test(self):
# Tools\buildbot\test.bat # Tools\buildbot\test.bat
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment