Bug 2084011

Summary: pytest fails to build with Python 3.11: IndexError: string index out of range
Product: [Fedora] Fedora Reporter: Tomáš Hrnčiar <thrnciar>
Component: pytestAssignee: Thomas Moschny <thomas.moschny>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: dradez, mhroncok, mrunge, thomas.moschny, thrnciar
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-06-06 12:05:01 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2016048    

Description Tomáš Hrnčiar 2022-05-11 08:11:51 UTC
pytest fails to build with Python 3.11.0b1.

=================================== FAILURES ===================================
__ TestConftestVisibility.test_parsefactories_relative_node_ids[runner-..-3] ___
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbc050>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids0')>
chdir = 'runner', testarg = '..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids0')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[package-..-3] __
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbf450>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids1')>
chdir = 'package', testarg = '..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids1')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[swc-../..-3] ___
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbd410>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids2')>
chdir = 'swc', testarg = '../..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids2')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[snc-../..-3] ___
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbd0d0>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids3')>
chdir = 'snc', testarg = '../..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids3')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
_ TestConftestVisibility.test_parsefactories_relative_node_ids[runner-../package-3] _
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbdfd0>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids4')>
chdir = 'runner', testarg = '../package', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids4')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[package-.-3] ___
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbfd50>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids5')>
chdir = 'package', testarg = '.', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids5')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
____ TestConftestVisibility.test_parsefactories_relative_node_ids[swc-..-3] ____
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805c9ecd90>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids6')>
chdir = 'swc', testarg = '..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids6')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
____ TestConftestVisibility.test_parsefactories_relative_node_ids[snc-..-3] ____
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd53350>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids7')>
chdir = 'snc', testarg = '..', expect_ntests_passed = 3

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids7')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
_ TestConftestVisibility.test_parsefactories_relative_node_ids[runner-../package/swc-1] _
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805c9bd2d0>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids8')>
chdir = 'runner', testarg = '../package/swc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids8')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
_ TestConftestVisibility.test_parsefactories_relative_node_ids[package-./swc-1] _
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbef10>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids9')>
chdir = 'package', testarg = './swc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids9')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
____ TestConftestVisibility.test_parsefactories_relative_node_ids[swc-.-1] _____
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cdbde10>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids10')>
chdir = 'swc', testarg = '.', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids10')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[snc-../swc-1] __
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd85990>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids11')>
chdir = 'snc', testarg = '../swc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids11')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
_ TestConftestVisibility.test_parsefactories_relative_node_ids[runner-../package/snc-1] _
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd86d90>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids12')>
chdir = 'runner', testarg = '../package/snc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids12')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
_ TestConftestVisibility.test_parsefactories_relative_node_ids[package-./snc-1] _
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd87210>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids13')>
chdir = 'package', testarg = './snc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids13')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
__ TestConftestVisibility.test_parsefactories_relative_node_ids[swc-../snc-1] __
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd86150>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids14')>
chdir = 'swc', testarg = '../snc', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids14')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
____ TestConftestVisibility.test_parsefactories_relative_node_ids[snc-.-1] _____
[gw1] linux -- Python 3.11.0 /usr/bin/python3

self = <test_conftest.TestConftestVisibility object at 0x7f805cd86bd0>
pytester = <Pytester PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids15')>
chdir = 'snc', testarg = '.', expect_ntests_passed = 1

    @pytest.mark.parametrize(
        "chdir,testarg,expect_ntests_passed",
        [
            # Effective target: package/..
            ("runner", "..", 3),
            ("package", "..", 3),
            ("swc", "../..", 3),
            ("snc", "../..", 3),
            # Effective target: package
            ("runner", "../package", 3),
            ("package", ".", 3),
            ("swc", "..", 3),
            ("snc", "..", 3),
            # Effective target: package/swc
            ("runner", "../package/swc", 1),
            ("package", "./swc", 1),
            ("swc", ".", 1),
            ("snc", "../swc", 1),
            # Effective target: package/snc
            ("runner", "../package/snc", 1),
            ("package", "./snc", 1),
            ("swc", "../snc", 1),
            ("snc", ".", 1),
        ],
    )
    def test_parsefactories_relative_node_ids(
        self, pytester: Pytester, chdir: str, testarg: str, expect_ntests_passed: int
    ) -> None:
        """#616"""
>       dirs = self._setup_tree(pytester)

/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:592: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/builddir/build/BUILD/pytest-7.1.2/testing/test_conftest.py:556: in _setup_tree
    for x in pytester.path.rglob(""):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_parsefactories_relative_node_ids15')
pattern = ''

    def rglob(self, pattern):
        """Recursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        """
        sys.audit("pathlib.Path.rglob", self, pattern)
        drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
        if drv or root:
            raise NotImplementedError("Non-relative patterns are unsupported")
>       if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
E       IndexError: string index out of range

/usr/lib64/python3.11/pathlib.py:963: IndexError
----------------------------- Captured stdout call -----------------------------
created directory structure:
=========================== short test summary info ============================
SKIPPED [1] testing/test_capture.py:1432: only on windows
SKIPPED [1] testing/test_pathlib.py:436: Windows only
SKIPPED [1] testing/test_tmpdir.py:221: win only
SKIPPED [1] testing/test_conftest.py:361: only relevant for case insensitive file systems
SKIPPED [1] ../../BUILDROOT/pytest-7.1.2-1.fc37.x86_64/usr/lib/python3.11/site-packages/_pytest/pathlib.py:434: symlinks not supported: [Errno 17] File exists: '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_collect_symlink_dir0/symlink_dir' -> '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_collect_symlink_dir0/dir'
SKIPPED [1] testing/test_config.py:1849: does not work with xdist currently
SKIPPED [1] testing/test_unittest.py:1287: could not import 'asynctest': No module named 'asynctest'
SKIPPED [3] testing/test_warnings.py:521: not relevant until pytest 8.0
SKIPPED [1] testing/test_compat.py:95: couroutine removed
SKIPPED [1] testing/test_faulthandler.py:71: sometimes crashes on CI (#7022)
====== 16 failed, 3107 passed, 12 skipped, 10 xfailed in 86.19s (0:01:26) ======

https://docs.python.org/3.11/whatsnew/3.11.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.11/fedora-rawhide-x86_64/04392328-pytest/

For all our attempts to build pytest with Python 3.11, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.11/package/pytest/

Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.11:
https://copr.fedorainfracloud.org/coprs/g/python/python3.11/

Let us know here if you have any questions.

Python 3.11 is planned to be included in Fedora 37. To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.11.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon.
We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.

Comment 2 Miro Hrončok 2022-05-11 09:34:26 UTC
But technically, this is a regression in Python: https://github.com/python/cpython/issues/92550 (was fixed in git)

Comment 3 Tomáš Hrnčiar 2022-05-11 11:02:38 UTC
I've opened PR, we can remove it later when it is fixed in Python.

https://src.fedoraproject.org/rpms/pytest/pull-request/29