fix some standalone-script running issues:
* standalone can run standalone tests * exception handling is more careful with assuming valid filenames * bits here and there --HG-- branch : trunk
This commit is contained in:
parent
6495007aba
commit
a42d9eb9f6
|
@ -6,8 +6,8 @@ import zlib
|
||||||
import base64
|
import base64
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
def main(pydir, outfile, infile):
|
def main(pybasedir, outfile, infile):
|
||||||
os.chdir(os.path.dirname(str(pydir)))
|
os.chdir(str(pybasedir))
|
||||||
outfile = str(outfile)
|
outfile = str(outfile)
|
||||||
infile = str(infile)
|
infile = str(infile)
|
||||||
files = []
|
files = []
|
||||||
|
@ -37,7 +37,7 @@ def main(pydir, outfile, infile):
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
dn = os.path.dirname
|
dn = os.path.dirname
|
||||||
pydir = os.path.join(dn(dn(os.path.abspath(__file__))), 'py')
|
pybasedir = dn(dn(os.path.abspath(__file__)))
|
||||||
outfile = os.path.join(dn(__file__), "py.test")
|
outfile = os.path.join(dn(__file__), "py.test")
|
||||||
infile = outfile+"-in"
|
infile = outfile+"-in"
|
||||||
main(pydir, outfile, infile)
|
main(pybasedir, outfile, infile)
|
||||||
|
|
|
@ -2,6 +2,8 @@ import py, os, sys
|
||||||
import generate_standalone_pytest
|
import generate_standalone_pytest
|
||||||
import subprocess
|
import subprocess
|
||||||
mydir = py.path.local(__file__).dirpath()
|
mydir = py.path.local(__file__).dirpath()
|
||||||
|
pybasedir = mydir.join("..")
|
||||||
|
assert pybasedir.join("py").check()
|
||||||
|
|
||||||
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))
|
||||||
|
@ -11,7 +13,7 @@ class Standalone:
|
||||||
self.testdir = request.getfuncargvalue("testdir")
|
self.testdir = request.getfuncargvalue("testdir")
|
||||||
infile = mydir.join("py.test-in")
|
infile = mydir.join("py.test-in")
|
||||||
self.script = self.testdir.tmpdir.join("mypytest")
|
self.script = self.testdir.tmpdir.join("mypytest")
|
||||||
generate_standalone_pytest.main(pydir=os.path.dirname(py.__file__),
|
generate_standalone_pytest.main(pybasedir=pybasedir,
|
||||||
infile=infile, outfile=self.script)
|
infile=infile, outfile=self.script)
|
||||||
|
|
||||||
def run(self, anypython, testdir, *args):
|
def run(self, anypython, testdir, *args):
|
||||||
|
@ -34,6 +36,6 @@ def test_rundist(testdir, standalone):
|
||||||
""")
|
""")
|
||||||
result = standalone.run(sys.executable, testdir, '-n', '3')
|
result = standalone.run(sys.executable, testdir, '-n', '3')
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
result.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
"*1 passed*"
|
"*1 passed*"
|
||||||
])
|
])
|
||||||
|
|
|
@ -537,8 +537,9 @@ class FormattedExcinfo(object):
|
||||||
else:
|
else:
|
||||||
if self.style == "short":
|
if self.style == "short":
|
||||||
line = source[line_index].lstrip()
|
line = source[line_index].lstrip()
|
||||||
|
trybasename = getattr(entry.path, 'basename', entry.path)
|
||||||
lines.append(' File "%s", line %d, in %s' % (
|
lines.append(' File "%s", line %d, in %s' % (
|
||||||
entry.path.basename, entry.lineno+1, entry.name))
|
trybasename, entry.lineno+1, entry.name))
|
||||||
lines.append(" " + line)
|
lines.append(" " + line)
|
||||||
if excinfo:
|
if excinfo:
|
||||||
lines.extend(self.get_exconly(excinfo, indent=4))
|
lines.extend(self.get_exconly(excinfo, indent=4))
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from py.plugin.pytest_doctest import DoctestModule, DoctestTextfile
|
from py.plugin.pytest_doctest import DoctestModule, DoctestTextfile
|
||||||
|
|
||||||
|
pytest_plugins = ["pytest_doctest"]
|
||||||
|
|
||||||
class TestDoctests:
|
class TestDoctests:
|
||||||
|
|
||||||
def test_collect_testtextfile(self, testdir):
|
def test_collect_testtextfile(self, testdir):
|
||||||
|
@ -12,14 +14,15 @@ class TestDoctests:
|
||||||
""")
|
""")
|
||||||
for x in (testdir.tmpdir, checkfile):
|
for x in (testdir.tmpdir, checkfile):
|
||||||
#print "checking that %s returns custom items" % (x,)
|
#print "checking that %s returns custom items" % (x,)
|
||||||
items, reprec = testdir.inline_genitems(x)
|
items, reprec = testdir.inline_genitems(x, '-p', 'doctest')
|
||||||
assert len(items) == 1
|
assert len(items) == 1
|
||||||
assert isinstance(items[0], DoctestTextfile)
|
assert isinstance(items[0], DoctestTextfile)
|
||||||
|
|
||||||
def test_collect_module(self, testdir):
|
def test_collect_module(self, testdir):
|
||||||
path = testdir.makepyfile(whatever="#")
|
path = testdir.makepyfile(whatever="#")
|
||||||
for p in (path, testdir.tmpdir):
|
for p in (path, testdir.tmpdir):
|
||||||
items, reprec = testdir.inline_genitems(p, '--doctest-modules')
|
items, reprec = testdir.inline_genitems(p, '-p', 'doctest',
|
||||||
|
'--doctest-modules')
|
||||||
assert len(items) == 1
|
assert len(items) == 1
|
||||||
assert isinstance(items[0], DoctestModule)
|
assert isinstance(items[0], DoctestModule)
|
||||||
|
|
||||||
|
@ -29,7 +32,7 @@ class TestDoctests:
|
||||||
>>> x == 1
|
>>> x == 1
|
||||||
False
|
False
|
||||||
""")
|
""")
|
||||||
reprec = testdir.inline_run(p)
|
reprec = testdir.inline_run(p, '-p', 'doctest')
|
||||||
reprec.assertoutcome(failed=1)
|
reprec.assertoutcome(failed=1)
|
||||||
|
|
||||||
def test_doctest_unexpected_exception(self, testdir):
|
def test_doctest_unexpected_exception(self, testdir):
|
||||||
|
@ -41,7 +44,7 @@ class TestDoctests:
|
||||||
>>> x
|
>>> x
|
||||||
2
|
2
|
||||||
""")
|
""")
|
||||||
reprec = testdir.inline_run(p)
|
reprec = testdir.inline_run(p, '-p', 'doctest')
|
||||||
call = reprec.getcall("pytest_runtest_logreport")
|
call = reprec.getcall("pytest_runtest_logreport")
|
||||||
assert call.report.failed
|
assert call.report.failed
|
||||||
assert call.report.longrepr
|
assert call.report.longrepr
|
||||||
|
@ -60,7 +63,7 @@ class TestDoctests:
|
||||||
|
|
||||||
'''
|
'''
|
||||||
""")
|
""")
|
||||||
reprec = testdir.inline_run(p, "--doctest-modules")
|
reprec = testdir.inline_run(p, '-p', 'doctest', "--doctest-modules")
|
||||||
reprec.assertoutcome(failed=1)
|
reprec.assertoutcome(failed=1)
|
||||||
|
|
||||||
def test_doctestmodule_external(self, testdir):
|
def test_doctestmodule_external(self, testdir):
|
||||||
|
@ -73,7 +76,7 @@ class TestDoctests:
|
||||||
2
|
2
|
||||||
'''
|
'''
|
||||||
""")
|
""")
|
||||||
result = testdir.runpytest(p, "--doctest-modules")
|
result = testdir.runpytest(p, '-p', 'doctest', "--doctest-modules")
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
'004 *>>> i = 0',
|
'004 *>>> i = 0',
|
||||||
'005 *>>> i + 1',
|
'005 *>>> i + 1',
|
||||||
|
@ -91,7 +94,7 @@ class TestDoctests:
|
||||||
>>> i + 1
|
>>> i + 1
|
||||||
2
|
2
|
||||||
""")
|
""")
|
||||||
result = testdir.runpytest(p)
|
result = testdir.runpytest(p, '-p', 'doctest')
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
'001 >>> i = 0',
|
'001 >>> i = 0',
|
||||||
'002 >>> i + 1',
|
'002 >>> i + 1',
|
||||||
|
|
|
@ -5,9 +5,9 @@ def test_version(testdir):
|
||||||
assert py.version == py.__version__
|
assert py.version == py.__version__
|
||||||
result = testdir.runpytest("--version")
|
result = testdir.runpytest("--version")
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
p = py.path.local(py.__file__).dirpath()
|
#p = py.path.local(py.__file__).dirpath()
|
||||||
assert result.stderr.fnmatch_lines([
|
assert result.stderr.fnmatch_lines([
|
||||||
'*py.test*%s*imported from*%s*' % (py.version, p)
|
'*py.test*%s*imported from*' % (py.version, )
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_helpconfig(testdir):
|
def test_helpconfig(testdir):
|
||||||
|
|
Loading…
Reference in New Issue