TESTFN, rmtree, temp_umask, TESTFN_UNENCODABLE)
from test.support import script_helper
from test.support import threading_helper
+from test.support.testcase import ExtraAssertions
from test.test_importlib.util import uncache
from types import ModuleType
try:
@force_not_colorized_test_class
-class ImportTests(unittest.TestCase):
+class ImportTests(unittest.TestCase, ExtraAssertions):
def setUp(self):
remove_files(TESTFN)
import test as x
import test.support
self.assertIs(x, test, x.__name__)
- self.assertTrue(hasattr(test.support, "__file__"))
+ self.assertHasAttr(test.support, "__file__")
# import x.y.z as w binds z as w
import test.support as y
sys.path.insert(0, os.curdir)
try:
mod = __import__(TESTFN)
- self.assertTrue(mod.__file__.endswith('.py'))
+ self.assertEndsWith(mod.__file__, '.py')
os.remove(source)
del sys.modules[TESTFN]
make_legacy_pyc(source)
self.assertEqual(mod.constant.co_filename, foreign_code.co_filename)
-class PathsTests(unittest.TestCase):
+class PathsTests(unittest.TestCase, ExtraAssertions):
SAMPLES = ('test', 'test\u00e4\u00f6\u00fc\u00df', 'test\u00e9\u00e8',
'test\u00b0\u00b3\u00b2')
path = TESTFN
self.fail("could not import 'test_unc_path' from %r: %r"
% (unc, e))
self.assertEqual(mod.testdata, 'test_unc_path')
- self.assertTrue(mod.__file__.startswith(unc), mod.__file__)
+ self.assertStartsWith(mod.__file__, unc)
unload("test_unc_path")
-class RelativeImportTests(unittest.TestCase):
+class RelativeImportTests(unittest.TestCase, ExtraAssertions):
def tearDown(self):
unload("test.relimport")
def test_relimport_star(self):
# This will import * from .test_import.
from .. import relimport
- self.assertTrue(hasattr(relimport, "RelativeImportTests"))
+ self.assertHasAttr(relimport, "RelativeImportTests")
def test_issue3221(self):
# Note for mergers: the 'absolute' tests from the 2.x branch
@cpython_only
-class ImportlibBootstrapTests(unittest.TestCase):
+class ImportlibBootstrapTests(unittest.TestCase, ExtraAssertions):
# These tests check that importlib is bootstrapped.
def test_frozen_importlib(self):
self.assertIs(mod, _bootstrap)
self.assertEqual(mod.__name__, 'importlib._bootstrap')
self.assertEqual(mod.__package__, 'importlib')
- self.assertTrue(mod.__file__.endswith('_bootstrap.py'), mod.__file__)
+ self.assertEndsWith(mod.__file__, '_bootstrap.py')
def test_frozen_importlib_external_is_bootstrap_external(self):
from importlib import _bootstrap_external
self.assertIs(mod, _bootstrap_external)
self.assertEqual(mod.__name__, 'importlib._bootstrap_external')
self.assertEqual(mod.__package__, 'importlib')
- self.assertTrue(mod.__file__.endswith('_bootstrap_external.py'), mod.__file__)
+ self.assertEndsWith(mod.__file__, '_bootstrap_external.py')
def test_there_can_be_only_one(self):
# Issue #15386 revealed a tricky loophole in the bootstrapping
@requires_singlephase_init
-class SinglephaseInitTests(unittest.TestCase):
+class SinglephaseInitTests(unittest.TestCase, ExtraAssertions):
NAME = '_testsinglephase'
self.assertEqual(mod.__file__, self.FILE)
self.assertEqual(mod.__spec__.origin, self.ORIGIN)
if not isolated:
- self.assertTrue(issubclass(mod.error, Exception))
+ self.assertIsSubclass(mod.error, Exception)
self.assertEqual(mod.int_const, 1969)
self.assertEqual(mod.str_const, 'something different')
self.assertIsInstance(mod._module_initialized, float)
def test_success(self):
# Path hook should handle a directory where a known extension module
# exists.
- self.assertTrue(hasattr(self.hook(util.EXTENSIONS.path), 'find_spec'))
+ self.assertHasAttr(self.hook(util.EXTENSIONS.path), 'find_spec')
(Frozen_PathHooksTests,
module.main()
self.assertTrue(module.initialized)
- self.assertTrue(hasattr(module, '__spec__'))
+ self.assertHasAttr(module, '__spec__')
self.assertEqual(module.__spec__.origin, 'frozen')
return module, stdout.getvalue()
for attr, value in check.items():
self.assertEqual(getattr(module, attr), value)
self.assertEqual(output, 'Hello world!\n')
- self.assertTrue(hasattr(module, '__spec__'))
+ self.assertHasAttr(module, '__spec__')
self.assertEqual(module.__spec__.loader_state.origname, name)
def test_package(self):
exec(code, mod.__dict__)
with captured_stdout() as stdout:
mod.main()
- self.assertTrue(hasattr(mod, 'initialized'))
+ self.assertHasAttr(mod, 'initialized')
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
def test_get_source(self):
"""Test that sys.modules is used properly by import."""
from test.test_importlib import util
+from test.support.testcase import ExtraAssertions
import sys
from types import MethodType
import unittest
) = util.test_both(UseCache, __import__=util.__import__)
-class ImportlibUseCache(UseCache, unittest.TestCase):
+class ImportlibUseCache(UseCache, unittest.TestCase, ExtraAssertions):
# Pertinent only to PEP 302; exec_module() doesn't return a module.
with self.create_mock('pkg.__init__', 'pkg.module') as importer:
with util.import_state(meta_path=[importer]):
module = self.__import__('pkg.module')
- self.assertTrue(hasattr(module, 'module'))
+ self.assertHasAttr(module, 'module')
self.assertEqual(id(module.module),
id(sys.modules['pkg.module']))
with self.create_mock('pkg.__init__', 'pkg.module') as importer:
with util.import_state(meta_path=[importer]):
module = self.__import__('pkg', fromlist=['module'])
- self.assertTrue(hasattr(module, 'module'))
+ self.assertHasAttr(module, 'module')
self.assertEqual(id(module.module),
id(sys.modules['pkg.module']))
with util.import_state(meta_path=[importer]):
module = self.__import__('module', fromlist=['non_existent'])
self.assertEqual(module.__name__, 'module')
- self.assertFalse(hasattr(module, 'non_existent'))
+ self.assertNotHasAttr(module, 'non_existent')
def test_module_from_package(self):
# [module]
with util.import_state(meta_path=[importer]):
module = self.__import__('pkg', fromlist=['module'])
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'module'))
+ self.assertHasAttr(module, 'module')
self.assertEqual(module.module.__name__, 'pkg.module')
def test_nonexistent_from_package(self):
with util.import_state(meta_path=[importer]):
module = self.__import__('pkg', fromlist=['non_existent'])
self.assertEqual(module.__name__, 'pkg')
- self.assertFalse(hasattr(module, 'non_existent'))
+ self.assertNotHasAttr(module, 'non_existent')
def test_module_from_package_triggers_ModuleNotFoundError(self):
# If a submodule causes an ModuleNotFoundError because it tries
mock['pkg'].__all__ = ['module']
module = self.__import__('pkg', fromlist=fromlist)
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'module'))
+ self.assertHasAttr(module, 'module')
self.assertEqual(module.module.__name__, 'pkg.module')
def test_using_star(self):
mock['pkg'].__all__ = ['module1']
module = self.__import__('pkg', fromlist=['module2', '*'])
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'module1'))
- self.assertTrue(hasattr(module, 'module2'))
+ self.assertHasAttr(module, 'module1')
+ self.assertHasAttr(module, 'module2')
self.assertEqual(module.module1.__name__, 'pkg.module1')
self.assertEqual(module.module2.__name__, 'pkg.module2')
importer['pkg'].__all__ = ['non_existent']
module = self.__import__('pkg', fromlist=['*'])
self.assertEqual(module.__name__, 'pkg')
- self.assertFalse(hasattr(module, 'non_existent'))
+ self.assertNotHasAttr(module, 'non_existent')
def test_star_in_all(self):
with util.mock_spec('pkg.__init__') as importer:
importer['pkg'].__all__ = ['*']
module = self.__import__('pkg', fromlist=['*'])
self.assertEqual(module.__name__, 'pkg')
- self.assertFalse(hasattr(module, '*'))
+ self.assertNotHasAttr(module, '*')
def test_invalid_type(self):
with util.mock_spec('pkg.__init__') as importer:
self.assertIsNone(importlib._bootstrap._find_spec('nothing',
None))
self.assertEqual(len(w), 1)
- self.assertTrue(issubclass(w[-1].category, ImportWarning))
+ self.assertIsSubclass(w[-1].category, ImportWarning)
(Frozen_CallingOrder,
self.assertIsNone(self.find('os'))
self.assertIsNone(sys.path_importer_cache[path_entry])
self.assertEqual(len(w), 1)
- self.assertTrue(issubclass(w[-1].category, ImportWarning))
+ self.assertIsSubclass(w[-1].category, ImportWarning)
def test_path_importer_cache_empty_string(self):
# The empty string should create a finder using the cwd.
self.__import__('pkg') # For __import__().
module = self.__import__('', global_, fromlist=['mod2'], level=1)
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'mod2'))
+ self.assertHasAttr(module, 'mod2')
self.assertEqual(module.mod2.attr, 'pkg.mod2')
self.relative_import_test(create, globals_, callback)
module = self.__import__('', global_, fromlist=['module'],
level=1)
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'module'))
+ self.assertHasAttr(module, 'module')
self.assertEqual(module.module.attr, 'pkg.module')
self.relative_import_test(create, globals_, callback)
module = self.__import__('', global_, fromlist=['subpkg2'],
level=2)
self.assertEqual(module.__name__, 'pkg')
- self.assertTrue(hasattr(module, 'subpkg2'))
+ self.assertHasAttr(module, 'subpkg2')
self.assertEqual(module.subpkg2.attr, 'pkg.subpkg2.__init__')
self.relative_import_test(create, globals_, callback)
from importlib import resources
from . import util
+from test.support.testcase import ExtraAssertions
class CommonTests(util.CommonTests, unittest.TestCase):
pass
-class PathTests:
+class PathTests(ExtraAssertions):
def test_reading(self):
"""
Path should be readable and a pathlib.Path instance.
target = resources.files(self.data) / 'utf-8.file'
with resources.as_file(target) as path:
self.assertIsInstance(path, pathlib.Path)
- self.assertTrue(path.name.endswith("utf-8.file"), repr(path))
+ self.assertEndsWith(path.name, "utf-8.file")
self.assertEqual('Hello, UTF-8 world!\n', path.read_text(encoding='utf-8'))
if error.errno != errno.ENOENT:
raise
loader = self.import_(mapping['.root'], test)
- self.assertTrue(hasattr(loader, 'load_module'))
+ self.assertHasAttr(loader, 'load_module')
return loader
def test_module(self):
with util.create_modules('pkg.__init__', 'pkg.sub') as mapping:
pkg_dir = os.path.dirname(mapping['pkg.__init__'])
loader = self.import_(pkg_dir, 'pkg.sub')
- self.assertTrue(hasattr(loader, 'load_module'))
+ self.assertHasAttr(loader, 'load_module')
# [sub package]
def test_package_in_package(self):
with context as mapping:
pkg_dir = os.path.dirname(mapping['pkg.__init__'])
loader = self.import_(pkg_dir, 'pkg.sub')
- self.assertTrue(hasattr(loader, 'load_module'))
+ self.assertHasAttr(loader, 'load_module')
# [package over modules]
def test_package_over_module(self):
file.write("# test file for importlib")
try:
loader = self._find(finder, 'mod', loader_only=True)
- self.assertTrue(hasattr(loader, 'load_module'))
+ self.assertHasAttr(loader, 'load_module')
finally:
os.unlink('mod.py')
def test_success(self):
with util.create_modules('dummy') as mapping:
- self.assertTrue(hasattr(self.path_hook()(mapping['.root']),
- 'find_spec'))
+ self.assertHasAttr(self.path_hook()(mapping['.root']),
+ 'find_spec')
def test_empty_string(self):
# The empty string represents the cwd.
- self.assertTrue(hasattr(self.path_hook()(''), 'find_spec'))
+ self.assertHasAttr(self.path_hook()(''), 'find_spec')
(Frozen_PathHookTest,
def test_subclasses(self):
# Test that the expected subclasses inherit.
for subclass in self.subclasses:
- self.assertTrue(issubclass(subclass, self.__test),
- "{0} is not a subclass of {1}".format(subclass, self.__test))
+ self.assertIsSubclass(subclass, self.__test)
def test_superclasses(self):
# Test that the class inherits from the expected superclasses.
for superclass in self.superclasses:
- self.assertTrue(issubclass(self.__test, superclass),
- "{0} is not a superclass of {1}".format(superclass, self.__test))
+ self.assertIsSubclass(self.__test, superclass)
class MetaPathFinder(InheritanceTests):
# Since compile() can handle strings, so should source_to_code().
source = 'attr = 42'
module = self.source_to_module(source)
- self.assertTrue(hasattr(module, 'attr'))
+ self.assertHasAttr(module, 'attr')
self.assertEqual(module.attr, 42)
def test_source_to_code_bytes(self):
# Since compile() can handle bytes, so should source_to_code().
source = b'attr = 42'
module = self.source_to_module(source)
- self.assertTrue(hasattr(module, 'attr'))
+ self.assertHasAttr(module, 'attr')
self.assertEqual(module.attr, 42)
def test_source_to_code_path(self):
warnings.simplefilter('ignore', DeprecationWarning)
module = self.loader.load_module(self.name)
self.verify_module(module)
- self.assertFalse(hasattr(module, '__path__'))
+ self.assertNotHasAttr(module, '__path__')
def test_get_source_encoding(self):
# Source is considered encoded in UTF-8 by default unless otherwise
for name, module in sys.modules.items():
if isinstance(module, types.ModuleType):
with self.subTest(name=name):
- self.assertTrue(hasattr(module, '__loader__'),
- '{!r} lacks a __loader__ attribute'.format(name))
+ self.assertHasAttr(module, '__loader__')
if self.machinery.BuiltinImporter.find_spec(name):
self.assertIsNot(module.__loader__, None)
elif self.machinery.FrozenImporter.find_spec(name):
for name, module in sys.modules.items():
if isinstance(module, types.ModuleType):
with self.subTest(name=name):
- self.assertTrue(hasattr(module, '__spec__'))
+ self.assertHasAttr(module, '__spec__')
if self.machinery.BuiltinImporter.find_spec(name):
self.assertIsNot(module.__spec__, None)
elif self.machinery.FrozenImporter.find_spec(name):
from test.support import threading_helper
from test.test_importlib import util as test_util
+from test.support.testcase import ExtraAssertions
class CollectInit:
self.load_count += 1
-class LazyLoaderTests(unittest.TestCase):
+class LazyLoaderTests(unittest.TestCase, ExtraAssertions):
def test_init(self):
with self.assertRaises(TypeError):
# Deleting an attribute should stay deleted.
module = self.new_module()
del module.attr
- self.assertFalse(hasattr(module, 'attr'))
+ self.assertNotHasAttr(module, 'attr')
def test_delete_preexisting_attr(self):
module = self.new_module()
del module.__name__
- self.assertFalse(hasattr(module, '__name__'))
+ self.assertNotHasAttr(module, '__name__')
def test_module_substitution_error(self):
with test_util.uncache(TestingImporter.module_name):
import unittest
from test.test_importlib import util
+from test.support.testcase import ExtraAssertions
# needed tests:
#
with import_context, sys_modules_context():
yield
-class NamespacePackageTest(unittest.TestCase):
+class NamespacePackageTest(unittest.TestCase, ExtraAssertions):
"""
Subclasses should define self.root and self.paths (under that root)
to be added to sys.path.
def test_simple_repr(self):
import foo.one
- self.assertTrue(repr(foo).startswith("<module 'foo' (namespace) from ["))
+ self.assertStartsWith(repr(foo), "<module 'foo' (namespace) from [")
class DynamicPathNamespacePackage(NamespacePackageTest):
from importlib.util import cache_from_source
from test.support.os_helper import create_empty_file
+from test.support.testcase import ExtraAssertions
-class TestImport(unittest.TestCase):
+class TestImport(unittest.TestCase, ExtraAssertions):
def __init__(self, *args, **kw):
self.package_name = 'PACKAGE_'
except SyntaxError: pass
else: raise RuntimeError('Failed to induce SyntaxError') # self.fail()?
self.assertNotIn(self.module_name, sys.modules)
- self.assertFalse(hasattr(sys.modules[self.package_name], 'foo'))
+ self.assertNotHasAttr(sys.modules[self.package_name], 'foo')
# ...make up a variable name that isn't bound in __builtins__
var = 'a'
self.spec.loader = NewLoader()
module = self.util.module_from_spec(self.spec)
sys.modules[self.name] = module
- self.assertFalse(hasattr(module, 'eggs'))
+ self.assertNotHasAttr(module, 'eggs')
self.bootstrap._exec(self.spec, module)
self.assertEqual(module.eggs, 1)
self.assertIs(loaded.__loader__, self.spec.loader)
self.assertEqual(loaded.__package__, self.spec.parent)
self.assertIs(loaded.__spec__, self.spec)
- self.assertFalse(hasattr(loaded, '__path__'))
- self.assertFalse(hasattr(loaded, '__file__'))
- self.assertFalse(hasattr(loaded, '__cached__'))
+ self.assertNotHasAttr(loaded, '__path__')
+ self.assertNotHasAttr(loaded, '__file__')
+ self.assertNotHasAttr(loaded, '__cached__')
(Frozen_ModuleSpecMethodsTests,
def test_incorporates_rn(self):
# The magic number uses \r\n to come out wrong when splitting on lines.
- self.assertTrue(self.util.MAGIC_NUMBER.endswith(b'\r\n'))
+ self.assertEndsWith(self.util.MAGIC_NUMBER, b'\r\n')
(Frozen_MagicNumberTests,
from test.support import import_helper
from test.support import is_apple_mobile
from test.support import os_helper
+from test.support.testcase import ExtraAssertions
import unittest
import sys
import tempfile
elif not isinstance(base, type):
base = base[kind]
name = '{}_{}'.format(kind, cls.__name__)
- bases = (cls, base)
+ bases = (cls, base, ExtraAssertions)
specialized = types.new_class(name, bases)
specialized.__module__ = cls.__module__
specialized._NAME = cls.__name__