bpo-40275: Use new test.support helper submodules in tests by shihai1991 · Pull Request #21315 · python/cpython

4 changes: 3 additions & 1 deletion Lib/ctypes/test/__init__.py

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import os
import unittest
from test import support
from test.support import import_helper


# skip tests if _ctypes was not built
ctypes = support.import_module('ctypes')
ctypes = import_helper.import_module('ctypes')
ctypes_symbols = dir(ctypes)

def need_symbol(name):
Expand Down

7 changes: 4 additions & 3 deletions Lib/ctypes/test/test_find.py

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os.path
import sys
import test.support
from test.support import os_helper
from ctypes import *
from ctypes.util import find_library

Expand Down Expand Up @@ -65,8 +66,8 @@ def test_gle(self):
self.gle.gleGetJoinStyle

def test_shell_injection(self):
result = find_library('; echo Hello shell > ' + test.support.TESTFN)
self.assertFalse(os.path.lexists(test.support.TESTFN))
result = find_library('; echo Hello shell > ' + os_helper.TESTFN)
self.assertFalse(os.path.lexists(os_helper.TESTFN))
self.assertIsNone(result)


Expand Down Expand Up @@ -100,7 +101,7 @@ def test_find_on_libpath(self):
# LD_LIBRARY_PATH)
self.assertIsNone(find_library(libname))
# now add the location to LD_LIBRARY_PATH
with test.support.EnvironmentVarGuard() as env:
with os_helper.EnvironmentVarGuard() as env:
KEY = 'LD_LIBRARY_PATH'
if KEY not in env:
v = d
Expand Down

7 changes: 4 additions & 3 deletions Lib/test/test_bytes.py

Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import unittest

import test.support
from test.support import import_helper
import test.string_tests
import test.list_tests
from test.support import bigaddrspacetest, MAX_Py_ssize_t
Expand Down Expand Up @@ -967,7 +968,7 @@ def test_translate(self):
self.assertEqual(c, b'hllo')

def test_sq_item(self):
_testcapi = test.support.import_module('_testcapi')
_testcapi = import_helper.import_module('_testcapi')
obj = self.type2test((42,))
with self.assertRaises(IndexError):
_testcapi.sequence_getitem(obj, -2)
Expand Down Expand Up @@ -1024,8 +1025,8 @@ def __bytes__(self):

# Test PyBytes_FromFormat()
def test_from_format(self):
ctypes = test.support.import_module('ctypes')
_testcapi = test.support.import_module('_testcapi')
ctypes = import_helper.import_module('ctypes')
_testcapi = import_helper.import_module('_testcapi')
from ctypes import pythonapi, py_object
from ctypes import (
c_int, c_uint,
Expand Down

2 changes: 1 addition & 1 deletion Lib/test/test_cgitb.py

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from test.support import temp_dir
from test.support.os_helper import temp_dir
from test.support.script_helper import assert_python_failure
import unittest
import sys
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_ctypes.py

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from test.support import import_module
from test.support.import_helper import import_module


ctypes_test = import_module('ctypes.test')

Expand Down

17 changes: 9 additions & 8 deletions Lib/test/test_dbm.py

Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@

import unittest
import glob
import test.support
from test.support import import_helper
from test.support import os_helper

# Skip tests if dbm module doesn't exist.
dbm = test.support.import_module('dbm')
dbm = import_helper.import_module('dbm')

try:
from dbm import ndbm
except ImportError:
ndbm = None

_fname = test.support.TESTFN
_fname = os_helper.TESTFN

#
# Iterates over every database module supported by dbm currently available,
Expand All @@ -34,7 +35,7 @@ def delete_files():
# we don't know the precise name the underlying database uses
# so we use glob to locate all names
for f in glob.glob(glob.escape(_fname) + "*"):
test.support.unlink(f)
os_helper.unlink(f)


class AnyDBMTestCase:
Expand Down Expand Up @@ -74,7 +75,7 @@ def test_anydbm_creation(self):

def test_anydbm_creation_n_file_exists_with_invalid_contents(self):
# create an empty file
test.support.create_empty_file(_fname)
os_helper.create_empty_file(_fname)
with dbm.open(_fname, 'n') as f:
self.assertEqual(len(f), 0)

Expand Down Expand Up @@ -169,18 +170,18 @@ def test_whichdb_ndbm(self):
# Issue 17198: check that ndbm which is referenced in whichdb is defined
db_file = '{}_ndbm.db'.format(_fname)
with open(db_file, 'w'):
self.addCleanup(test.support.unlink, db_file)
self.addCleanup(os_helper.unlink, db_file)
self.assertIsNone(self.dbm.whichdb(db_file[:-3]))

def tearDown(self):
delete_files()

def setUp(self):
delete_files()
self.filename = test.support.TESTFN
self.filename = os_helper.TESTFN
self.d = dbm.open(self.filename, 'c')
self.d.close()
self.dbm = test.support.import_fresh_module('dbm')
self.dbm = import_helper.import_fresh_module('dbm')

def test_keys(self):
self.d = dbm.open(self.filename, 'c')
Expand Down

6 changes: 4 additions & 2 deletions Lib/test/test_fcntl.py

Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
import sys
import unittest
from multiprocessing import Process
from test.support import (verbose, TESTFN, unlink, run_unittest, import_module,
cpython_only)
from test.support import (verbose, run_unittest, cpython_only)
from test.support.import_helper import import_module
from test.support.os_helper import TESTFN, unlink


# Skip test if no fcntl module.
fcntl = import_module('fcntl')
Expand Down

11 changes: 6 additions & 5 deletions Lib/test/test_file.py

Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
import io
import _pyio as pyio

from test.support import TESTFN
from test import support
from test.support.os_helper import TESTFN
from test.support import os_helper
from test.support import warnings_helper
from collections import UserList

class AutoFileTests:
Expand All @@ -20,7 +21,7 @@ def setUp(self):
def tearDown(self):
if self.f:
self.f.close()
support.unlink(TESTFN)
os_helper.unlink(TESTFN)

def testWeakRefs(self):
# verify weak references
Expand Down Expand Up @@ -139,7 +140,7 @@ class PyAutoFileTests(AutoFileTests, unittest.TestCase):
class OtherFileTests:

def tearDown(self):
support.unlink(TESTFN)
os_helper.unlink(TESTFN)

def testModeStrings(self):
# check invalid mode strings
Expand Down Expand Up @@ -187,7 +188,7 @@ def testSetBufferSize(self):
# make sure that explicitly setting the buffer size doesn't cause
# misbehaviour especially with repeated close() calls
for s in (-1, 0, 512):
with support.check_no_warnings(self,
with warnings_helper.check_no_warnings(self,
message='line buffering',
category=RuntimeWarning):
self._checkBufferSize(s)
Expand Down

2 changes: 1 addition & 1 deletion Lib/test/test_fstring.py

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import types
import decimal
import unittest
from test.support import temp_cwd
from test.support.os_helper import temp_cwd
from test.support.script_helper import assert_python_failure

a_global = 'global variable'
Expand Down

11 changes: 6 additions & 5 deletions Lib/test/test_httpservers.py

Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

import unittest
from test import support
from test.support import os_helper
from test.support import threading_helper


Expand Down Expand Up @@ -391,13 +392,13 @@ def close_conn():
'undecodable name cannot always be decoded on macOS')
@unittest.skipIf(sys.platform == 'win32',
'undecodable name cannot be decoded on win32')
@unittest.skipUnless(support.TESTFN_UNDECODABLE,
'need support.TESTFN_UNDECODABLE')
@unittest.skipUnless(os_helper.TESTFN_UNDECODABLE,
'need os_helper.TESTFN_UNDECODABLE')
def test_undecodable_filename(self):
enc = sys.getfilesystemencoding()
filename = os.fsdecode(support.TESTFN_UNDECODABLE) + '.txt'
filename = os.fsdecode(os_helper.TESTFN_UNDECODABLE) + '.txt'
with open(os.path.join(self.tempdir, filename), 'wb') as f:
f.write(support.TESTFN_UNDECODABLE)
f.write(os_helper.TESTFN_UNDECODABLE)
response = self.request(self.base_url + '/')
if sys.platform == 'darwin':
# On Mac OS the HFS+ filesystem replaces bytes that aren't valid
Expand All @@ -414,7 +415,7 @@ def test_undecodable_filename(self):
.encode(enc, 'surrogateescape'), body)
response = self.request(self.base_url + '/' + quotedname)
self.check_status_and_reason(response, HTTPStatus.OK,
data=support.TESTFN_UNDECODABLE)
data=os_helper.TESTFN_UNDECODABLE)

def test_get(self):
#constructs the path relative to the root directory of the HTTPServer
Expand Down

13 changes: 7 additions & 6 deletions Lib/test/test_linecache.py

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import tempfile
import tokenize
from test import support
from test.support import os_helper


FILENAME = linecache.__file__
Expand Down Expand Up @@ -44,7 +45,7 @@ def setUp(self):
with tempfile.NamedTemporaryFile(delete=False) as fp:
self.file_name = fp.name
fp.write(self.file_byte_string)
self.addCleanup(support.unlink, self.file_name)
self.addCleanup(os_helper.unlink, self.file_name)


class GetLineTestsGoodData(TempFile):
Expand Down Expand Up @@ -124,10 +125,10 @@ def test_getline(self):
self.assertEqual(empty, [])

def test_no_ending_newline(self):
self.addCleanup(support.unlink, support.TESTFN)
with open(support.TESTFN, "w") as fp:
self.addCleanup(os_helper.unlink, os_helper.TESTFN)
with open(os_helper.TESTFN, "w") as fp:
fp.write(SOURCE_3)
lines = linecache.getlines(support.TESTFN)
lines = linecache.getlines(os_helper.TESTFN)
self.assertEqual(lines, ["\n", "def f():\n", " return 3\n"])

def test_clearcache(self):
Expand All @@ -150,8 +151,8 @@ def test_clearcache(self):
def test_checkcache(self):
getline = linecache.getline
# Create a source file and cache its contents
source_name = support.TESTFN + '.py'
self.addCleanup(support.unlink, source_name)
source_name = os_helper.TESTFN + '.py'
self.addCleanup(os_helper.unlink, source_name)
with open(source_name, 'w') as source:
source.write(SOURCE_1)
getline(source_name, 1)
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_msilib.py

Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
""" Test suite for the code in msilib """
import os
import unittest
from test.support import TESTFN, import_module, unlink
from test.support.import_helper import import_module
from test.support.os_helper import TESTFN, unlink
msilib = import_module('msilib')
import msilib.schema

Expand Down

8 changes: 4 additions & 4 deletions Lib/test/test_picklebuffer.py

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import weakref
import unittest

from test import support
from test.support import import_helper


class B(bytes):
Expand Down Expand Up @@ -75,7 +75,7 @@ def test_cycle(self):

def test_ndarray_2d(self):
# C-contiguous
ndarray = support.import_module("_testbuffer").ndarray
ndarray = import_helper.import_module("_testbuffer").ndarray
arr = ndarray(list(range(12)), shape=(4, 3), format='<i')
self.assertTrue(arr.c_contiguous)
self.assertFalse(arr.f_contiguous)
Expand Down Expand Up @@ -109,7 +109,7 @@ def test_raw(self):

def test_raw_ndarray(self):
# 1-D, contiguous
ndarray = support.import_module("_testbuffer").ndarray
ndarray = import_helper.import_module("_testbuffer").ndarray
arr = ndarray(list(range(3)), shape=(3,), format='<h')
equiv = b"\x00\x00\x01\x00\x02\x00"
self.check_raw(arr, equiv)
Expand All @@ -135,7 +135,7 @@ def check_raw_non_contiguous(self, obj):

def test_raw_non_contiguous(self):
# 1-D
ndarray = support.import_module("_testbuffer").ndarray
ndarray = import_helper.import_module("_testbuffer").ndarray
arr = ndarray(list(range(6)), shape=(6,), format='<i')[::2]
self.check_raw_non_contiguous(arr)
# 2-D
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_profile.py

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
import os
from difflib import unified_diff
from io import StringIO
from test.support import TESTFN, run_unittest, unlink
from test.support import run_unittest
from test.support.os_helper import TESTFN, unlink
from contextlib import contextmanager

import profile
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_pty.py

Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from test.support import verbose, import_module, reap_children
from test.support import verbose, reap_children
from test.support.import_helper import import_module

# Skip these tests if termios is not available
import_module('termios')
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_reprlib.py

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import importlib.util
import unittest

from test.support import create_empty_file, verbose
from test.support import verbose
from test.support.os_helper import create_empty_file
from reprlib import repr as r # Don't shadow builtin repr
from reprlib import Repr
from reprlib import recursive_repr
Expand Down

5 changes: 3 additions & 2 deletions Lib/test/test_shelve.py

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import shelve
import glob
from test import support
from test.support import os_helper
from collections.abc import MutableMapping
from test.test_dbm import dbm_iterator

Expand Down Expand Up @@ -45,7 +46,7 @@ class TestCase(unittest.TestCase):

def tearDown(self):
for f in glob.glob(self.fn+"*"):
support.unlink(f)
os_helper.unlink(f)

def test_close(self):
d1 = {}
Expand Down Expand Up @@ -186,7 +187,7 @@ def tearDown(self):
self._db = []
if not self._in_mem:
for f in glob.glob(self.fn+"*"):
support.unlink(f)
os_helper.unlink(f)

class TestAsciiFileShelve(TestShelveBase):
_args={'protocol':0}
Expand Down

3 changes: 2 additions & 1 deletion Lib/test/test_tk.py

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from test import support
from test.support import import_helper
# Skip test if _tkinter wasn't built.
support.import_module('_tkinter')
import_helper.import_module('_tkinter')

# Skip test if tk cannot be initialized.
support.requires('gui')
Expand Down