Node: do not add "::()" to nodeid

Fixes https://github.com/pytest-dev/pytest/issues/4127.
This commit is contained in:
Daniel Hahler
2018-11-09 11:03:07 +01:00
parent 10d27f412b
commit ac8b9c6e9d
6 changed files with 33 additions and 23 deletions

View File

@@ -27,7 +27,7 @@ def _splitnode(nodeid):
''
'testing/code'
'testing/code/test_excinfo.py'
'testing/code/test_excinfo.py::TestFormattedExcinfo::()'
'testing/code/test_excinfo.py::TestFormattedExcinfo'
Return values are lists e.g.
[]
@@ -39,7 +39,7 @@ def _splitnode(nodeid):
# If there is no root node at all, return an empty list so the caller's logic can remain sane
return []
parts = nodeid.split(SEP)
# Replace single last element 'test_foo.py::Bar::()' with multiple elements 'test_foo.py', 'Bar', '()'
# Replace single last element 'test_foo.py::Bar' with multiple elements 'test_foo.py', 'Bar'
parts[-1:] = parts[-1].split("::")
return parts
@@ -47,7 +47,7 @@ def _splitnode(nodeid):
def ischildnode(baseid, nodeid):
"""Return True if the nodeid is a child node of the baseid.
E.g. 'foo/bar::Baz::()' is a child of 'foo', 'foo/bar' and 'foo/bar::Baz', but not of 'foo/blorp'
E.g. 'foo/bar::Baz' is a child of 'foo', 'foo/bar' and 'foo/bar::Baz', but not of 'foo/blorp'
"""
base_parts = _splitnode(baseid)
node_parts = _splitnode(nodeid)
@@ -107,10 +107,12 @@ class Node(object):
self._name2pseudofixturedef = {}
if nodeid is not None:
assert "::()" not in nodeid
self._nodeid = nodeid
else:
assert parent is not None
self._nodeid = self.parent.nodeid + "::" + self.name
self._nodeid = self.parent.nodeid
if self.name != "()":
self._nodeid += "::" + self.name
@property
def ihook(self):