From 97e1241975b1ed746640112605fe7f29f93ced08 Mon Sep 17 00:00:00 2001
From: Victor Stinner <vstinner@python.org>
Date: Tue, 22 Aug 2023 19:29:30 +0200
Subject: [PATCH] gh-108303: Add Lib/test/test_cppext/ sub-directory

* Move test_cppext to its own directory
* Rename setup_testcppext.py to setup.py
* Rename _testcppext.cpp to extension.cpp
* The source (extension.cpp) is now also copied by the test.
---
 Lib/test/{test_cppext.py => test_cppext/__init__.py}    | 8 ++++----
 Lib/test/{_testcppext.cpp => test_cppext/extension.cpp} | 2 ++
 Lib/test/{setup_testcppext.py => test_cppext/setup.py}  | 3 +--
 Makefile.pre.in                                         | 1 +
 4 files changed, 8 insertions(+), 6 deletions(-)
 rename Lib/test/{test_cppext.py => test_cppext/__init__.py} (91%)
 rename Lib/test/{_testcppext.cpp => test_cppext/extension.cpp} (99%)
 rename Lib/test/{setup_testcppext.py => test_cppext/setup.py} (93%)

diff --git a/Lib/test/test_cppext.py b/Lib/test/test_cppext/__init__.py
similarity index 91%
rename from Lib/test/test_cppext.py
rename to Lib/test/test_cppext/__init__.py
index 7a143f44640137..8adff91c38efcf 100644
--- a/Lib/test/test_cppext.py
+++ b/Lib/test/test_cppext/__init__.py
@@ -10,9 +10,8 @@
 
 
 MS_WINDOWS = (sys.platform == 'win32')
-
-
-SETUP_TESTCPPEXT = support.findfile('setup_testcppext.py')
+SOURCE = os.path.join(os.path.dirname(__file__), 'extension.cpp')
+SETUP = os.path.join(os.path.dirname(__file__), 'setup.py')
 
 
 @support.requires_subprocess()
@@ -41,7 +40,8 @@ def check_build(self, std_cpp03, extension_name):
     def _check_build(self, std_cpp03, extension_name, python_exe):
         pkg_dir = 'pkg'
         os.mkdir(pkg_dir)
-        shutil.copy(SETUP_TESTCPPEXT, os.path.join(pkg_dir, "setup.py"))
+        shutil.copy(SETUP, os.path.join(pkg_dir, os.path.basename(SETUP)))
+        shutil.copy(SOURCE, os.path.join(pkg_dir, os.path.basename(SOURCE)))
 
         def run_cmd(operation, cmd):
             env = os.environ.copy()
diff --git a/Lib/test/_testcppext.cpp b/Lib/test/test_cppext/extension.cpp
similarity index 99%
rename from Lib/test/_testcppext.cpp
rename to Lib/test/test_cppext/extension.cpp
index 82b471312dd2b9..90669b10cb2c6d 100644
--- a/Lib/test/_testcppext.cpp
+++ b/Lib/test/test_cppext/extension.cpp
@@ -1,5 +1,7 @@
 // gh-91321: Very basic C++ test extension to check that the Python C API is
 // compatible with C++ and does not emit C++ compiler warnings.
+//
+// The code is only built, not executed.
 
 // Always enable assertions
 #undef NDEBUG
diff --git a/Lib/test/setup_testcppext.py b/Lib/test/test_cppext/setup.py
similarity index 93%
rename from Lib/test/setup_testcppext.py
rename to Lib/test/test_cppext/setup.py
index 22fe750085fd70..6867094a420436 100644
--- a/Lib/test/setup_testcppext.py
+++ b/Lib/test/test_cppext/setup.py
@@ -2,7 +2,6 @@
 # compatible with C++ and does not emit C++ compiler warnings.
 import os
 import sys
-from test import support
 
 from setuptools import setup, Extension
 
@@ -10,7 +9,7 @@
 MS_WINDOWS = (sys.platform == 'win32')
 
 
-SOURCE = support.findfile('_testcppext.cpp')
+SOURCE = 'extension.cpp'
 if not MS_WINDOWS:
     # C++ compiler flags for GCC and clang
     CPPFLAGS = [
diff --git a/Makefile.pre.in b/Makefile.pre.in
index beccab45a235a5..d66764e6165409 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -2156,6 +2156,7 @@ TESTSUBDIRS=	idlelib/idle_test \
 		test/support/_hypothesis_stubs \
 		test/test_asyncio \
 		test/test_capi \
+		test/test_cppext \
 		test/test_ctypes \
 		test/test_email \
 		test/test_email/data \