[svn r63073] make sure that generated test names are always unique
--HG-- branch : trunk
This commit is contained in:
parent
6b9bf26536
commit
92b2d4786d
|
@ -288,6 +288,7 @@ class Generator(FunctionMixin, PyCollectorMixin, py.test.collect.Collector):
|
||||||
# otherwise we could avoid global setupstate
|
# otherwise we could avoid global setupstate
|
||||||
self.config._setupstate.prepare(self)
|
self.config._setupstate.prepare(self)
|
||||||
l = []
|
l = []
|
||||||
|
seen = {}
|
||||||
for i, x in py.builtin.enumerate(self.obj()):
|
for i, x in py.builtin.enumerate(self.obj()):
|
||||||
name, call, args = self.getcallargs(x)
|
name, call, args = self.getcallargs(x)
|
||||||
if not callable(call):
|
if not callable(call):
|
||||||
|
@ -296,6 +297,9 @@ class Generator(FunctionMixin, PyCollectorMixin, py.test.collect.Collector):
|
||||||
name = "[%d]" % i
|
name = "[%d]" % i
|
||||||
else:
|
else:
|
||||||
name = "['%s']" % name
|
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))
|
l.append(self.Function(name, self, args=args, callobj=call))
|
||||||
return l
|
return l
|
||||||
|
|
||||||
|
|
|
@ -140,6 +140,20 @@ class TestGenerator:
|
||||||
assert gencolitems[1].name == "['fortytwo']"
|
assert gencolitems[1].name == "['fortytwo']"
|
||||||
assert gencolitems[1].obj.func_name == 'func1'
|
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):
|
def test_generative_methods_with_explicit_names(self, testdir):
|
||||||
modcol = testdir.getmodulecol("""
|
modcol = testdir.getmodulecol("""
|
||||||
def func1(arg, arg2):
|
def func1(arg, arg2):
|
||||||
|
|
Loading…
Reference in New Issue