summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/1905.change.rst1
-rw-r--r--setuptools/_imp.py15
-rw-r--r--setuptools/tests/test_setuptools.py5
3 files changed, 18 insertions, 3 deletions
diff --git a/changelog.d/1905.change.rst b/changelog.d/1905.change.rst
new file mode 100644
index 00000000..7b73898c
--- /dev/null
+++ b/changelog.d/1905.change.rst
@@ -0,0 +1 @@
+Fixed test failure introduced in 41.6.0 when the 'tests' directory is not present.
diff --git a/setuptools/_imp.py b/setuptools/_imp.py
index a3cce9b2..451e45a8 100644
--- a/setuptools/_imp.py
+++ b/setuptools/_imp.py
@@ -17,9 +17,18 @@ C_BUILTIN = 6
PY_FROZEN = 7
+def find_spec(module, paths):
+ finder = (
+ importlib.machinery.PathFinder().find_spec
+ if isinstance(paths, list) else
+ importlib.util.find_spec
+ )
+ return finder(module, paths)
+
+
def find_module(module, paths=None):
"""Just like 'imp.find_module()', but with package support"""
- spec = importlib.util.find_spec(module, paths)
+ spec = find_spec(module, paths)
if spec is None:
raise ImportError("Can't find %s" % module)
if not spec.has_location and hasattr(spec, 'submodule_search_locations'):
@@ -60,14 +69,14 @@ def find_module(module, paths=None):
def get_frozen_object(module, paths=None):
- spec = importlib.util.find_spec(module, paths)
+ spec = find_spec(module, paths)
if not spec:
raise ImportError("Can't find %s" % module)
return spec.loader.get_code(module)
def get_module(module, paths, info):
- spec = importlib.util.find_spec(module, paths)
+ spec = find_spec(module, paths)
if not spec:
raise ImportError("Can't find %s" % module)
return module_from_spec(spec)
diff --git a/setuptools/tests/test_setuptools.py b/setuptools/tests/test_setuptools.py
index 0da19b0e..bca69c30 100644
--- a/setuptools/tests/test_setuptools.py
+++ b/setuptools/tests/test_setuptools.py
@@ -108,6 +108,11 @@ class TestDepends:
assert not req.is_present()
assert not req.is_current()
+ @needs_bytecode
+ def test_require_present(self):
+ # In #1896, this test was failing for months with the only
+ # complaint coming from test runners (not end users).
+ # TODO: Evaluate if this code is needed at all.
req = Require('Tests', None, 'tests', homepage="http://example.com")
assert req.format is None
assert req.attribute is None