summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-07-05 09:42:47 (GMT)
committerGitHub <noreply@github.com>2023-07-05 09:42:47 (GMT)
commit637102980d12e5ff99b69ddffd5f05ecfe0adeb6 (patch)
tree6f6e89e72840ad97fa401bf6f4863c2e2b6a46c6 /Lib
parent00c522a81c726f3a15b16ae67bba4840431afdaf (diff)
downloadcpython-637102980d12e5ff99b69ddffd5f05ecfe0adeb6.zip
cpython-637102980d12e5ff99b69ddffd5f05ecfe0adeb6.tar.gz
cpython-637102980d12e5ff99b69ddffd5f05ecfe0adeb6.tar.bz2
[3.12] gh-100238: Use setuptools in peg-generator and reenable tests (GH-104798) (#105135)
(cherry picked from commit afa759fb800be416f69e3e9c9b3efe68006316f5) Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/support/__init__.py7
-rw-r--r--Lib/test/test_peg_generator/__init__.py3
-rw-r--r--Lib/test/test_peg_generator/test_c_parser.py14
-rw-r--r--Lib/test/test_peg_generator/test_pegen.py2
4 files changed, 18 insertions, 8 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index c59508b..3f1cc3a 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -1868,15 +1868,16 @@ def missing_compiler_executable(cmd_names=[]):
missing.
"""
- # TODO (PEP 632): alternate check without using distutils
- from distutils import ccompiler, sysconfig, spawn, errors
+ from setuptools._distutils import ccompiler, sysconfig, spawn
+ from setuptools import errors
+
compiler = ccompiler.new_compiler()
sysconfig.customize_compiler(compiler)
if compiler.compiler_type == "msvc":
# MSVC has no executables, so check whether initialization succeeds
try:
compiler.initialize()
- except errors.DistutilsPlatformError:
+ except errors.PlatformError:
return "msvc"
for name in compiler.executables:
if cmd_names and name not in cmd_names:
diff --git a/Lib/test/test_peg_generator/__init__.py b/Lib/test/test_peg_generator/__init__.py
index 7c402c3..77f72fc 100644
--- a/Lib/test/test_peg_generator/__init__.py
+++ b/Lib/test/test_peg_generator/__init__.py
@@ -3,9 +3,6 @@ import unittest
from test import support
from test.support import load_package_tests
-# TODO: gh-92584: peg_generator uses distutils which was removed in Python 3.12
-raise unittest.SkipTest("distutils has been removed in Python 3.12")
-
if support.check_sanitizer(address=True, memory=True):
# bpo-46633: Skip the test because it is too slow when Python is built
diff --git a/Lib/test/test_peg_generator/test_c_parser.py b/Lib/test/test_peg_generator/test_c_parser.py
index d34ffef..af39fae 100644
--- a/Lib/test/test_peg_generator/test_c_parser.py
+++ b/Lib/test/test_peg_generator/test_c_parser.py
@@ -1,3 +1,5 @@
+import contextlib
+import subprocess
import sysconfig
import textwrap
import unittest
@@ -8,7 +10,7 @@ from pathlib import Path
from test import test_tools
from test import support
-from test.support import os_helper
+from test.support import os_helper, import_helper
from test.support.script_helper import assert_python_ok
_py_cflags_nodist = sysconfig.get_config_var("PY_CFLAGS_NODIST")
@@ -88,6 +90,16 @@ class TestCParser(unittest.TestCase):
cls.library_dir = tempfile.mkdtemp(dir=cls.tmp_base)
cls.addClassCleanup(shutil.rmtree, cls.library_dir)
+ with contextlib.ExitStack() as stack:
+ python_exe = stack.enter_context(support.setup_venv_with_pip_setuptools_wheel("venv"))
+ sitepackages = subprocess.check_output(
+ [python_exe, "-c", "import sysconfig; print(sysconfig.get_path('platlib'))"],
+ text=True,
+ ).strip()
+ stack.enter_context(import_helper.DirsOnSysPath(sitepackages))
+ cls.addClassCleanup(stack.pop_all().close)
+
+ @support.requires_venv_with_pip()
def setUp(self):
self._backup_config_vars = dict(sysconfig._CONFIG_VARS)
cmd = support.missing_compiler_executable()
diff --git a/Lib/test/test_peg_generator/test_pegen.py b/Lib/test/test_peg_generator/test_pegen.py
index 30e992e..d92da7b 100644
--- a/Lib/test/test_peg_generator/test_pegen.py
+++ b/Lib/test/test_peg_generator/test_pegen.py
@@ -794,7 +794,7 @@ class TestPegen(unittest.TestCase):
start:
| "number" n=NUMBER { eval(n.string) }
| "string" n=STRING { n.string }
- | SOFT_KEYWORD l=NAME n=(NUMBER | NAME | STRING) { f"{l.string} = {n.string}"}
+ | SOFT_KEYWORD l=NAME n=(NUMBER | NAME | STRING) { l.string + " = " + n.string }
"""
parser_class = make_parser(grammar)
self.assertEqual(parse_string("number 1", parser_class), 1)