fix tox.ini and dependencies, various fixes all around, tests pass.

--HG--
branch : trunk
This commit is contained in:
holger krekel 2010-10-10 13:48:49 +02:00
parent 32fce34825
commit 652d0ca636
12 changed files with 36 additions and 44 deletions

View File

@ -15,6 +15,7 @@ syntax:glob
*.orig *.orig
*~ *~
doc/_build
build/ build/
dist/ dist/
*.egg-info *.egg-info

View File

@ -1,28 +1,15 @@
""" """
extensible functional and unit testing with Python. py.test / pytest API for unit and functional testing with Python.
(c) Holger Krekel and others, 2004-2010 (c) Holger Krekel and others, 2004-2010
""" """
__version__ = "2.0.0dev0" __version__ = "2.0.0dev0"
__all__ = ['collect', 'cmdline', 'config']
import pytest._config import pytest._config
config = pytest._config.Config()
from pytest import collect from pytest import collect
from pytest import main as cmdline
__all__ = ['collect', 'cmdline']
class cmdline: # compatibility py.test.cmdline.main == pytest.cmdline.main
@staticmethod
def main(args=None):
import sys
if args is None:
args = sys.argv[1:]
config = pytest._config.config_per_process = pytest._config.Config()
config.parse(args)
try:
exitstatus = config.hook.pytest_cmdline_main(config=config)
except config.Error:
e = sys.exc_info()[1]
sys.stderr.write("ERROR: %s\n" %(e.args[0],))
exitstatus = EXIT_INTERNALERROR
return exitstatus
def __main__(): def __main__():
raise SystemExit(cmdline.main()) raise SystemExit(cmdline.main())

View File

@ -396,7 +396,5 @@ def onpytestaccess():
# which loads default plugins which add to py.test.* # which loads default plugins which add to py.test.*
pass pass
# a default per-process instance of py.test configuration
config_per_process = Config()

View File

@ -3,6 +3,8 @@ test collection nodes, forming a tree, Items are leafs.
""" """
import py import py
__all__ = ['Collector', 'Item', 'File', 'Directory']
def configproperty(name): def configproperty(name):
def fget(self): def fget(self):
#print "retrieving %r property from %s" %(name, self.fspath) #print "retrieving %r property from %s" %(name, self.fspath)

View File

@ -223,14 +223,14 @@ class TmpTestdir:
if not args: if not args:
args = [self.tmpdir] args = [self.tmpdir]
from pytest import _config from pytest import _config
oldconfig = _config.config_per_process # py.test.config oldconfig = py.test.config
try: try:
c = _config.config_per_process = py.test.config = pytestConfig() c = py.test.config = pytestConfig()
c.basetemp = oldconfig.mktemp("reparse", numbered=True) c.basetemp = oldconfig.mktemp("reparse", numbered=True)
c.parse(args) c.parse(args)
return c return c
finally: finally:
_config.config_per_process = py.test.config = oldconfig py.test.config = oldconfig
def parseconfigure(self, *args): def parseconfigure(self, *args):
config = self.parseconfig(*args) config = self.parseconfig(*args)

View File

@ -8,6 +8,10 @@ import pytest
from pytest.collect import configproperty, warnoldcollect from pytest.collect import configproperty, warnoldcollect
from py._code.code import TerminalRepr from py._code.code import TerminalRepr
import pytest
cutdir = py.path.local(pytest.__file__).dirpath()
def pytest_addoption(parser): def pytest_addoption(parser):
group = parser.getgroup("terminal reporting") group = parser.getgroup("terminal reporting")
group._addoption('--funcargs', group._addoption('--funcargs',
@ -327,7 +331,7 @@ class FunctionMixin(PyobjMixin):
if ntraceback == traceback: if ntraceback == traceback:
ntraceback = ntraceback.cut(path=path) ntraceback = ntraceback.cut(path=path)
if ntraceback == traceback: if ntraceback == traceback:
ntraceback = ntraceback.cut(excludepath=py._pydir) ntraceback = ntraceback.cut(excludepath=cutdir)
traceback = ntraceback.filter() traceback = ntraceback.filter()
return traceback return traceback

View File

@ -205,7 +205,7 @@ class TerminalReporter:
self._sessionstarttime = py.std.time.time() self._sessionstarttime = py.std.time.time()
verinfo = ".".join(map(str, sys.version_info[:3])) verinfo = ".".join(map(str, sys.version_info[:3]))
msg = "platform %s -- Python %s" % (sys.platform, verinfo) msg = "platform %s -- Python %s" % (sys.platform, verinfo)
msg += " -- pytest-%s" % (py.__version__) msg += " -- pytest-%s" % (py.test.__version__)
if self.config.option.verbose or self.config.option.debug or \ if self.config.option.verbose or self.config.option.debug or \
getattr(self.config.option, 'pastebin', None): getattr(self.config.option, 'pastebin', None):
msg += " -- " + str(sys.executable) msg += " -- " + str(sys.executable)

View File

@ -180,16 +180,14 @@ class PluginManager(object):
if isinstance(value, dict): if isinstance(value, dict):
self._setns(getattr(obj, name), value) self._setns(getattr(obj, name), value)
else: else:
#print "setting", name, value #print "setting", name, value, "on", obj
setattr(obj, name, value) setattr(obj, name, value)
if hasattr(obj, '__all__'): obj.__all__.append(name)
py.test.__all__.append(name)
def pytest_plugin_registered(self, plugin): def pytest_plugin_registered(self, plugin):
dic = self.call_plugin(plugin, "pytest_namespace", {}) or {} dic = self.call_plugin(plugin, "pytest_namespace", {}) or {}
import pytest
if dic: if dic:
self._setns(pytest, dic) self._setns(py.test, dic)
if hasattr(self, '_config'): if hasattr(self, '_config'):
self.call_plugin(plugin, "pytest_addoption", self.call_plugin(plugin, "pytest_addoption",
{'parser': self._config._parser}) {'parser': self._config._parser})

View File

@ -33,6 +33,7 @@ def main():
author='holger krekel, Guido Wesdorp, Carl Friedrich Bolz, Armin Rigo, Maciej Fijalkowski & others', author='holger krekel, Guido Wesdorp, Carl Friedrich Bolz, Armin Rigo, Maciej Fijalkowski & others',
author_email='holger at merlinux.eu', author_email='holger at merlinux.eu',
entry_points= make_entry_points(), entry_points= make_entry_points(),
install_requires=['pylib>=1.3.9'],
classifiers=['Development Status :: 6 - Mature', classifiers=['Development Status :: 6 - Mature',
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License', 'License :: OSI Approved :: MIT License',

View File

@ -1,6 +1,9 @@
import py, os, sys import py, os, sys
import subprocess import subprocess
pytestmark = py.test.mark.xfail(run=False,
reason="XXX needs refactoring after pylib/pytest split")
def pytest_funcarg__standalone(request): def pytest_funcarg__standalone(request):
return request.cached_setup(scope="module", setup=lambda: Standalone(request)) return request.cached_setup(scope="module", setup=lambda: Standalone(request))
@ -17,6 +20,7 @@ class Standalone:
testdir.chdir() testdir.chdir()
return testdir._run(anypython, self.script, *args) return testdir._run(anypython, self.script, *args)
@pytestmark # XXX bug in application of global markers to generated functions?
def test_gen(testdir, anypython, standalone): def test_gen(testdir, anypython, standalone):
result = standalone.run(anypython, testdir, '-h') result = standalone.run(anypython, testdir, '-h')
assert result.ret == 0 assert result.ret == 0

View File

@ -210,8 +210,8 @@ def test_plugin_specify(testdir):
#) #)
def test_plugin_already_exists(testdir): def test_plugin_already_exists(testdir):
config = testdir.parseconfig("-p", "default") config = testdir.parseconfig("-p", "session")
assert config.option.plugins == ['default'] assert config.option.plugins == ['session']
config.pluginmanager.do_configure(config) config.pluginmanager.do_configure(config)
def test_exclude(testdir): def test_exclude(testdir):

19
tox.ini
View File

@ -4,21 +4,21 @@ envlist=py26,py27,py31,py27-xdist,py25,py24
[tox:hudson] [tox:hudson]
distshare={toxworkdir}/distshare distshare={toxworkdir}/distshare
sdistsrc={distshare}/py-* sdistsrc={distshare}/pytest-*
[testenv] [testenv]
changedir=testing changedir=testing
commands= commands=
py.test -rfsxX --junitxml={envlogdir}/junit-{envname}.xml [] py.test -rfsxX --junitxml={envlogdir}/junit-{envname}.xml []
deps= deps=
{distshare}/pylib-*
pexpect pexpect
nose nose
[testenv:py27]
basepython=python2.7
[testenv:py27-xdist] [testenv:py27-xdist]
basepython=python2.7 basepython=python2.7
deps= deps=
{distshare}/py-* {distshare}/pylib-*
{distshare}/pytest-xdist-* {distshare}/pytest-xdist-*
commands= commands=
py.test -n3 -rfsxX \ py.test -n3 -rfsxX \
@ -41,16 +41,13 @@ deps=docutils
commands= commands=
{envpython} bin-for-dist/makepluginlist.py {envpython} bin-for-dist/makepluginlist.py
py.test [doc] -rsfxX --junitxml={envlogdir}/junit-{envname}s.xml --forcegen py.test [doc] -rsfxX --junitxml={envlogdir}/junit-{envname}s.xml --forcegen
[testenv:py25]
basepython=python2.5
[testenv:py24]
basepython=python2.4
[testenv:py31] [testenv:py31]
basepython=python3.1 deps= {distshare}/pylib-*
deps=
[testenv:py32] [testenv:py32]
basepython=python3.2
deps= deps=
#{distshare}/pytest-xdist-* #{distshare}/pytest-xdist-*
#[testenv:pypy] #[testenv:pypy]
#python=pypy-c #python=pypy-c