nicer error message for non-collectable test files / items

fixes issue #27

--HG--
branch : 1.0.x
This commit is contained in:
holger krekel 2009-08-06 15:26:45 +02:00
parent cea46a86aa
commit 58c6971dc8
3 changed files with 15 additions and 6 deletions

View File

@ -5,7 +5,10 @@ Changes between 1.0.0 and 1.0.1
work within tests, they are encoded as "utf8" by default, terminalwriting work within tests, they are encoded as "utf8" by default, terminalwriting
was adapted and somewhat unified between windows and linux was adapted and somewhat unified between windows and linux
* terser reporting of collection error tracebacks, now skips py-internals * fix issue #27: better reporting on non-collectable items given on commandline
(e.g. pyc files)
* terser reporting of collection error tracebacks
* renaming of arguments to some special rather internal hooks * renaming of arguments to some special rather internal hooks

View File

@ -167,16 +167,13 @@ class Node(object):
if colitem.fspath == fspath or colitem.name == basename: if colitem.fspath == fspath or colitem.name == basename:
l.append(colitem) l.append(colitem)
if not l: if not l:
msg = ("Collector %r does not provide %r colitem " raise self.config.Error("can't collect: %s" %(fspath,))
"existing colitems are: %s" %
(cur, fspath, colitems))
raise AssertionError(msg)
if basenames: if basenames:
if len(l) > 1: if len(l) > 1:
msg = ("Collector %r has more than one %r colitem " msg = ("Collector %r has more than one %r colitem "
"existing colitems are: %s" % "existing colitems are: %s" %
(cur, fspath, colitems)) (cur, fspath, colitems))
raise AssertionError(msg) raise self.config.Error("xxx-too many test types for: %s" % (fspath, ))
cur = l[0] cur = l[0]
else: else:
if len(l) > 1: if len(l) > 1:

View File

@ -67,3 +67,12 @@ class TestGeneralUsage:
"E ImportError: No module named does_not_work", "E ImportError: No module named does_not_work",
]) ])
assert result.ret == 1 assert result.ret == 1
def test_not_collectable_arguments(self, testdir):
p1 = testdir.makepyfile("")
p2 = testdir.makefile(".pyc", "123")
result = testdir.runpytest(p1, p2)
assert result.ret != 0
assert result.stderr.fnmatch_lines([
"*ERROR: can't collect: %s" %(p2,)
])