Issue #9517: Move script_helper to the support package.

Patch by Christie Wilson.
diff --git a/Lib/test/script_helper.py b/Lib/test/support/script_helper.py
similarity index 100%
rename from Lib/test/script_helper.py
rename to Lib/test/support/script_helper.py
diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
index 9e7c50c..4d36f23 100644
--- a/Lib/test/test_asyncio/test_base_events.py
+++ b/Lib/test/test_asyncio/test_base_events.py
@@ -16,7 +16,7 @@
 from asyncio import test_utils
 try:
     from test import support
-    from test.script_helper import assert_python_ok
+    from test.support.script_helper import assert_python_ok
 except ImportError:
     from asyncio import test_support as support
     from asyncio.test_support import assert_python_ok
diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py
index ab61462..e47a668 100644
--- a/Lib/test/test_asyncio/test_tasks.py
+++ b/Lib/test/test_asyncio/test_tasks.py
@@ -15,7 +15,7 @@
 from asyncio import test_utils
 try:
     from test import support
-    from test.script_helper import assert_python_ok
+    from test.support.script_helper import assert_python_ok
 except ImportError:
     from asyncio import test_support as support
     from asyncio.test_support import assert_python_ok
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 6166da5..cdbb2cb 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -16,7 +16,7 @@
 import warnings
 from operator import neg
 from test.support import TESTFN, unlink,  run_unittest, check_warnings
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 try:
     import pty, signal
 except ImportError:
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 9193857..80ed632 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -2,7 +2,7 @@
 import unittest
 
 from test import support
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 import time
 import locale
 import sys
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 367feaa..eae3add 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -11,7 +11,7 @@
 import unittest
 from test import support
 from test.support import MISSING_C_DOCSTRINGS
-from test.script_helper import assert_python_failure
+from test.support.script_helper import assert_python_failure
 try:
     import _posixsubprocess
 except ImportError:
diff --git a/Lib/test/test_cgitb.py b/Lib/test/test_cgitb.py
index cd0ab90..a87a422 100644
--- a/Lib/test/test_cgitb.py
+++ b/Lib/test/test_cgitb.py
@@ -1,4 +1,5 @@
-from test.script_helper import assert_python_failure, temp_dir
+from test.support import temp_dir
+from test.support.script_helper import assert_python_failure
 import unittest
 import sys
 import cgitb
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index 6ba929c..0feb63f 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -8,8 +8,8 @@
 import sys
 import subprocess
 import tempfile
-from test import script_helper
-from test.script_helper import (spawn_python, kill_python, assert_python_ok,
+from test.support import script_helper
+from test.support.script_helper import (spawn_python, kill_python, assert_python_ok,
     assert_python_failure)
 
 
@@ -59,7 +59,7 @@
 
     def test_xoptions(self):
         def get_xoptions(*args):
-            # use subprocess module directly because test.script_helper adds
+            # use subprocess module directly because test.support.script_helper adds
             # "-X faulthandler" to the command line
             args = (sys.executable, '-E') + args
             args += ('-c', 'import sys; print(sys._xoptions)')
diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py
index 7350164..fda3e62 100644
--- a/Lib/test/test_cmd_line_script.py
+++ b/Lib/test/test_cmd_line_script.py
@@ -13,10 +13,9 @@
 
 import textwrap
 from test import support
-from test.script_helper import (
+from test.support.script_helper import (
     make_pkg, make_script, make_zip_pkg, make_zip_script,
-    assert_python_ok, assert_python_failure, temp_dir,
-    spawn_python, kill_python)
+    assert_python_ok, assert_python_failure, spawn_python, kill_python)
 
 verbose = support.verbose
 
@@ -223,14 +222,14 @@
         self.check_repl_stderr_flush(True)
 
     def test_basic_script(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'script')
             self._check_script(script_name, script_name, script_name,
                                script_dir, None,
                                importlib.machinery.SourceFileLoader)
 
     def test_script_compiled(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'script')
             py_compile.compile(script_name, doraise=True)
             os.remove(script_name)
@@ -240,14 +239,14 @@
                                importlib.machinery.SourcelessFileLoader)
 
     def test_directory(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__')
             self._check_script(script_dir, script_name, script_dir,
                                script_dir, '',
                                importlib.machinery.SourceFileLoader)
 
     def test_directory_compiled(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__')
             py_compile.compile(script_name, doraise=True)
             os.remove(script_name)
@@ -257,19 +256,19 @@
                                importlib.machinery.SourcelessFileLoader)
 
     def test_directory_error(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             msg = "can't find '__main__' module in %r" % script_dir
             self._check_import_error(script_dir, msg)
 
     def test_zipfile(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__')
             zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
             self._check_script(zip_name, run_name, zip_name, zip_name, '',
                                zipimport.zipimporter)
 
     def test_zipfile_compiled(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__')
             compiled_name = py_compile.compile(script_name, doraise=True)
             zip_name, run_name = make_zip_script(script_dir, 'test_zip', compiled_name)
@@ -277,14 +276,14 @@
                                zipimport.zipimporter)
 
     def test_zipfile_error(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'not_main')
             zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
             msg = "can't find '__main__' module in %r" % zip_name
             self._check_import_error(zip_name, msg)
 
     def test_module_in_package(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, 'script')
@@ -294,14 +293,14 @@
                                importlib.machinery.SourceFileLoader)
 
     def test_module_in_package_in_zipfile(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script')
             launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script', zip_name)
             self._check_script(launch_name, run_name, run_name,
                                zip_name, 'test_pkg', zipimport.zipimporter)
 
     def test_module_in_subpackage_in_zipfile(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script', depth=2)
             launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.test_pkg.script', zip_name)
             self._check_script(launch_name, run_name, run_name,
@@ -309,7 +308,7 @@
                                zipimport.zipimporter)
 
     def test_package(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, '__main__')
@@ -319,7 +318,7 @@
                                importlib.machinery.SourceFileLoader)
 
     def test_package_compiled(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, '__main__')
@@ -332,7 +331,7 @@
                                importlib.machinery.SourcelessFileLoader)
 
     def test_package_error(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             msg = ("'test_pkg' is a package and cannot "
@@ -341,7 +340,7 @@
             self._check_import_error(launch_name, msg)
 
     def test_package_recursion(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             main_dir = os.path.join(pkg_dir, '__main__')
@@ -355,7 +354,7 @@
     def test_issue8202(self):
         # Make sure package __init__ modules see "-m" in sys.argv0 while
         # searching for the module to execute
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             with support.change_cwd(path=script_dir):
                 pkg_dir = os.path.join(script_dir, 'test_pkg')
                 make_pkg(pkg_dir, "import sys; print('init_argv0==%r' % sys.argv[0])")
@@ -372,7 +371,7 @@
     def test_issue8202_dash_c_file_ignored(self):
         # Make sure a "-c" file in the current directory
         # does not alter the value of sys.path[0]
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             with support.change_cwd(path=script_dir):
                 with open("-c", "w") as f:
                     f.write("data")
@@ -387,7 +386,7 @@
     def test_issue8202_dash_m_file_ignored(self):
         # Make sure a "-m" file in the current directory
         # does not alter the value of sys.path[0]
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'other')
             with support.change_cwd(path=script_dir):
                 with open("-m", "w") as f:
@@ -402,7 +401,7 @@
         # If a module is invoked with the -m command line flag
         # and results in an error that the return code to the
         # shell is '1'
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             with support.change_cwd(path=script_dir):
                 pkg_dir = os.path.join(script_dir, 'test_pkg')
                 make_pkg(pkg_dir)
@@ -422,7 +421,7 @@
             except:
                 raise NameError from None
             """)
-        with temp_dir() as script_dir:
+        with support.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')
@@ -466,7 +465,7 @@
             if error:
                 sys.exit(error)
             """)
-        with temp_dir() as script_dir:
+        with support.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')
diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py
index 2053304..9479776 100644
--- a/Lib/test/test_compileall.py
+++ b/Lib/test/test_compileall.py
@@ -17,7 +17,8 @@
 except ImportError:
     _have_multiprocessing = False
 
-from test import support, script_helper
+from test import support
+from test.support import script_helper
 
 class CompileallTests(unittest.TestCase):
 
diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index 86802c2..b99740b 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -9,7 +9,7 @@
 # without thread support.
 test.support.import_module('threading')
 
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 import os
 import sys
diff --git a/Lib/test/test_crashers.py b/Lib/test/test_crashers.py
index c630c80..58dfd00 100644
--- a/Lib/test/test_crashers.py
+++ b/Lib/test/test_crashers.py
@@ -8,7 +8,7 @@
 import glob
 import os.path
 import test.support
-from test.script_helper import assert_python_failure
+from test.support.script_helper import assert_python_failure
 
 CRASHER_DIR = os.path.join(os.path.dirname(__file__), "crashers")
 CRASHER_FILES = os.path.join(CRASHER_DIR, "*.py")
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index b92c4b5..73b4452 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -2729,8 +2729,8 @@
 simple tests and no errors.  We'll run both the unadorned doctest command, and
 the verbose version, and then check the output:
 
-    >>> from test import script_helper
-    >>> with script_helper.temp_dir() as tmpdir:
+    >>> from test.support import script_helper, temp_dir
+    >>> with temp_dir() as tmpdir:
     ...     fn = os.path.join(tmpdir, 'myfile.doc')
     ...     with open(fn, 'w') as f:
     ...         _ = f.write('This is a very simple test file.\n')
@@ -2780,8 +2780,8 @@
 file ends in '.py', its handling of python module files (as opposed to straight
 text files).
 
-    >>> from test import script_helper
-    >>> with script_helper.temp_dir() as tmpdir:
+    >>> from test.support import script_helper, temp_dir
+    >>> with temp_dir() as tmpdir:
     ...     fn = os.path.join(tmpdir, 'myfile.doc')
     ...     with open(fn, 'w') as f:
     ...         _ = f.write('This is another simple test file.\n')
diff --git a/Lib/test/test_eintr.py b/Lib/test/test_eintr.py
index 8b5f507..111ead3 100644
--- a/Lib/test/test_eintr.py
+++ b/Lib/test/test_eintr.py
@@ -2,7 +2,8 @@
 import signal
 import unittest
 
-from test import script_helper, support
+from test import support
+from test.support import script_helper
 
 
 @unittest.skipUnless(os.name == "posix", "only supported on Unix")
diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
index 530b093..0d86cb5 100644
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -6,8 +6,8 @@
 import signal
 import subprocess
 import sys
-from test import support, script_helper
-from test.script_helper import assert_python_ok
+from test import support
+from test.support import script_helper
 import tempfile
 import unittest
 from textwrap import dedent
diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py
index 254f64b..1f0867d 100644
--- a/Lib/test/test_gc.py
+++ b/Lib/test/test_gc.py
@@ -1,7 +1,8 @@
 import unittest
 from test.support import (verbose, refcount_test, run_unittest,
-                            strip_python_stderr, cpython_only, start_threads)
-from test.script_helper import assert_python_ok, make_script, temp_dir
+                            strip_python_stderr, cpython_only, start_threads,
+                            temp_dir)
+from test.support.script_helper import assert_python_ok, make_script
 
 import sys
 import time
diff --git a/Lib/test/test_hash.py b/Lib/test/test_hash.py
index f647c6f..aa4efbf 100644
--- a/Lib/test/test_hash.py
+++ b/Lib/test/test_hash.py
@@ -7,7 +7,7 @@
 import os
 import sys
 import unittest
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 from collections import Hashable
 
 IS_64BIT = sys.maxsize > 2**32
diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py
index 9b4cac9..586478f 100644
--- a/Lib/test/test_import/__init__.py
+++ b/Lib/test/test_import/__init__.py
@@ -21,8 +21,9 @@
 from test.support import (
     EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython,
     make_legacy_pyc, rmtree, run_unittest, swap_attr, swap_item, temp_umask,
-    unlink, unload, create_empty_file, cpython_only, TESTFN_UNENCODABLE)
-from test import script_helper
+    unlink, unload, create_empty_file, cpython_only, TESTFN_UNENCODABLE,
+    temp_dir)
+from test.support import script_helper
 
 
 skip_if_dont_write_bytecode = unittest.skipIf(
@@ -45,7 +46,7 @@
     # temporarily clears the module from sys.modules (if any)
     # reverts or removes the module when cleaning up
     name = name or "spam"
-    with script_helper.temp_dir() as tempdir:
+    with temp_dir() as tempdir:
         path = script_helper.make_script(tempdir, name, source)
         old_module = sys.modules.pop(name, None)
         try:
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 9e1f546..43ef755 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -26,7 +26,7 @@
 
 from test.support import run_unittest, TESTFN, DirsOnSysPath, cpython_only
 from test.support import MISSING_C_DOCSTRINGS, cpython_only
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 from test import inspect_fodder as mod
 from test import inspect_fodder2 as mod2
 
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 5b7cfc9..46b896f 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -35,7 +35,7 @@
 from collections import deque, UserList
 from itertools import cycle, count
 from test import support
-from test.script_helper import assert_python_ok, run_python_until_end
+from test.support.script_helper import assert_python_ok, run_python_until_end
 
 import codecs
 import io  # C implementation of io
diff --git a/Lib/test/test_json/test_tool.py b/Lib/test/test_json/test_tool.py
index bd63e2b..15f3736 100644
--- a/Lib/test/test_json/test_tool.py
+++ b/Lib/test/test_json/test_tool.py
@@ -4,7 +4,7 @@
 import unittest
 import subprocess
 from test import support
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 
 class TestTool(unittest.TestCase):
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index c323a59..07aeb83 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -38,7 +38,7 @@
 import struct
 import sys
 import tempfile
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 from test import support
 import textwrap
 import time
diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py
index 270ec7e..48ab0b4 100644
--- a/Lib/test/test_module.py
+++ b/Lib/test/test_module.py
@@ -2,7 +2,7 @@
 import unittest
 import weakref
 from test.support import gc_collect
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 import sys
 ModuleType = type(sys)
diff --git a/Lib/test/test_multiprocessing_main_handling.py b/Lib/test/test_multiprocessing_main_handling.py
index de5f782..52273ea 100644
--- a/Lib/test/test_multiprocessing_main_handling.py
+++ b/Lib/test/test_multiprocessing_main_handling.py
@@ -13,10 +13,9 @@
 import os.path
 import py_compile
 
-from test.script_helper import (
+from test.support.script_helper import (
     make_pkg, make_script, make_zip_pkg, make_zip_script,
-    assert_python_ok, assert_python_failure, temp_dir,
-    spawn_python, kill_python)
+    assert_python_ok, assert_python_failure, spawn_python, kill_python)
 
 # Look up which start methods are available to test
 import multiprocessing
@@ -157,12 +156,12 @@
         self._check_output(script_name, rc, out, err)
 
     def test_basic_script(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'script')
             self._check_script(script_name)
 
     def test_basic_script_no_suffix(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'script',
                                             omit_suffix=True)
             self._check_script(script_name)
@@ -173,7 +172,7 @@
         # a workaround for that case
         # See https://github.com/ipython/ipython/issues/4698
         source = test_source_main_skipped_in_children
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'ipython',
                                             source=source)
             self._check_script(script_name)
@@ -183,7 +182,7 @@
             self._check_script(script_no_suffix)
 
     def test_script_compiled(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, 'script')
             py_compile.compile(script_name, doraise=True)
             os.remove(script_name)
@@ -192,14 +191,14 @@
 
     def test_directory(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__',
                                             source=source)
             self._check_script(script_dir)
 
     def test_directory_compiled(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__',
                                             source=source)
             py_compile.compile(script_name, doraise=True)
@@ -209,7 +208,7 @@
 
     def test_zipfile(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__',
                                             source=source)
             zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
@@ -217,7 +216,7 @@
 
     def test_zipfile_compiled(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             script_name = _make_test_script(script_dir, '__main__',
                                             source=source)
             compiled_name = py_compile.compile(script_name, doraise=True)
@@ -225,7 +224,7 @@
             self._check_script(zip_name)
 
     def test_module_in_package(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, 'check_sibling')
@@ -234,20 +233,20 @@
             self._check_script(launch_name)
 
     def test_module_in_package_in_zipfile(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script')
             launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script', zip_name)
             self._check_script(launch_name)
 
     def test_module_in_subpackage_in_zipfile(self):
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script', depth=2)
             launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.test_pkg.script', zip_name)
             self._check_script(launch_name)
 
     def test_package(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, '__main__',
@@ -257,7 +256,7 @@
 
     def test_package_compiled(self):
         source = self.main_in_children_source
-        with temp_dir() as script_dir:
+        with support.temp_dir() as script_dir:
             pkg_dir = os.path.join(script_dir, 'test_pkg')
             make_pkg(pkg_dir)
             script_name = _make_test_script(pkg_dir, '__main__',
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 70734ab..d2dfcaf 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -64,7 +64,7 @@
 except ImportError:
     INT_MAX = PY_SSIZE_T_MAX = sys.maxsize
 
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 root_in_posix = False
 if hasattr(os, 'geteuid'):
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
index 18f16e3..56b5d95 100644
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -4,7 +4,7 @@
 import operator
 import struct
 from test import support
-from test.script_helper import assert_python_failure
+from test.support.script_helper import assert_python_failure
 
 #
 #  First, we test that we can generate trees from valid source fragments,
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
index 6a967c3..ec5c31b 100644
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -21,7 +21,7 @@
 import textwrap
 from io import StringIO
 from collections import namedtuple
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 from test.support import (
     TESTFN, rmtree,
     reap_children, reap_threads, captured_output, captured_stdout,
diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py
index e2063b1..35330ab 100644
--- a/Lib/test/test_readline.py
+++ b/Lib/test/test_readline.py
@@ -5,7 +5,7 @@
 import tempfile
 import unittest
 from test.support import import_module, unlink
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 # Skip tests if there is no readline module
 readline = import_module('readline')
diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py
index 81caff8..5a799bd 100644
--- a/Lib/test/test_runpy.py
+++ b/Lib/test/test_runpy.py
@@ -9,9 +9,9 @@
 import py_compile
 from test.support import (
     forget, make_legacy_pyc, unload, verbose, no_tracing,
-    create_empty_file)
-from test.script_helper import (
-    make_pkg, make_script, make_zip_pkg, make_zip_script, temp_dir)
+    create_empty_file, temp_dir)
+from test.support.script_helper import (
+    make_pkg, make_script, make_zip_pkg, make_zip_script)
 
 
 import runpy
diff --git a/Lib/test/test_script_helper.py b/Lib/test/test_script_helper.py
index 8694530..a7680f8 100644
--- a/Lib/test/test_script_helper.py
+++ b/Lib/test/test_script_helper.py
@@ -1,8 +1,8 @@
-"""Unittests for test.script_helper.  Who tests the test helper?"""
+"""Unittests for test.support.script_helper.  Who tests the test helper?"""
 
 import subprocess
 import sys
-from test import script_helper
+from test.support import script_helper
 import unittest
 from unittest import mock
 
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index a396331..1b80ff0 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -11,7 +11,7 @@
 import subprocess
 import traceback
 import sys, os, time, errno
-from test.script_helper import assert_python_ok, spawn_python
+from test.support.script_helper import assert_python_ok, spawn_python
 try:
     import threading
 except ImportError:
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 7398bdc..9c0229a 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -1,5 +1,5 @@
 import unittest
-from test import script_helper
+from test.support import script_helper
 from test import support
 import subprocess
 import sys
@@ -394,7 +394,7 @@
         python_dir, python_base = self._split_python_path()
         abs_python = os.path.join(python_dir, python_base)
         rel_python = os.path.join(os.curdir, python_base)
-        with script_helper.temp_dir() as wrong_dir:
+        with support.temp_dir() as wrong_dir:
             # Before calling with an absolute path, confirm that using a
             # relative path fails.
             self.assertRaises(FileNotFoundError, subprocess.Popen,
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index dc241a6..6d2763b 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -1,5 +1,5 @@
 import unittest, test.support
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 import sys, io, os
 import struct
 import subprocess
@@ -708,7 +708,7 @@
     @test.support.cpython_only
     def test_debugmallocstats(self):
         # Test sys._debugmallocstats()
-        from test.script_helper import assert_python_ok
+        from test.support.script_helper import assert_python_ok
         args = ['-c', 'import sys; sys._debugmallocstats()']
         ret, out, err = assert_python_ok(*args)
         self.assertIn(b"free PyDictObjects", err)
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 483c587..6c20634 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -8,7 +8,8 @@
 import unittest.mock
 import tarfile
 
-from test import support, script_helper
+from test import support
+from test.support import script_helper
 
 # Check for our compression modules.
 try:
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index 03c0daa..9b7df44 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -12,7 +12,8 @@
 from unittest import mock
 
 import unittest
-from test import support, script_helper
+from test import support
+from test.support import script_helper
 
 
 if hasattr(os, 'stat'):
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 4b75ea6..ddafba2 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -4,7 +4,7 @@
 
 import test.support
 from test.support import verbose, strip_python_stderr, import_module, cpython_only
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 
 import random
 import re
diff --git a/Lib/test/test_tools/test_md5sum.py b/Lib/test/test_tools/test_md5sum.py
index 59ea149..1305295 100644
--- a/Lib/test/test_tools/test_md5sum.py
+++ b/Lib/test/test_tools/test_md5sum.py
@@ -4,7 +4,7 @@
 import sys
 import unittest
 from test import support
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 
 from test.test_tools import scriptsdir, import_tool, skip_if_missing
 
diff --git a/Lib/test/test_tools/test_pindent.py b/Lib/test/test_tools/test_pindent.py
index 14a0aa2..e293bc8 100644
--- a/Lib/test/test_tools/test_pindent.py
+++ b/Lib/test/test_tools/test_pindent.py
@@ -6,7 +6,7 @@
 import subprocess
 import textwrap
 from test import support
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 from test.test_tools import scriptsdir, skip_if_missing
 
diff --git a/Lib/test/test_tools/test_reindent.py b/Lib/test/test_tools/test_reindent.py
index 45cebf7..d7c20e1 100644
--- a/Lib/test/test_tools/test_reindent.py
+++ b/Lib/test/test_tools/test_reindent.py
@@ -6,7 +6,7 @@
 
 import os
 import unittest
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 
 from test.test_tools import scriptsdir, skip_if_missing
 
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index 9364695..e8c4d74 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -8,7 +8,7 @@
 import re
 from test import support
 from test.support import TESTFN, Error, captured_output, unlink, cpython_only
-from test.script_helper import assert_python_ok
+from test.support.script_helper import assert_python_ok
 import textwrap
 
 import traceback
diff --git a/Lib/test/test_tracemalloc.py b/Lib/test/test_tracemalloc.py
index 9382c48..5ddc879 100644
--- a/Lib/test/test_tracemalloc.py
+++ b/Lib/test/test_tracemalloc.py
@@ -4,8 +4,9 @@
 import tracemalloc
 import unittest
 from unittest.mock import patch
-from test.script_helper import assert_python_ok, assert_python_failure
-from test import script_helper, support
+from test.support.script_helper import (assert_python_ok, assert_python_failure,
+                                        interpreter_requires_environment)
+from test import support
 try:
     import threading
 except ImportError:
@@ -751,7 +752,7 @@
         stdout = stdout.rstrip()
         self.assertEqual(stdout, b'False')
 
-    @unittest.skipIf(script_helper.interpreter_requires_environment(),
+    @unittest.skipIf(interpreter_requires_environment(),
                      'Cannot run -E tests when PYTHON env vars are required.')
     def test_env_var_ignored_with_E(self):
         """PYTHON* environment variables must be ignored when -E is present."""
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index bda1046..c7d2e5c 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -5,7 +5,7 @@
 import sys
 import unittest
 from test import support
-from test.script_helper import assert_python_ok, assert_python_failure
+from test.support.script_helper import assert_python_ok, assert_python_failure
 
 from test import warning_tests
 
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index e735376..afd0b62 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -7,7 +7,8 @@
 import contextlib
 import copy
 
-from test import support, script_helper
+from test import support
+from test.support import script_helper
 
 # Used in ReferencesTestCase.test_ref_created_during_del() .
 ref_from_del = None
diff --git a/Lib/test/test_zipimport_support.py b/Lib/test/test_zipimport_support.py
index ed4c242..5913622 100644
--- a/Lib/test/test_zipimport_support.py
+++ b/Lib/test/test_zipimport_support.py
@@ -14,8 +14,8 @@
 import linecache
 import pdb
 import unittest
-from test.script_helper import (spawn_python, kill_python, assert_python_ok,
-                                temp_dir, make_script, make_zip_script)
+from test.support.script_helper import (spawn_python, kill_python, assert_python_ok,
+                                        make_script, make_zip_script)
 
 verbose = test.support.verbose
 
@@ -78,7 +78,7 @@
 
     def test_inspect_getsource_issue4223(self):
         test_src = "def foo(): pass\n"
-        with temp_dir() as d:
+        with test.support.temp_dir() as d:
             init_name = make_script(d, '__init__', test_src)
             name_in_zip = os.path.join('zip_pkg',
                                        os.path.basename(init_name))
@@ -118,7 +118,7 @@
             mod_name = mod_name.replace("sample_", "sample_zipped_")
             sample_sources[mod_name] = src
 
-        with temp_dir() as d:
+        with test.support.temp_dir() as d:
             script_name = make_script(d, 'test_zipped_doctest',
                                             test_src)
             zip_name, run_name = make_zip_script(d, 'test_zip',
@@ -195,7 +195,7 @@
                     doctest.testmod()
                     """)
         pattern = 'File "%s", line 2, in %s'
-        with temp_dir() as d:
+        with test.support.temp_dir() as d:
             script_name = make_script(d, 'script', test_src)
             rc, out, err = assert_python_ok(script_name)
             expected = pattern % (script_name, "__main__.Test")
@@ -222,7 +222,7 @@
                     import pdb
                     pdb.Pdb(nosigint=True).runcall(f)
                     """)
-        with temp_dir() as d:
+        with test.support.temp_dir() as d:
             script_name = make_script(d, 'script', test_src)
             p = spawn_python(script_name)
             p.stdin.write(b'l\n')