From anonymous, 4 Months ago, written in Diff-output.
Embed
  1. diff --git c/src/_pytest/nodes.py i/src/_pytest/nodes.py
  2. index 4d12f07a2..00d501543 100644
  3. --- c/src/_pytest/nodes.py
  4. +++ i/src/_pytest/nodes.py
  5. @@ -4,7 +4,6 @@
  6.  from pathlib import Path
  7.  from typing import Any
  8.  from typing import Callable
  9. -from typing import cast
  10.  from typing import Iterable
  11.  from typing import Iterator
  12.  from typing import List
  13. @@ -555,39 +554,26 @@ def _check_initialpaths_for_relpath(session: "Session", path: Path) -> Optional[
  14.  class FSCollector(Collector):
  15.      def __init__(
  16.          self,
  17. -        fspath: Optional[LEGACY_PATH] = None,
  18. -        path_or_parent: Optional[Union[Path, Node]] = None,
  19. -        path: Optional[Path] = None,
  20. -        name: Optional[str] = None,
  21. -        parent: Optional[Node] = None,
  22. +        fspath: Optional[LEGACY_PATH],
  23. +        path: Optional[Path],
  24. +        parent=None,
  25.          config: Optional[Config] = None,
  26.          session: Optional["Session"] = None,
  27.          nodeid: Optional[str] = None,
  28.      ) -> None:
  29. -        if path_or_parent:
  30. -            if isinstance(path_or_parent, Node):
  31. -                assert parent is None
  32. -                parent = cast(FSCollector, path_or_parent)
  33. -            elif isinstance(path_or_parent, Path):
  34. -                assert path is None
  35. -                path = path_or_parent
  36. -
  37.          path, fspath = _imply_path(path, fspath=fspath)
  38. -        if name is None:
  39. -            name = path.name
  40. -            if parent is not None and parent.path != path:
  41. -                try:
  42. -                    rel = path.relative_to(parent.path)
  43. -                except ValueError:
  44. -                    pass
  45. -                else:
  46. -                    name = str(rel)
  47. -                name = name.replace(os.sep, SEP)
  48. +        name = path.name
  49. +        if parent is not None and parent.path != path:
  50. +            try:
  51. +                rel = path.relative_to(parent.path)
  52. +            except ValueError:
  53. +                pass
  54. +            else:
  55. +                name = str(rel)
  56. +            name = name.replace(os.sep, SEP)
  57.          self.path = path
  58.  
  59. -        if session is None:
  60. -            assert parent is not None
  61. -            session = parent.session
  62. +        session = session or parent.session
  63.  
  64.          if nodeid is None:
  65.              try:
  66. @@ -599,12 +585,7 @@ def __init__(
  67.                  nodeid = nodeid.replace(os.sep, SEP)
  68.  
  69.          super().__init__(
  70. -            name=name,
  71. -            parent=parent,
  72. -            config=config,
  73. -            session=session,
  74. -            nodeid=nodeid,
  75. -            path=path,
  76. +            name, parent, config, session, nodeid=nodeid, fspath=fspath, path=path
  77.          )
  78.  
  79.      @classmethod
  80. @@ -665,16 +646,8 @@ def __init__(
  81.          config: Optional[Config] = None,
  82.          session: Optional["Session"] = None,
  83.          nodeid: Optional[str] = None,
  84. -        **kw,
  85.      ) -> None:
  86. -        super().__init__(
  87. -            name=name,
  88. -            parent=parent,
  89. -            config=config,
  90. -            session=session,
  91. -            nodeid=nodeid,
  92. -            **kw,
  93. -        )
  94. +        super().__init__(name, parent, config, session, nodeid=nodeid)
  95.          self._report_sections: List[Tuple[str, str, str]] = []
  96.  
  97.          #: A list of tuples (name, value) that holds user defined properties
  98.