51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
import importlib
|
|
|
|
import collections
|
|
import imp
|
|
from os import path
|
|
import sys
|
|
import unittest
|
|
|
|
|
|
PATH = None
|
|
EXT = None
|
|
FILENAME = None
|
|
NAME = '_testcapi'
|
|
_file_exts = [x[0] for x in imp.get_suffixes() if x[2] == imp.C_EXTENSION]
|
|
try:
|
|
for PATH in sys.path:
|
|
for EXT in _file_exts:
|
|
FILENAME = NAME + EXT
|
|
FILEPATH = path.join(PATH, FILENAME)
|
|
if path.exists(path.join(PATH, FILENAME)):
|
|
raise StopIteration
|
|
else:
|
|
PATH = EXT = FILENAME = FILEPATH = None
|
|
except StopIteration:
|
|
pass
|
|
del _file_exts
|
|
|
|
|
|
class PathHookTests(unittest.TestCase):
|
|
|
|
"""Test the path hook for extension modules."""
|
|
# XXX Should it only succeed for pre-existing directories?
|
|
# XXX Should it only work for directories containing an extension module?
|
|
|
|
def hook(self, entry):
|
|
return importlib.ExtensionFileImporter(entry)
|
|
|
|
def test_success(self):
|
|
# Path hook should handle a directory where a known extension module
|
|
# exists.
|
|
self.assert_(hasattr(self.hook(PATH), 'find_module'))
|
|
|
|
|
|
def test_main():
|
|
from test.support import run_unittest
|
|
run_unittest(PathHookTests)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test_main()
|