test_ok1/testing/test_py_imports.py

80 lines
2.3 KiB
Python

import py
import types
import sys
def checksubpackage(name):
obj = getattr(py, name)
if hasattr(obj, '__map__'): # isinstance(obj, Module):
keys = dir(obj)
assert len(keys) > 0
print (obj.__map__)
for name in obj.__map__:
assert hasattr(obj, name), (obj, name)
def test_dir():
for name in dir(py):
if not name.startswith('_'):
yield checksubpackage, name
def test_virtual_module_identity():
from py import path as path1
from py import path as path2
assert path1 is path2
from py.path import local as local1
from py.path import local as local2
assert local1 is local2
def test_importall():
base = py._pydir.join("impl")
nodirs = [
base.join('test', 'testing', 'data'),
base.join('path', 'gateway',),
base.join('code', 'oldmagic.py'),
base.join('execnet', 'script'),
base.join('compat', 'testing'),
]
if sys.version_info >= (3,0):
nodirs.append(base.join('code', '_assertionold.py'))
else:
nodirs.append(base.join('code', '_assertionnew.py'))
def recurse(p):
return p.check(dotfile=0) and p.basename != "attic"
try:
import execnet
except ImportError:
execnet = None
for p in base.visit('*.py', recurse):
if p.basename == '__init__.py':
continue
relpath = p.new(ext='').relto(base)
if base.sep in relpath: # not py/*.py itself
for x in nodirs:
if p == x or p.relto(x):
break
else:
relpath = relpath.replace(base.sep, '.')
modpath = 'py.impl.%s' % relpath
if modpath.startswith("py.impl.test.dist") or \
modpath.startswith("py.impl.test.looponfail"):
if not execnet:
continue
check_import(modpath)
def check_import(modpath):
py.builtin.print_("checking import", modpath)
assert __import__(modpath)
def test_all_resolves():
seen = py.builtin.set([py])
lastlength = None
while len(seen) != lastlength:
lastlength = len(seen)
for item in py.builtin.frozenset(seen):
for value in item.__dict__.values():
if isinstance(value, type(py.test)):
seen.add(value)