[svn r63073] make sure that generated test names are always unique

--HG--
branch : trunk
This commit is contained in:
hpk 2009-03-19 15:34:33 +01:00
parent 6b9bf26536
commit 92b2d4786d
2 changed files with 18 additions and 0 deletions

View File

@ -288,6 +288,7 @@ class Generator(FunctionMixin, PyCollectorMixin, py.test.collect.Collector):
# otherwise we could avoid global setupstate
self.config._setupstate.prepare(self)
l = []
seen = {}
for i, x in py.builtin.enumerate(self.obj()):
name, call, args = self.getcallargs(x)
if not callable(call):
@ -296,6 +297,9 @@ class Generator(FunctionMixin, PyCollectorMixin, py.test.collect.Collector):
name = "[%d]" % i
else:
name = "['%s']" % name
if name in seen:
raise ValueError("%r generated tests with non-unique name %r" %(self, name))
seen[name] = True
l.append(self.Function(name, self, args=args, callobj=call))
return l

View File

@ -140,6 +140,20 @@ class TestGenerator:
assert gencolitems[1].name == "['fortytwo']"
assert gencolitems[1].obj.func_name == 'func1'
def test_generative_functions_unique_explicit_names(self, testdir):
# generative
modcol = testdir.getmodulecol("""
def func(): pass
def test_gen():
yield "name", func
yield "name", func
""")
colitems = modcol.collect()
assert len(colitems) == 1
gencol = colitems[0]
assert isinstance(gencol, py.test.collect.Generator)
py.test.raises(ValueError, "gencol.collect()")
def test_generative_methods_with_explicit_names(self, testdir):
modcol = testdir.getmodulecol("""
def func1(arg, arg2):