from __future__ import generators |
|
import py |
import types |
import sys |
|
def checksubpackage(name): |
obj = getattr(py, name) |
if hasattr(obj, '__map__'): |
keys = dir(obj) |
assert len(keys) > 0 |
assert getattr(obj, '__map__') == {} |
|
def test_dir(): |
from py.__.initpkg import Module |
for name in dir(py): |
if name == 'magic': |
continue |
if not name.startswith('_'): |
yield checksubpackage, name |
|
from py.initpkg import Module |
glob = [] |
class MyModule(Module): |
def __init__(self, *args): |
glob.append(self.__dict__) |
assert isinstance(glob[-1], (dict, type(None))) |
Module.__init__(self, *args) |
|
def test_early__dict__access(): |
mymod = MyModule("whatever", "myname") |
assert isinstance(mymod.__dict__, dict) |
|
def test_resolve_attrerror(): |
extpyish = "./initpkg.py", "hello" |
excinfo = py.test.raises(AttributeError, "py.__package__._resolve(extpyish)") |
s = str(excinfo.value) |
assert s.find(extpyish[0]) != -1 |
assert s.find(extpyish[1]) != -1 |
|
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.path.local(py.__file__).dirpath() |
nodirs = ( |
base.join('test', 'testing', 'data'), |
base.join('apigen', 'tracer', 'testing', 'package'), |
base.join('test', 'testing', 'test'), |
base.join('test', 'rsession', 'webjs.py'), |
base.join('apigen', 'source', 'server.py'), |
base.join('magic', 'greenlet.py'), |
base.join('path', 'gateway',), |
base.join('doc',), |
base.join('rest', 'directive.py'), |
base.join('test', 'testing', 'import_test'), |
base.join('c-extension',), |
base.join('magic', 'greenlet.py'), |
base.join('bin'), |
base.join('execnet', 'script'), |
base.join('compat', 'testing'), |
) |
for p in base.visit('*.py', lambda x: x.check(dotfile=0)): |
if p.basename == '__init__.py': |
continue |
relpath = p.new(ext='').relto(base) |
if base.sep in relpath: |
for x in nodirs: |
if p == x or p.relto(x): |
break |
else: |
relpath = relpath.replace(base.sep, '.') |
modpath = 'py.__.%s' % relpath |
yield check_import, modpath |
|
def check_import(modpath): |
print "checking import", modpath |
assert __import__(modpath) |
|
def test_shahexdigest(): |
hex = py.__package__.shahexdigest() |
assert len(hex) == 40 |
|
def test_getzipdata(): |
s = py.__package__.getzipdata() |
|
def test_getrev(): |
if not py.path.local(py.__file__).dirpath('.svn').check(): |
py.test.skip("py package is not a svn checkout") |
d = py.__package__.getrev() |
svnversion = py.path.local.sysfind('svnversion') |
if svnversion is None: |
py.test.skip("cannot test svnversion, 'svnversion' binary not found") |
v = svnversion.sysexec(py.path.local(py.__file__).dirpath()) |
assert v.startswith(str(d)) |
|
|
def XXXtest_virtual_on_the_fly(): |
py.initpkg('my', { |
'x.abspath' : 'os.path.abspath', |
'x.local' : 'py.path.local', |
'y' : 'smtplib', |
'z.cmdexec' : 'py.process.cmdexec', |
}) |
from my.x import abspath |
from my.x import local |
import smtplib |
from my import y |
assert y is smtplib |
from my.z import cmdexec |
from py.process import cmdexec as cmdexec2 |
assert cmdexec is cmdexec2 |
|
|
|
|
|
class TestRealModule: |
|
def setup_class(cls): |
cls.tmpdir = py.test.ensuretemp('test_initpkg') |
sys.path = [str(cls.tmpdir)] + sys.path |
pkgdir = cls.tmpdir.ensure('realtest', dir=1) |
|
tfile = pkgdir.join('__init__.py') |
tfile.write(py.code.Source(""" |
import py |
py.initpkg('realtest', { |
'x.module.__doc__': ('./testmodule.py', '__doc__'), |
'x.module': ('./testmodule.py', '*'), |
}) |
""")) |
|
tfile = pkgdir.join('testmodule.py') |
tfile.write(py.code.Source(""" |
'test module' |
|
__all__ = ['mytest0', 'mytest1', 'MyTest'] |
|
def mytest0(): |
pass |
def mytest1(): |
pass |
class MyTest: |
pass |
|
""")) |
|
import realtest |
|
|
|
|
def setup_method(self, *args): |
"""Unload the test modules before each test.""" |
module_names = ['realtest', 'realtest.x', 'realtest.x.module'] |
for modname in module_names: |
if modname in sys.modules: |
del sys.modules[modname] |
|
def test_realmodule(self): |
"""Testing 'import realtest.x.module'""" |
import realtest.x.module |
assert 'realtest.x.module' in sys.modules |
assert getattr(realtest.x.module, 'mytest0') |
|
def test_realmodule_from(self): |
"""Testing 'from test import module'.""" |
from realtest.x import module |
assert getattr(module, 'mytest1') |
|
def test_realmodule_star(self): |
"""Testing 'from test.module import *'.""" |
tfile = self.tmpdir.join('startest.py') |
tfile.write(py.code.Source(""" |
from realtest.x.module import * |
globals()['mytest0'] |
globals()['mytest1'] |
globals()['MyTest'] |
""")) |
import startest |
|
def test_realmodule_dict_import(self): |
"Test verifying that accessing the __dict__ invokes the import" |
import realtest.x.module |
moddict = realtest.x.module.__dict__ |
assert 'mytest0' in moddict |
assert 'mytest1' in moddict |
assert 'MyTest' in moddict |
|
def test_realmodule___doc__(self): |
"""test whether the __doc__ attribute is set properly from initpkg""" |
import realtest.x.module |
assert realtest.x.module.__doc__ == 'test module' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_url_of_version(): |
py.test.skip("FAILING! - provide a proper URL or upload pylib tgz") |
from urllib import URLopener |
URLopener().open(py.__package__.download_url) |
|
|