mirror of https://github.com/python/cpython
[3.13] gh-59022: Added tests for `pkgutil.extend_path` (GH-121673) (GH-121951)
This adds tests for the documented behaviour of `pkgutil.extend_path`
regarding different argument types as well as for `*.pkg` files.
(cherry picked from commit 8f2532168b
)
Co-authored-by: Andreas Stocker <andreas@stocker.co.it>
This commit is contained in:
parent
838025bb86
commit
963e97d901
|
@ -34,9 +34,9 @@ support.
|
||||||
*name* argument. This feature is similar to :file:`\*.pth` files (see the
|
*name* argument. This feature is similar to :file:`\*.pth` files (see the
|
||||||
:mod:`site` module for more information), except that it doesn't special-case
|
:mod:`site` module for more information), except that it doesn't special-case
|
||||||
lines starting with ``import``. A :file:`\*.pkg` file is trusted at face
|
lines starting with ``import``. A :file:`\*.pkg` file is trusted at face
|
||||||
value: apart from checking for duplicates, all entries found in a
|
value: apart from skipping blank lines and ignoring comments, all entries
|
||||||
:file:`\*.pkg` file are added to the path, regardless of whether they exist
|
found in a :file:`\*.pkg` file are added to the path, regardless of whether
|
||||||
on the filesystem. (This is a feature.)
|
they exist on the filesystem (this is a feature).
|
||||||
|
|
||||||
If the input path is not a list (as is the case for frozen packages) it is
|
If the input path is not a list (as is the case for frozen packages) it is
|
||||||
returned unchanged. The input path is not modified; an extended copy is
|
returned unchanged. The input path is not modified; an extended copy is
|
||||||
|
|
|
@ -522,7 +522,43 @@ class ExtendPathTests(unittest.TestCase):
|
||||||
del sys.modules['foo.bar']
|
del sys.modules['foo.bar']
|
||||||
del sys.modules['foo.baz']
|
del sys.modules['foo.baz']
|
||||||
|
|
||||||
# XXX: test .pkg files
|
|
||||||
|
def test_extend_path_argument_types(self):
|
||||||
|
pkgname = 'foo'
|
||||||
|
dirname_0 = self.create_init(pkgname)
|
||||||
|
|
||||||
|
# If the input path is not a list it is returned unchanged
|
||||||
|
self.assertEqual('notalist', pkgutil.extend_path('notalist', 'foo'))
|
||||||
|
self.assertEqual(('not', 'a', 'list'), pkgutil.extend_path(('not', 'a', 'list'), 'foo'))
|
||||||
|
self.assertEqual(123, pkgutil.extend_path(123, 'foo'))
|
||||||
|
self.assertEqual(None, pkgutil.extend_path(None, 'foo'))
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
shutil.rmtree(dirname_0)
|
||||||
|
del sys.path[0]
|
||||||
|
|
||||||
|
|
||||||
|
def test_extend_path_pkg_files(self):
|
||||||
|
pkgname = 'foo'
|
||||||
|
dirname_0 = self.create_init(pkgname)
|
||||||
|
|
||||||
|
with open(os.path.join(dirname_0, 'bar.pkg'), 'w') as pkg_file:
|
||||||
|
pkg_file.write('\n'.join([
|
||||||
|
'baz',
|
||||||
|
'/foo/bar/baz',
|
||||||
|
'',
|
||||||
|
'#comment'
|
||||||
|
]))
|
||||||
|
|
||||||
|
extended_paths = pkgutil.extend_path(sys.path, 'bar')
|
||||||
|
|
||||||
|
self.assertEqual(extended_paths[:-2], sys.path)
|
||||||
|
self.assertEqual(extended_paths[-2], 'baz')
|
||||||
|
self.assertEqual(extended_paths[-1], '/foo/bar/baz')
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
shutil.rmtree(dirname_0)
|
||||||
|
del sys.path[0]
|
||||||
|
|
||||||
|
|
||||||
class NestedNamespacePackageTest(unittest.TestCase):
|
class NestedNamespacePackageTest(unittest.TestCase):
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Add tests for :func:`pkgutil.extend_path`. Patch by Andreas Stocker.
|
Loading…
Reference in New Issue