Mock Version: 5.0 Mock Version: 5.0 Mock Version: 5.0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'], chrootPath='/var/lib/mock/f40-build-2301762-56814/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch setting SOURCE_DATE_EPOCH=1705795200 Wrote: /builddir/build/SRPMS/pytest-7.4.3-2.fc40.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'], chrootPath='/var/lib/mock/f40-build-2301762-56814/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueraiseExc=FalseprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch setting SOURCE_DATE_EPOCH=1705795200 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.k5FPxL + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pytest-7.4.3 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/pytest-7.4.3.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd pytest-7.4.3 + rm -rf /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/mkdir -p /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/pytest-7.1.3-fix-xfails.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/11611.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.XRkXuW + umask 022 + cd /builddir/build/BUILD + cd pytest-7.4.3 + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + RPM_TOXENV=py312 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir --output /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires -r Handling setuptools>=45.0 from build-system.requires Requirement satisfied: setuptools>=45.0 (installed: setuptools 68.2.2) Handling setuptools-scm[toml]>=6.2.3 from build-system.requires Requirement not satisfied: setuptools-scm[toml]>=6.2.3 Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/pytest-7.4.3-2.fc40.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'], chrootPath='/var/lib/mock/f40-build-2301762-56814/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueraiseExc=FalseprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch setting SOURCE_DATE_EPOCH=1705795200 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.hkp7S7 + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pytest-7.4.3 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/pytest-7.4.3.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd pytest-7.4.3 + rm -rf /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/mkdir -p /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/pytest-7.1.3-fix-xfails.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/11611.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.6CDaJc + umask 022 + cd /builddir/build/BUILD + cd pytest-7.4.3 + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + RPM_TOXENV=py312 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir --output /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires -r Handling setuptools>=45.0 from build-system.requires Requirement satisfied: setuptools>=45.0 (installed: setuptools 68.2.2) Handling setuptools-scm[toml]>=6.2.3 from build-system.requires Requirement satisfied: setuptools-scm[toml]>=6.2.3 (installed: setuptools-scm 8.0.4) (extras are currently not checked) Handling wheel from get_requires_for_build_wheel Requirement not satisfied: wheel Handling setuptools from get_requires_for_build_wheel Requirement satisfied: setuptools (installed: setuptools 68.2.2) Handling setuptools-scm>=6.0 from get_requires_for_build_wheel Requirement satisfied: setuptools-scm>=6.0 (installed: setuptools-scm 8.0.4) Exiting dependency generation pass: get_requires_for_build_wheel + cat /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/pytest-7.4.3-2.fc40.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'], chrootPath='/var/lib/mock/f40-build-2301762-56814/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueraiseExc=FalseprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch setting SOURCE_DATE_EPOCH=1705795200 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.bGHs8Q + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pytest-7.4.3 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/pytest-7.4.3.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd pytest-7.4.3 + rm -rf /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/mkdir -p /builddir/build/BUILD/pytest-7.4.3-SPECPARTS + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/pytest-7.1.3-fix-xfails.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/11611.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.UWaPqW + umask 022 + cd /builddir/build/BUILD + cd pytest-7.4.3 + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + RPM_TOXENV=py312 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir --output /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires -r Handling setuptools>=45.0 from build-system.requires Requirement satisfied: setuptools>=45.0 (installed: setuptools 68.2.2) Handling setuptools-scm[toml]>=6.2.3 from build-system.requires Requirement satisfied: setuptools-scm[toml]>=6.2.3 (installed: setuptools-scm 8.0.4) (extras are currently not checked) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.41.2) Handling setuptools from get_requires_for_build_wheel Requirement satisfied: setuptools (installed: setuptools 68.2.2) Handling setuptools-scm>=6.0 from get_requires_for_build_wheel Requirement satisfied: setuptools-scm>=6.0 (installed: setuptools-scm 8.0.4) running dist_info creating pytest.egg-info writing pytest.egg-info/PKG-INFO writing dependency_links to pytest.egg-info/dependency_links.txt writing entry points to pytest.egg-info/entry_points.txt writing requirements to pytest.egg-info/requires.txt writing top-level names to pytest.egg-info/top_level.txt writing manifest file 'pytest.egg-info/SOURCES.txt' reading manifest file 'pytest.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'pytest.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/pytest-7.4.3/pytest-7.4.3.dist-info' Handling iniconfig from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: iniconfig (installed: iniconfig 1.1.1) Handling packaging from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: packaging (installed: packaging 23.2) Handling pluggy <2.0,>=0.12 from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: pluggy <2.0,>=0.12 (installed: pluggy 1.3.0) Handling exceptiongroup >=1.0.0rc8 ; python_version < "3.11" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: exceptiongroup >=1.0.0rc8 ; python_version < "3.11" Handling tomli >=1.0.0 ; python_version < "3.11" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: tomli >=1.0.0 ; python_version < "3.11" Handling importlib-metadata >=0.12 ; python_version < "3.8" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: importlib-metadata >=0.12 ; python_version < "3.8" Handling colorama ; sys_platform == "win32" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: colorama ; sys_platform == "win32" Handling argcomplete ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: argcomplete ; extra == 'testing' Handling attrs >=19.2.0 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: attrs >=19.2.0 ; extra == 'testing' Handling hypothesis >=3.56 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: hypothesis >=3.56 ; extra == 'testing' Handling mock ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: mock ; extra == 'testing' Handling nose ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: nose ; extra == 'testing' Handling pygments >=2.7.2 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: pygments >=2.7.2 ; extra == 'testing' Handling requests ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: requests ; extra == 'testing' Handling setuptools ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: setuptools ; extra == 'testing' Handling xmlschema ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: xmlschema ; extra == 'testing' + cat /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires + rm -rfv pytest-7.4.3.dist-info/ removed 'pytest-7.4.3.dist-info/METADATA' removed 'pytest-7.4.3.dist-info/entry_points.txt' removed 'pytest-7.4.3.dist-info/top_level.txt' removed 'pytest-7.4.3.dist-info/LICENSE' removed directory 'pytest-7.4.3.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/pytest-7.4.3-2.fc40.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'], chrootPath='/var/lib/mock/f40-build-2301762-56814/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: noarch Building for target noarch setting SOURCE_DATE_EPOCH=1705795200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.xHpcdt + umask 022 + cd /builddir/build/BUILD + cd pytest-7.4.3 + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + RPM_TOXENV=py312 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir --output /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires -r Handling setuptools>=45.0 from build-system.requires Requirement satisfied: setuptools>=45.0 (installed: setuptools 68.2.2) Handling setuptools-scm[toml]>=6.2.3 from build-system.requires Requirement satisfied: setuptools-scm[toml]>=6.2.3 (installed: setuptools-scm 8.0.4) (extras are currently not checked) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.41.2) Handling setuptools from get_requires_for_build_wheel Requirement satisfied: setuptools (installed: setuptools 68.2.2) Handling setuptools-scm>=6.0 from get_requires_for_build_wheel Requirement satisfied: setuptools-scm>=6.0 (installed: setuptools-scm 8.0.4) running dist_info writing pytest.egg-info/PKG-INFO writing dependency_links to pytest.egg-info/dependency_links.txt writing entry points to pytest.egg-info/entry_points.txt writing requirements to pytest.egg-info/requires.txt writing top-level names to pytest.egg-info/top_level.txt reading manifest file 'pytest.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'pytest.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/pytest-7.4.3/pytest-7.4.3.dist-info' Handling iniconfig from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: iniconfig (installed: iniconfig 1.1.1) Handling packaging from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: packaging (installed: packaging 23.2) Handling pluggy <2.0,>=0.12 from hook generated metadata: Requires-Dist (pytest) Requirement satisfied: pluggy <2.0,>=0.12 (installed: pluggy 1.3.0) Handling exceptiongroup >=1.0.0rc8 ; python_version < "3.11" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: exceptiongroup >=1.0.0rc8 ; python_version < "3.11" Handling tomli >=1.0.0 ; python_version < "3.11" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: tomli >=1.0.0 ; python_version < "3.11" Handling importlib-metadata >=0.12 ; python_version < "3.8" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: importlib-metadata >=0.12 ; python_version < "3.8" Handling colorama ; sys_platform == "win32" from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: colorama ; sys_platform == "win32" Handling argcomplete ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: argcomplete ; extra == 'testing' Handling attrs >=19.2.0 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: attrs >=19.2.0 ; extra == 'testing' Handling hypothesis >=3.56 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: hypothesis >=3.56 ; extra == 'testing' Handling mock ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: mock ; extra == 'testing' Handling nose ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: nose ; extra == 'testing' Handling pygments >=2.7.2 ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: pygments >=2.7.2 ; extra == 'testing' Handling requests ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: requests ; extra == 'testing' Handling setuptools ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: setuptools ; extra == 'testing' Handling xmlschema ; extra == 'testing' from hook generated metadata: Requires-Dist (pytest) Ignoring alien requirement: xmlschema ; extra == 'testing' + cat /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-buildrequires + rm -rfv pytest-7.4.3.dist-info/ removed 'pytest-7.4.3.dist-info/METADATA' removed 'pytest-7.4.3.dist-info/entry_points.txt' removed 'pytest-7.4.3.dist-info/top_level.txt' removed 'pytest-7.4.3.dist-info/LICENSE' removed directory 'pytest-7.4.3.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.bVtM0x + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd pytest-7.4.3 + mkdir -p /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir Processing /builddir/build/BUILD/pytest-7.4.3 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) running dist_info creating /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info writing /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/dependency_links.txt writing entry points to /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/entry_points.txt writing requirements to /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/top_level.txt writing manifest file '/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/SOURCES.txt' reading manifest file '/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file '/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-modern-metadata-_htuo03m/pytest-7.4.3.dist-info' Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: pytest Building wheel for pytest (pyproject.toml): started Running command Building wheel for pytest (pyproject.toml) running bdist_wheel running build running build_py creating build creating build/lib copying src/py.py -> build/lib creating build/lib/_pytest copying src/_pytest/reports.py -> build/lib/_pytest copying src/_pytest/__init__.py -> build/lib/_pytest copying src/_pytest/scope.py -> build/lib/_pytest copying src/_pytest/main.py -> build/lib/_pytest copying src/_pytest/recwarn.py -> build/lib/_pytest copying src/_pytest/python.py -> build/lib/_pytest copying src/_pytest/setupplan.py -> build/lib/_pytest copying src/_pytest/junitxml.py -> build/lib/_pytest copying src/_pytest/stash.py -> build/lib/_pytest copying src/_pytest/logging.py -> build/lib/_pytest copying src/_pytest/pytester_assertions.py -> build/lib/_pytest copying src/_pytest/_argcomplete.py -> build/lib/_pytest copying src/_pytest/tmpdir.py -> build/lib/_pytest copying src/_pytest/pytester.py -> build/lib/_pytest copying src/_pytest/skipping.py -> build/lib/_pytest copying src/_pytest/deprecated.py -> build/lib/_pytest copying src/_pytest/doctest.py -> build/lib/_pytest copying src/_pytest/unittest.py -> build/lib/_pytest copying src/_pytest/terminal.py -> build/lib/_pytest copying src/_pytest/faulthandler.py -> build/lib/_pytest copying src/_pytest/fixtures.py -> build/lib/_pytest copying src/_pytest/runner.py -> build/lib/_pytest copying src/_pytest/setuponly.py -> build/lib/_pytest copying src/_pytest/warnings.py -> build/lib/_pytest copying src/_pytest/monkeypatch.py -> build/lib/_pytest copying src/_pytest/_version.py -> build/lib/_pytest copying src/_pytest/compat.py -> build/lib/_pytest copying src/_pytest/unraisableexception.py -> build/lib/_pytest copying src/_pytest/helpconfig.py -> build/lib/_pytest copying src/_pytest/warning_types.py -> build/lib/_pytest copying src/_pytest/hookspec.py -> build/lib/_pytest copying src/_pytest/python_api.py -> build/lib/_pytest copying src/_pytest/outcomes.py -> build/lib/_pytest copying src/_pytest/pastebin.py -> build/lib/_pytest copying src/_pytest/cacheprovider.py -> build/lib/_pytest copying src/_pytest/nose.py -> build/lib/_pytest copying src/_pytest/python_path.py -> build/lib/_pytest copying src/_pytest/nodes.py -> build/lib/_pytest copying src/_pytest/legacypath.py -> build/lib/_pytest copying src/_pytest/capture.py -> build/lib/_pytest copying src/_pytest/stepwise.py -> build/lib/_pytest copying src/_pytest/timing.py -> build/lib/_pytest copying src/_pytest/debugging.py -> build/lib/_pytest copying src/_pytest/threadexception.py -> build/lib/_pytest copying src/_pytest/pathlib.py -> build/lib/_pytest copying src/_pytest/freeze_support.py -> build/lib/_pytest creating build/lib/_pytest/_code copying src/_pytest/_code/__init__.py -> build/lib/_pytest/_code copying src/_pytest/_code/code.py -> build/lib/_pytest/_code copying src/_pytest/_code/source.py -> build/lib/_pytest/_code creating build/lib/_pytest/_io copying src/_pytest/_io/__init__.py -> build/lib/_pytest/_io copying src/_pytest/_io/wcwidth.py -> build/lib/_pytest/_io copying src/_pytest/_io/saferepr.py -> build/lib/_pytest/_io copying src/_pytest/_io/terminalwriter.py -> build/lib/_pytest/_io creating build/lib/_pytest/_py copying src/_pytest/_py/__init__.py -> build/lib/_pytest/_py copying src/_pytest/_py/error.py -> build/lib/_pytest/_py copying src/_pytest/_py/path.py -> build/lib/_pytest/_py creating build/lib/_pytest/assertion copying src/_pytest/assertion/__init__.py -> build/lib/_pytest/assertion copying src/_pytest/assertion/rewrite.py -> build/lib/_pytest/assertion copying src/_pytest/assertion/truncate.py -> build/lib/_pytest/assertion copying src/_pytest/assertion/util.py -> build/lib/_pytest/assertion creating build/lib/_pytest/config copying src/_pytest/config/__init__.py -> build/lib/_pytest/config copying src/_pytest/config/findpaths.py -> build/lib/_pytest/config copying src/_pytest/config/exceptions.py -> build/lib/_pytest/config copying src/_pytest/config/compat.py -> build/lib/_pytest/config copying src/_pytest/config/argparsing.py -> build/lib/_pytest/config creating build/lib/_pytest/mark copying src/_pytest/mark/__init__.py -> build/lib/_pytest/mark copying src/_pytest/mark/expression.py -> build/lib/_pytest/mark copying src/_pytest/mark/structures.py -> build/lib/_pytest/mark creating build/lib/pytest copying src/pytest/__init__.py -> build/lib/pytest copying src/pytest/__main__.py -> build/lib/pytest copying src/_pytest/py.typed -> build/lib/_pytest copying src/pytest/py.typed -> build/lib/pytest installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64 creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/reports.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/scope.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/config/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/config/findpaths.py -> build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/config/exceptions.py -> build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/config/compat.py -> build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/config/argparsing.py -> build/bdist.linux-riscv64/wheel/_pytest/config copying build/lib/_pytest/main.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/recwarn.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/assertion copying build/lib/_pytest/assertion/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/assertion copying build/lib/_pytest/assertion/rewrite.py -> build/bdist.linux-riscv64/wheel/_pytest/assertion copying build/lib/_pytest/assertion/truncate.py -> build/bdist.linux-riscv64/wheel/_pytest/assertion copying build/lib/_pytest/assertion/util.py -> build/bdist.linux-riscv64/wheel/_pytest/assertion copying build/lib/_pytest/python.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/setupplan.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/junitxml.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/py.typed -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/stash.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/logging.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/pytester_assertions.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/_argcomplete.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/tmpdir.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/pytester.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/_code copying build/lib/_pytest/_code/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/_code copying build/lib/_pytest/_code/code.py -> build/bdist.linux-riscv64/wheel/_pytest/_code copying build/lib/_pytest/_code/source.py -> build/bdist.linux-riscv64/wheel/_pytest/_code copying build/lib/_pytest/skipping.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/deprecated.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/doctest.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/unittest.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/terminal.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/faulthandler.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/_io copying build/lib/_pytest/_io/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/_io copying build/lib/_pytest/_io/wcwidth.py -> build/bdist.linux-riscv64/wheel/_pytest/_io copying build/lib/_pytest/_io/saferepr.py -> build/bdist.linux-riscv64/wheel/_pytest/_io copying build/lib/_pytest/_io/terminalwriter.py -> build/bdist.linux-riscv64/wheel/_pytest/_io copying build/lib/_pytest/fixtures.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/runner.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/setuponly.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/_py copying build/lib/_pytest/_py/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/_py copying build/lib/_pytest/_py/error.py -> build/bdist.linux-riscv64/wheel/_pytest/_py copying build/lib/_pytest/_py/path.py -> build/bdist.linux-riscv64/wheel/_pytest/_py copying build/lib/_pytest/warnings.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/monkeypatch.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/_version.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/compat.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/unraisableexception.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/helpconfig.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/warning_types.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/hookspec.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/python_api.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/outcomes.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/pastebin.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/cacheprovider.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/nose.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/python_path.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/nodes.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/legacypath.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/capture.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/stepwise.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/_pytest/mark copying build/lib/_pytest/mark/__init__.py -> build/bdist.linux-riscv64/wheel/_pytest/mark copying build/lib/_pytest/mark/expression.py -> build/bdist.linux-riscv64/wheel/_pytest/mark copying build/lib/_pytest/mark/structures.py -> build/bdist.linux-riscv64/wheel/_pytest/mark copying build/lib/_pytest/timing.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/debugging.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/threadexception.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/pathlib.py -> build/bdist.linux-riscv64/wheel/_pytest copying build/lib/_pytest/freeze_support.py -> build/bdist.linux-riscv64/wheel/_pytest creating build/bdist.linux-riscv64/wheel/pytest copying build/lib/pytest/__init__.py -> build/bdist.linux-riscv64/wheel/pytest copying build/lib/pytest/__main__.py -> build/bdist.linux-riscv64/wheel/pytest copying build/lib/pytest/py.typed -> build/bdist.linux-riscv64/wheel/pytest copying build/lib/py.py -> build/bdist.linux-riscv64/wheel running install_egg_info running egg_info writing src/pytest.egg-info/PKG-INFO writing dependency_links to src/pytest.egg-info/dependency_links.txt writing entry points to src/pytest.egg-info/entry_points.txt writing requirements to src/pytest.egg-info/requires.txt writing top-level names to src/pytest.egg-info/top_level.txt reading manifest file 'src/pytest.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'src/pytest.egg-info/SOURCES.txt' Copying src/pytest.egg-info to build/bdist.linux-riscv64/wheel/pytest-7.4.3-py3.12.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/pytest-7.4.3.dist-info/WHEEL creating '/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir/pip-wheel-ipg11fee/.tmp-9kj7a623/pytest-7.4.3-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'py.py' adding '_pytest/__init__.py' adding '_pytest/_argcomplete.py' adding '_pytest/_version.py' adding '_pytest/cacheprovider.py' adding '_pytest/capture.py' adding '_pytest/compat.py' adding '_pytest/debugging.py' adding '_pytest/deprecated.py' adding '_pytest/doctest.py' adding '_pytest/faulthandler.py' adding '_pytest/fixtures.py' adding '_pytest/freeze_support.py' adding '_pytest/helpconfig.py' adding '_pytest/hookspec.py' adding '_pytest/junitxml.py' adding '_pytest/legacypath.py' adding '_pytest/logging.py' adding '_pytest/main.py' adding '_pytest/monkeypatch.py' adding '_pytest/nodes.py' adding '_pytest/nose.py' adding '_pytest/outcomes.py' adding '_pytest/pastebin.py' adding '_pytest/pathlib.py' adding '_pytest/py.typed' adding '_pytest/pytester.py' adding '_pytest/pytester_assertions.py' adding '_pytest/python.py' adding '_pytest/python_api.py' adding '_pytest/python_path.py' adding '_pytest/recwarn.py' adding '_pytest/reports.py' adding '_pytest/runner.py' adding '_pytest/scope.py' adding '_pytest/setuponly.py' adding '_pytest/setupplan.py' adding '_pytest/skipping.py' adding '_pytest/stash.py' adding '_pytest/stepwise.py' adding '_pytest/terminal.py' adding '_pytest/threadexception.py' adding '_pytest/timing.py' adding '_pytest/tmpdir.py' adding '_pytest/unittest.py' adding '_pytest/unraisableexception.py' adding '_pytest/warning_types.py' adding '_pytest/warnings.py' adding '_pytest/_code/__init__.py' adding '_pytest/_code/code.py' adding '_pytest/_code/source.py' adding '_pytest/_io/__init__.py' adding '_pytest/_io/saferepr.py' adding '_pytest/_io/terminalwriter.py' adding '_pytest/_io/wcwidth.py' adding '_pytest/_py/__init__.py' adding '_pytest/_py/error.py' adding '_pytest/_py/path.py' adding '_pytest/assertion/__init__.py' adding '_pytest/assertion/rewrite.py' adding '_pytest/assertion/truncate.py' adding '_pytest/assertion/util.py' adding '_pytest/config/__init__.py' adding '_pytest/config/argparsing.py' adding '_pytest/config/compat.py' adding '_pytest/config/exceptions.py' adding '_pytest/config/findpaths.py' adding '_pytest/mark/__init__.py' adding '_pytest/mark/expression.py' adding '_pytest/mark/structures.py' adding 'pytest/__init__.py' adding 'pytest/__main__.py' adding 'pytest/py.typed' adding 'pytest-7.4.3.dist-info/LICENSE' adding 'pytest-7.4.3.dist-info/METADATA' adding 'pytest-7.4.3.dist-info/WHEEL' adding 'pytest-7.4.3.dist-info/entry_points.txt' adding 'pytest-7.4.3.dist-info/top_level.txt' adding 'pytest-7.4.3.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Building wheel for pytest (pyproject.toml): finished with status 'done' Created wheel for pytest: filename=pytest-7.4.3-py3-none-any.whl size=323996 sha256=f7585438130faf7454eeb2c361bb2afc591d750aff384699c47c0060d6a4b193 Stored in directory: /builddir/.cache/pip/wheels/d5/5b/56/b924a5900cf475e0eef09381135c5540100fb5abe059397915 Successfully built pytest + for l in doc/* ++ pwd + /usr/bin/make -O -j8 V=1 VERBOSE=1 -C doc/en html PYTHONPATH=/builddir/build/BUILD/pytest-7.4.3/src make: Entering directory '/builddir/build/BUILD/pytest-7.4.3/doc/en' Running Sphinx v7.2.6 making output directory... done [autosummary] generating autosummary for: adopt.rst, announce/index.rst, announce/release-2.0.0.rst, announce/release-2.0.1.rst, announce/release-2.0.2.rst, announce/release-2.0.3.rst, announce/release-2.1.0.rst, announce/release-2.1.1.rst, announce/release-2.1.2.rst, announce/release-2.1.3.rst, ..., reference/customize.rst, reference/exit-codes.rst, reference/fixtures.rst, reference/index.rst, reference/plugin_list.rst, reference/reference.rst, sponsor.rst, talks.rst, tidelift.rst, yieldfixture.rst loading intersphinx inventory from https://pluggy.readthedocs.io/en/stable/objects.inv... loading intersphinx inventory from https://docs.python.org/3/objects.inv... loading intersphinx inventory from https://numpy.org/doc/stable/objects.inv... loading intersphinx inventory from https://pip.pypa.io/en/stable/objects.inv... loading intersphinx inventory from https://tox.wiki/en/stable/objects.inv... loading intersphinx inventory from https://virtualenv.pypa.io/en/stable/objects.inv... loading intersphinx inventory from https://setuptools.pypa.io/en/stable/objects.inv... loading intersphinx inventory from https://packaging.python.org/en/latest/objects.inv... building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 226 source files that are out of date updating environment: [new config] 226 added, 0 changed, 0 removed reading sources... [ 0%] adopt reading sources... [ 1%] announce/index reading sources... [ 1%] announce/release-2.0.0 reading sources... [ 2%] announce/release-2.0.1 reading sources... [ 2%] announce/release-2.0.2 reading sources... [ 3%] announce/release-2.0.3 reading sources... [ 3%] announce/release-2.1.0 reading sources... [ 4%] announce/release-2.1.1 reading sources... [ 4%] announce/release-2.1.2 reading sources... [ 4%] announce/release-2.1.3 reading sources... [ 5%] announce/release-2.2.0 reading sources... [ 5%] announce/release-2.2.1 reading sources... [ 6%] announce/release-2.2.2 reading sources... [ 6%] announce/release-2.2.4 reading sources... [ 7%] announce/release-2.3.0 reading sources... [ 7%] announce/release-2.3.1 reading sources... [ 8%] announce/release-2.3.2 reading sources... [ 8%] announce/release-2.3.3 reading sources... [ 8%] announce/release-2.3.4 reading sources... [ 9%] announce/release-2.3.5 reading sources... [ 9%] announce/release-2.4.0 reading sources... [ 10%] announce/release-2.4.1 reading sources... [ 10%] announce/release-2.4.2 reading sources... [ 11%] announce/release-2.5.0 reading sources... [ 11%] announce/release-2.5.1 reading sources... [ 12%] announce/release-2.5.2 reading sources... [ 12%] announce/release-2.6.0 reading sources... [ 12%] announce/release-2.6.1 reading sources... [ 13%] announce/release-2.6.2 reading sources... [ 13%] announce/release-2.6.3 reading sources... [ 14%] announce/release-2.7.0 reading sources... [ 14%] announce/release-2.7.1 reading sources... [ 15%] announce/release-2.7.2 reading sources... [ 15%] announce/release-2.8.2 reading sources... [ 15%] announce/release-2.8.3 reading sources... [ 16%] announce/release-2.8.4 reading sources... [ 16%] announce/release-2.8.5 reading sources... [ 17%] announce/release-2.8.6 reading sources... [ 17%] announce/release-2.8.7 reading sources... [ 18%] announce/release-2.9.0 reading sources... [ 18%] announce/release-2.9.1 reading sources... [ 19%] announce/release-2.9.2 reading sources... [ 19%] announce/release-3.0.0 reading sources... [ 19%] announce/release-3.0.1 reading sources... [ 20%] announce/release-3.0.2 reading sources... [ 20%] announce/release-3.0.3 reading sources... [ 21%] announce/release-3.0.4 reading sources... [ 21%] announce/release-3.0.5 reading sources... [ 22%] announce/release-3.0.6 reading sources... [ 22%] announce/release-3.0.7 reading sources... [ 23%] announce/release-3.1.0 reading sources... [ 23%] announce/release-3.1.1 reading sources... [ 23%] announce/release-3.1.2 reading sources... [ 24%] announce/release-3.1.3 reading sources... [ 24%] announce/release-3.10.0 reading sources... [ 25%] announce/release-3.10.1 reading sources... [ 25%] announce/release-3.2.0 reading sources... [ 26%] announce/release-3.2.1 reading sources... [ 26%] announce/release-3.2.2 reading sources... [ 27%] announce/release-3.2.3 reading sources... [ 27%] announce/release-3.2.4 reading sources... [ 27%] announce/release-3.2.5 reading sources... [ 28%] announce/release-3.3.0 reading sources... [ 28%] announce/release-3.3.1 reading sources... [ 29%] announce/release-3.3.2 reading sources... [ 29%] announce/release-3.4.0 reading sources... [ 30%] announce/release-3.4.1 reading sources... [ 30%] announce/release-3.4.2 reading sources... [ 31%] announce/release-3.5.0 reading sources... [ 31%] announce/release-3.5.1 reading sources... [ 31%] announce/release-3.6.0 reading sources... [ 32%] announce/release-3.6.1 reading sources... [ 32%] announce/release-3.6.2 reading sources... [ 33%] announce/release-3.6.3 reading sources... [ 33%] announce/release-3.6.4 reading sources... [ 34%] announce/release-3.7.0 reading sources... [ 34%] announce/release-3.7.1 reading sources... [ 35%] announce/release-3.7.2 reading sources... [ 35%] announce/release-3.7.3 reading sources... [ 35%] announce/release-3.7.4 reading sources... [ 36%] announce/release-3.8.0 reading sources... [ 36%] announce/release-3.8.1 reading sources... [ 37%] announce/release-3.8.2 reading sources... [ 37%] announce/release-3.9.0 reading sources... [ 38%] announce/release-3.9.1 reading sources... [ 38%] announce/release-3.9.2 reading sources... [ 38%] announce/release-3.9.3 reading sources... [ 39%] announce/release-4.0.0 reading sources... [ 39%] announce/release-4.0.1 reading sources... [ 40%] announce/release-4.0.2 reading sources... [ 40%] announce/release-4.1.0 reading sources... [ 41%] announce/release-4.1.1 reading sources... [ 41%] announce/release-4.2.0 reading sources... [ 42%] announce/release-4.2.1 reading sources... [ 42%] announce/release-4.3.0 reading sources... [ 42%] announce/release-4.3.1 reading sources... [ 43%] announce/release-4.4.0 reading sources... [ 43%] announce/release-4.4.1 reading sources... [ 44%] announce/release-4.4.2 reading sources... [ 44%] announce/release-4.5.0 reading sources... [ 45%] announce/release-4.6.0 reading sources... [ 45%] announce/release-4.6.1 reading sources... [ 46%] announce/release-4.6.2 reading sources... [ 46%] announce/release-4.6.3 reading sources... [ 46%] announce/release-4.6.4 reading sources... [ 47%] announce/release-4.6.5 reading sources... [ 47%] announce/release-4.6.6 reading sources... [ 48%] announce/release-4.6.7 reading sources... [ 48%] announce/release-4.6.8 reading sources... [ 49%] announce/release-4.6.9 reading sources... [ 49%] announce/release-5.0.0 reading sources... [ 50%] announce/release-5.0.1 reading sources... [ 50%] announce/release-5.1.0 reading sources... [ 50%] announce/release-5.1.1 reading sources... [ 51%] announce/release-5.1.2 reading sources... [ 51%] announce/release-5.1.3 reading sources... [ 52%] announce/release-5.2.0 reading sources... [ 52%] announce/release-5.2.1 reading sources... [ 53%] announce/release-5.2.2 reading sources... [ 53%] announce/release-5.2.3 reading sources... [ 54%] announce/release-5.2.4 reading sources... [ 54%] announce/release-5.3.0 reading sources... [ 54%] announce/release-5.3.1 reading sources... [ 55%] announce/release-5.3.2 reading sources... [ 55%] announce/release-5.3.3 reading sources... [ 56%] announce/release-5.3.4 reading sources... [ 56%] announce/release-5.3.5 reading sources... [ 57%] announce/release-5.4.0 reading sources... [ 57%] announce/release-5.4.1 reading sources... [ 58%] announce/release-5.4.2 reading sources... [ 58%] announce/release-5.4.3 reading sources... [ 58%] announce/release-6.0.0 reading sources... [ 59%] announce/release-6.0.0rc1 reading sources... [ 59%] announce/release-6.0.1 reading sources... [ 60%] announce/release-6.0.2 reading sources... [ 60%] announce/release-6.1.0 reading sources... [ 61%] announce/release-6.1.1 reading sources... [ 61%] announce/release-6.1.2 reading sources... [ 62%] announce/release-6.2.0 reading sources... [ 62%] announce/release-6.2.1 reading sources... [ 62%] announce/release-6.2.2 reading sources... [ 63%] announce/release-6.2.3 reading sources... [ 63%] announce/release-6.2.4 reading sources... [ 64%] announce/release-6.2.5 reading sources... [ 64%] announce/release-7.0.0 reading sources... [ 65%] announce/release-7.0.0rc1 reading sources... [ 65%] announce/release-7.0.1 reading sources... [ 65%] announce/release-7.1.0 reading sources... [ 66%] announce/release-7.1.1 reading sources... [ 66%] announce/release-7.1.2 reading sources... [ 67%] announce/release-7.1.3 reading sources... [ 67%] announce/release-7.2.0 reading sources... [ 68%] announce/release-7.2.1 reading sources... [ 68%] announce/release-7.2.2 reading sources... [ 69%] announce/release-7.3.0 reading sources... [ 69%] announce/release-7.3.1 reading sources... [ 69%] announce/release-7.3.2 reading sources... [ 70%] announce/release-7.4.0 reading sources... [ 70%] announce/release-7.4.1 reading sources... [ 71%] announce/release-7.4.2 reading sources... [ 71%] announce/release-7.4.3 reading sources... [ 72%] announce/sprint2016 reading sources... [ 72%] backwards-compatibility reading sources... [ 73%] builtin reading sources... [ 73%] changelog reading sources... [ 73%] contact reading sources... [ 74%] contents reading sources... [ 74%] contributing reading sources... [ 75%] deprecations reading sources... [ 75%] development_guide reading sources... [ 76%] example/index reading sources... [ 76%] example/markers reading sources... [ 77%] example/nonpython reading sources... [ 77%] example/parametrize reading sources... [ 77%] example/pythoncollection reading sources... [ 78%] example/reportingdemo reading sources... [ 78%] example/simple reading sources... [ 79%] example/special reading sources... [ 79%] explanation/anatomy reading sources... [ 80%] explanation/fixtures reading sources... [ 80%] explanation/flaky reading sources... [ 81%] explanation/goodpractices reading sources... [ 81%] explanation/index reading sources... [ 81%] explanation/pythonpath reading sources... [ 82%] funcarg_compare reading sources... [ 82%] getting-started reading sources... [ 83%] historical-notes reading sources... [ 83%] history reading sources... [ 84%] how-to/assert reading sources... [ 84%] how-to/bash-completion reading sources... [ 85%] how-to/cache reading sources... [ 85%] how-to/capture-stdout-stderr reading sources... [ 85%] how-to/capture-warnings reading sources... [ 86%] how-to/doctest reading sources... [ 86%] how-to/existingtestsuite reading sources... [ 87%] how-to/failures reading sources... [ 87%] how-to/fixtures reading sources... [ 88%] how-to/index reading sources... [ 88%] how-to/logging reading sources... [ 88%] how-to/mark reading sources... [ 89%] how-to/monkeypatch reading sources... [ 89%] how-to/nose reading sources... [ 90%] how-to/output reading sources... [ 90%] how-to/parametrize reading sources... [ 91%] how-to/plugins reading sources... [ 91%] how-to/skipping reading sources... [ 92%] how-to/tmp_path reading sources... [ 92%] how-to/unittest reading sources... [ 92%] how-to/usage reading sources... [ 93%] how-to/writing_hook_functions reading sources... [ 93%] how-to/writing_plugins reading sources... [ 94%] how-to/xunit_setup reading sources... [ 94%] index reading sources... [ 95%] license reading sources... [ 95%] proposals/parametrize_with_fixtures reading sources... [ 96%] recwarn reading sources... [ 96%] reference/customize reading sources... [ 96%] reference/exit-codes reading sources... [ 97%] reference/fixtures reading sources... [ 97%] reference/index reading sources... [ 98%] reference/plugin_list reading sources... [ 98%] reference/reference reading sources... [ 99%] sponsor reading sources... [ 99%] talks reading sources... [100%] tidelift reading sources... [100%] yieldfixture looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... done copying extra files... done done writing output... [ 0%] adopt writing output... [ 1%] announce/index writing output... [ 1%] announce/release-2.0.0 writing output... [ 2%] announce/release-2.0.1 writing output... [ 2%] announce/release-2.0.2 writing output... [ 3%] announce/release-2.0.3 writing output... [ 3%] announce/release-2.1.0 writing output... [ 4%] announce/release-2.1.1 writing output... [ 4%] announce/release-2.1.2 writing output... [ 4%] announce/release-2.1.3 writing output... [ 5%] announce/release-2.2.0 writing output... [ 5%] announce/release-2.2.1 writing output... [ 6%] announce/release-2.2.2 writing output... [ 6%] announce/release-2.2.4 writing output... [ 7%] announce/release-2.3.0 writing output... [ 7%] announce/release-2.3.1 writing output... [ 8%] announce/release-2.3.2 writing output... [ 8%] announce/release-2.3.3 writing output... [ 8%] announce/release-2.3.4 writing output... [ 9%] announce/release-2.3.5 writing output... [ 9%] announce/release-2.4.0 writing output... [ 10%] announce/release-2.4.1 writing output... [ 10%] announce/release-2.4.2 writing output... [ 11%] announce/release-2.5.0 writing output... [ 11%] announce/release-2.5.1 writing output... [ 12%] announce/release-2.5.2 writing output... [ 12%] announce/release-2.6.0 writing output... [ 12%] announce/release-2.6.1 writing output... [ 13%] announce/release-2.6.2 writing output... [ 13%] announce/release-2.6.3 writing output... [ 14%] announce/release-2.7.0 writing output... [ 14%] announce/release-2.7.1 writing output... [ 15%] announce/release-2.7.2 writing output... [ 15%] announce/release-2.8.2 writing output... [ 15%] announce/release-2.8.3 writing output... [ 16%] announce/release-2.8.4 writing output... [ 16%] announce/release-2.8.5 writing output... [ 17%] announce/release-2.8.6 writing output... [ 17%] announce/release-2.8.7 writing output... [ 18%] announce/release-2.9.0 writing output... [ 18%] announce/release-2.9.1 writing output... [ 19%] announce/release-2.9.2 writing output... [ 19%] announce/release-3.0.0 writing output... [ 19%] announce/release-3.0.1 writing output... [ 20%] announce/release-3.0.2 writing output... [ 20%] announce/release-3.0.3 writing output... [ 21%] announce/release-3.0.4 writing output... [ 21%] announce/release-3.0.5 writing output... [ 22%] announce/release-3.0.6 writing output... [ 22%] announce/release-3.0.7 writing output... [ 23%] announce/release-3.1.0 writing output... [ 23%] announce/release-3.1.1 writing output... [ 23%] announce/release-3.1.2 writing output... [ 24%] announce/release-3.1.3 writing output... [ 24%] announce/release-3.10.0 writing output... [ 25%] announce/release-3.10.1 writing output... [ 25%] announce/release-3.2.0 writing output... [ 26%] announce/release-3.2.1 writing output... [ 26%] announce/release-3.2.2 writing output... [ 27%] announce/release-3.2.3 writing output... [ 27%] announce/release-3.2.4 writing output... [ 27%] announce/release-3.2.5 writing output... [ 28%] announce/release-3.3.0 writing output... [ 28%] announce/release-3.3.1 writing output... [ 29%] announce/release-3.3.2 writing output... [ 29%] announce/release-3.4.0 writing output... [ 30%] announce/release-3.4.1 writing output... [ 30%] announce/release-3.4.2 writing output... [ 31%] announce/release-3.5.0 writing output... [ 31%] announce/release-3.5.1 writing output... [ 31%] announce/release-3.6.0 writing output... [ 32%] announce/release-3.6.1 writing output... [ 32%] announce/release-3.6.2 writing output... [ 33%] announce/release-3.6.3 writing output... [ 33%] announce/release-3.6.4 writing output... [ 34%] announce/release-3.7.0 writing output... [ 34%] announce/release-3.7.1 writing output... [ 35%] announce/release-3.7.2 writing output... [ 35%] announce/release-3.7.3 writing output... [ 35%] announce/release-3.7.4 writing output... [ 36%] announce/release-3.8.0 writing output... [ 36%] announce/release-3.8.1 writing output... [ 37%] announce/release-3.8.2 writing output... [ 37%] announce/release-3.9.0 writing output... [ 38%] announce/release-3.9.1 writing output... [ 38%] announce/release-3.9.2 writing output... [ 38%] announce/release-3.9.3 writing output... [ 39%] announce/release-4.0.0 writing output... [ 39%] announce/release-4.0.1 writing output... [ 40%] announce/release-4.0.2 writing output... [ 40%] announce/release-4.1.0 writing output... [ 41%] announce/release-4.1.1 writing output... [ 41%] announce/release-4.2.0 writing output... [ 42%] announce/release-4.2.1 writing output... [ 42%] announce/release-4.3.0 writing output... [ 42%] announce/release-4.3.1 writing output... [ 43%] announce/release-4.4.0 writing output... [ 43%] announce/release-4.4.1 writing output... [ 44%] announce/release-4.4.2 writing output... [ 44%] announce/release-4.5.0 writing output... [ 45%] announce/release-4.6.0 writing output... [ 45%] announce/release-4.6.1 writing output... [ 46%] announce/release-4.6.2 writing output... [ 46%] announce/release-4.6.3 writing output... [ 46%] announce/release-4.6.4 writing output... [ 47%] announce/release-4.6.5 writing output... [ 47%] announce/release-4.6.6 writing output... [ 48%] announce/release-4.6.7 writing output... [ 48%] announce/release-4.6.8 writing output... [ 49%] announce/release-4.6.9 writing output... [ 49%] announce/release-5.0.0 writing output... [ 50%] announce/release-5.0.1 writing output... [ 50%] announce/release-5.1.0 writing output... [ 50%] announce/release-5.1.1 writing output... [ 51%] announce/release-5.1.2 writing output... [ 51%] announce/release-5.1.3 writing output... [ 52%] announce/release-5.2.0 writing output... [ 52%] announce/release-5.2.1 writing output... [ 53%] announce/release-5.2.2 writing output... [ 53%] announce/release-5.2.3 writing output... [ 54%] announce/release-5.2.4 writing output... [ 54%] announce/release-5.3.0 writing output... [ 54%] announce/release-5.3.1 writing output... [ 55%] announce/release-5.3.2 writing output... [ 55%] announce/release-5.3.3 writing output... [ 56%] announce/release-5.3.4 writing output... [ 56%] announce/release-5.3.5 writing output... [ 57%] announce/release-5.4.0 writing output... [ 57%] announce/release-5.4.1 writing output... [ 58%] announce/release-5.4.2 writing output... [ 58%] announce/release-5.4.3 writing output... [ 58%] announce/release-6.0.0 writing output... [ 59%] announce/release-6.0.0rc1 writing output... [ 59%] announce/release-6.0.1 writing output... [ 60%] announce/release-6.0.2 writing output... [ 60%] announce/release-6.1.0 writing output... [ 61%] announce/release-6.1.1 writing output... [ 61%] announce/release-6.1.2 writing output... [ 62%] announce/release-6.2.0 writing output... [ 62%] announce/release-6.2.1 writing output... [ 62%] announce/release-6.2.2 writing output... [ 63%] announce/release-6.2.3 writing output... [ 63%] announce/release-6.2.4 writing output... [ 64%] announce/release-6.2.5 writing output... [ 64%] announce/release-7.0.0 writing output... [ 65%] announce/release-7.0.0rc1 writing output... [ 65%] announce/release-7.0.1 writing output... [ 65%] announce/release-7.1.0 writing output... [ 66%] announce/release-7.1.1 writing output... [ 66%] announce/release-7.1.2 writing output... [ 67%] announce/release-7.1.3 writing output... [ 67%] announce/release-7.2.0 writing output... [ 68%] announce/release-7.2.1 writing output... [ 68%] announce/release-7.2.2 writing output... [ 69%] announce/release-7.3.0 writing output... [ 69%] announce/release-7.3.1 writing output... [ 69%] announce/release-7.3.2 writing output... [ 70%] announce/release-7.4.0 writing output... [ 70%] announce/release-7.4.1 writing output... [ 71%] announce/release-7.4.2 writing output... [ 71%] announce/release-7.4.3 writing output... [ 72%] announce/sprint2016 writing output... [ 72%] backwards-compatibility writing output... [ 73%] builtin writing output... [ 73%] changelog writing output... [ 73%] contact writing output... [ 74%] contents writing output... [ 74%] contributing writing output... [ 75%] deprecations writing output... [ 75%] development_guide writing output... [ 76%] example/index writing output... [ 76%] example/markers writing output... [ 77%] example/nonpython writing output... [ 77%] example/parametrize writing output... [ 77%] example/pythoncollection writing output... [ 78%] example/reportingdemo writing output... [ 78%] example/simple writing output... [ 79%] example/special writing output... [ 79%] explanation/anatomy writing output... [ 80%] explanation/fixtures writing output... [ 80%] explanation/flaky writing output... [ 81%] explanation/goodpractices writing output... [ 81%] explanation/index writing output... [ 81%] explanation/pythonpath writing output... [ 82%] funcarg_compare writing output... [ 82%] getting-started writing output... [ 83%] historical-notes writing output... [ 83%] history writing output... [ 84%] how-to/assert writing output... [ 84%] how-to/bash-completion writing output... [ 85%] how-to/cache writing output... [ 85%] how-to/capture-stdout-stderr writing output... [ 85%] how-to/capture-warnings writing output... [ 86%] how-to/doctest writing output... [ 86%] how-to/existingtestsuite writing output... [ 87%] how-to/failures writing output... [ 87%] how-to/fixtures writing output... [ 88%] how-to/index writing output... [ 88%] how-to/logging writing output... [ 88%] how-to/mark writing output... [ 89%] how-to/monkeypatch writing output... [ 89%] how-to/nose writing output... [ 90%] how-to/output writing output... [ 90%] how-to/parametrize writing output... [ 91%] how-to/plugins writing output... [ 91%] how-to/skipping writing output... [ 92%] how-to/tmp_path writing output... [ 92%] how-to/unittest writing output... [ 92%] how-to/usage writing output... [ 93%] how-to/writing_hook_functions writing output... [ 93%] how-to/writing_plugins writing output... [ 94%] how-to/xunit_setup writing output... [ 94%] index writing output... [ 95%] license writing output... [ 95%] proposals/parametrize_with_fixtures writing output... [ 96%] recwarn writing output... [ 96%] reference/customize writing output... [ 96%] reference/exit-codes writing output... [ 97%] reference/fixtures writing output... [ 97%] reference/index writing output... [ 98%] reference/plugin_list writing output... [ 98%] reference/reference writing output... [ 99%] sponsor writing output... [ 99%] talks writing output... [100%] tidelift writing output... [100%] yieldfixture generating indices... py-modindex done highlighting module code... [ 3%] _pytest._code.code highlighting module code... [ 7%] _pytest.assertion highlighting module code... [ 10%] _pytest.cacheprovider highlighting module code... [ 13%] _pytest.capture highlighting module code... [ 17%] _pytest.config highlighting module code... [ 20%] _pytest.config.argparsing highlighting module code... [ 23%] _pytest.config.exceptions highlighting module code... [ 27%] _pytest.doctest highlighting module code... [ 30%] _pytest.fixtures highlighting module code... [ 33%] _pytest.freeze_support highlighting module code... [ 37%] _pytest.hookspec highlighting module code... [ 40%] _pytest.junitxml highlighting module code... [ 43%] _pytest.legacypath highlighting module code... [ 47%] _pytest.logging highlighting module code... [ 50%] _pytest.main highlighting module code... [ 53%] _pytest.mark highlighting module code... [ 57%] _pytest.mark.structures highlighting module code... [ 60%] _pytest.monkeypatch highlighting module code... [ 63%] _pytest.nodes highlighting module code... [ 67%] _pytest.outcomes highlighting module code... [ 70%] _pytest.pytester highlighting module code... [ 73%] _pytest.python highlighting module code... [ 77%] _pytest.python_api highlighting module code... [ 80%] _pytest.recwarn highlighting module code... [ 83%] _pytest.reports highlighting module code... [ 87%] _pytest.runner highlighting module code... [ 90%] _pytest.stash highlighting module code... [ 93%] _pytest.terminal highlighting module code... [ 97%] _pytest.tmpdir highlighting module code... [100%] builtins writing additional pages... search done copying images... [ 8%] img/freiburg2.jpg copying images... [ 17%] example/fixtures/test_fixtures_request_different_scope.svg copying images... [ 25%] example/fixtures/fixture_availability.svg copying images... [ 33%] example/fixtures/fixture_availability_plugins.svg copying images... [ 42%] example/fixtures/test_fixtures_order_scope.svg copying images... [ 50%] example/fixtures/test_fixtures_order_dependencies.svg copying images... [ 58%] example/fixtures/test_fixtures_order_dependencies_flat.svg copying images... [ 67%] example/fixtures/test_fixtures_order_dependencies_unclear.svg copying images... [ 75%] example/fixtures/test_fixtures_order_autouse.svg copying images... [ 83%] example/fixtures/test_fixtures_order_autouse_flat.svg copying images... [ 92%] example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg copying images... [100%] example/fixtures/test_fixtures_order_autouse_temp_effects.svg dumping search index in English (code: en)... done dumping object inventory... done build succeeded, 36 warnings. The HTML pages are in _build/html. make: Leaving directory '/builddir/build/BUILD/pytest-7.4.3/doc/en' WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://docs.python.org/3/objects.inv' not fetchable due to : HTTPSConnectionPool(host='docs.python.org', port=443): Max retries exceeded with url: /3/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://tox.wiki/en/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='tox.wiki', port=443): Max retries exceeded with url: /en/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://pluggy.readthedocs.io/en/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='pluggy.readthedocs.io', port=443): Max retries exceeded with url: /en/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://virtualenv.pypa.io/en/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='virtualenv.pypa.io', port=443): Max retries exceeded with url: /en/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://pip.pypa.io/en/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='pip.pypa.io', port=443): Max retries exceeded with url: /en/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://numpy.org/doc/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='numpy.org', port=443): Max retries exceeded with url: /doc/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://packaging.python.org/en/latest/objects.inv' not fetchable due to : HTTPSConnectionPool(host='packaging.python.org', port=443): Max retries exceeded with url: /en/latest/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://setuptools.pypa.io/en/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='setuptools.pypa.io', port=443): Max retries exceeded with url: /en/stable/objects.inv (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) /builddir/build/BUILD/pytest-7.4.3/doc/en/changelog.rst:4134: WARNING: unknown document: 'numpy:release/1.16.0-notes' /builddir/build/BUILD/pytest-7.4.3/doc/en/explanation/goodpractices.rst:10: WARNING: unknown document: 'pip:index' /builddir/build/BUILD/pytest-7.4.3/doc/en/explanation/goodpractices.rst:15: WARNING: unknown document: 'packaging:tutorials/packaging-projects' /builddir/build/BUILD/pytest-7.4.3/doc/en/explanation/goodpractices.rst:272: WARNING: unknown document: 'tox:index' /builddir/build/BUILD/pytest-7.4.3/doc/en/getting-started.rst:73: WARNING: undefined label: 'python:assert' /builddir/build/BUILD/pytest-7.4.3/doc/en/getting-started.rst:73: WARNING: undefined label: 'testcase-objects' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/capture-warnings.rst:50: WARNING: unknown option: 'python:-W' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/doctest.rst:98: WARNING: undefined label: 'python:option-flags-and-directives' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:21: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:24: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:27: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:27: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:58: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/failures.rst:61: WARNING: unknown document: 'python:library/pdb' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/logging.rst:184: WARNING: undefined label: 'python:levels' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/logging.rst:207: WARNING: undefined label: 'python:levels' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/unittest.rst:33: WARNING: undefined label: 'python:subtests' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/writing_hook_functions.rst:102: WARNING: undefined label: 'pluggy:hookwrappers' /builddir/build/BUILD/pytest-7.4.3/doc/en/how-to/writing_plugins.rst:148: WARNING: unknown document: 'setuptools:index' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/python_api.py:docstring of _pytest.python_api.approx:4: WARNING: unknown document: 'python:tutorial/floatingpoint' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/python_api.py:docstring of _pytest.python_api.approx:125: WARNING: unknown document: 'numpy:reference/generated/numpy.isclose' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/python_api.py:docstring of _pytest.python_api.approx:149: WARNING: unknown document: 'numpy:reference/routines.testing' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/python_api.py:docstring of _pytest.python_api.raises:11: WARNING: undefined label: 're-syntax' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/python_api.py:docstring of _pytest.python_api.raises:103: WARNING: undefined label: 'python:try' /builddir/build/BUILD/pytest-7.4.3/doc/en/reference/reference.rst:155: WARNING: undefined label: 'python:warning-filter' /builddir/build/BUILD/pytest-7.4.3/src/_pytest/monkeypatch.py:docstring of _pytest.monkeypatch.MonkeyPatch.setattr:31: WARNING: undefined label: 'python:where-to-patch' /builddir/build/BUILD/pytest-7.4.3/doc/en/docstring of pytest.PytestPluginManager.hook:1: WARNING: undefined label: 'calling' /builddir/build/BUILD/pytest-7.4.3/doc/en/docstring of pytest.PytestPluginManager.trace:1: WARNING: undefined label: 'tracing' + for f in README CHANGELOG CONTRIBUTING + rst2html README.rst + for f in README CHANGELOG CONTRIBUTING + rst2html CHANGELOG.rst + for f in README CHANGELOG CONTRIBUTING + rst2html CONTRIBUTING.rst CONTRIBUTING.rst:56: (ERROR/3) Unknown interpreted text role "ref". CONTRIBUTING.rst:68: (ERROR/3) Unknown interpreted text role "ref". + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.P8tjoM + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch '!=' / ']' + rm -rf /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch ++ dirname /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd pytest-7.4.3 ++ xargs basename --multiple ++ ls /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir/pytest-7.4.3-py3-none-any.whl ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + specifier=pytest==7.4.3 + '[' -z pytest==7.4.3 ']' + TMPDIR=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir pytest==7.4.3 Using pip 23.3.1 from /usr/lib/python3.12/site-packages/pip (python 3.12) Looking in links: /builddir/build/BUILD/pytest-7.4.3/pyproject-wheeldir Processing ./pyproject-wheeldir/pytest-7.4.3-py3-none-any.whl Installing collected packages: pytest Creating /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin changing mode of /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test to 755 changing mode of /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest to 755 Successfully installed pytest-7.4.3 + '[' -d /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin ']' + '[' -z P ']' + shebang_flags=-kaP + /usr/bin/python3 -B /usr/lib/rpm/redhat/pathfix.py -pni /usr/bin/python3 -kaP /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test: updating /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest: updating + rm -rfv /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/__pycache__ + rm -f /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages ']' + site_dirs+=("/usr/lib/python3.12/site-packages") + '[' /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib64/python3.12/site-packages '!=' /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages ']' + '[' -d /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib64/python3.12/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch --record /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/RECORD --output /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-record + rm -fv /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/RECORD removed '/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/RECORD' + rm -fv /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/REQUESTED removed '/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/pytest-7.4.3.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + RPM_PERCENTAGES_COUNT=2 + /usr/bin/python3 /usr/lib/rpm/redhat/pyproject_save_files.py --output-files /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-files --output-modules /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-modules --buildroot /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch --sitelib /usr/lib/python3.12/site-packages --sitearch /usr/lib64/python3.12/site-packages --python-version 3.12 --pyproject-record /builddir/build/BUILD/pytest-7.4.3-2.fc40.noarch-pyproject-record --prefix /usr _pytest pytest py + mv /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest-3.12 + ln -snf pytest-3.12 /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest-3 + mv /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test-3.12 + ln -snf py.test-3.12 /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test-3 + ln -snf pytest-3.12 /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest + ln -snf py.test-3.12 /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/py.test + mkdir -p _htmldocs/html + for l in doc/* + rm doc/en/_build/html/.buildinfo + mv doc/en/_build/html _htmldocs/html/en + find /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages -name '*.py' -exec sed -i -e '1{/^#!/d}' '{}' ';' + /usr/bin/find-debuginfo -j8 --strict-build-id -m -i --build-id-seed 7.4.3-2.fc40 --unique-debug-suffix -7.4.3-2.fc40.noarch --unique-debug-src-base pytest-7.4.3-2.fc40.noarch --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 -S debugsourcefiles.list /builddir/build/BUILD/pytest-7.4.3 find-debuginfo: starting Extracting debug info from 0 files Creating .debug symlinks for symlinks to ELF files find: ‘debug’: No such file or directory find-debuginfo: done + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j8 Bytecompiling .py files below /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12 using python3.12 + /usr/lib/rpm/redhat/brp-python-hardlink Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.ApkMvr + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer -I/usr/lib/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd pytest-7.4.3 + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fno-omit-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + PATH=/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib64/python3.12/site-packages:/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/pytest-7.4.3/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=8 + /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/bin/pytest testing --timeout=30 -n auto -rs ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /builddir/build/BUILD/pytest-7.4.3 configfile: pyproject.toml plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 timeout: 30.0s timeout method: signal timeout func_only: False created: 8/8 workers 8 workers [3468 items] ...s...................................................................... [ 2%] ................................................s....s................... [ 4%] ........................................................................ [ 6%] .....s.........................................................s........ [ 8%] ......................................................................... [ 10%] x........................................................................ [ 12%] ...............s........................................................ [ 14%] ......................................................................... [ 16%] ........................................................................ [ 18%] ......................................................................... [ 20%] ......................................................s.................. [ 23%] ........................................................................ [ 25%] ..................x..................................................... [ 27%] ........................................................................ [ 29%] ........................................................................ [ 31%] ...........................................Fs........................... [ 33%] ...................sssssss.............................................. [ 35%] .............................F.......................................... [ 37%] ......F................................x................................ [ 39%] ........................................................................ [ 41%] .......................................................................x [ 43%] ........................................................................ [ 45%] ...x........................................x........................... [ 47%] ...............s..............................................s......... [ 50%] .....................x.................................................. [ 52%] ........................................................................ [ 54%] ..............................................F......................... [ 56%] ........................................................................ [ 58%] ...................................s.................................... [ 60%] ........................................................................ [ 62%] .......................................x........................x....... [ 64%] ......................................................x................. [ 66%] ........................................................................ [ 68%] ........................................................................ [ 70%] F....................................................................... [ 72%] .................................F...................................... [ 74%] ........................................................................ [ 77%] ..........................................F............................. [ 79%] ......................................F............sss.............s..s. [ 81%] ss..s..ss.s.s.......F................................................... [ 83%] .........F......F.....s............................................F.... [ 85%] .................F...................................................... [ 87%] ....................................F................................... [ 89%] .....................................................x.................. [ 91%] ........................................................................ [ 93%] ..................................F.F....F..F.F....FFF....F.FF....F..FF.. [ 95%] F..xF..sFFxF..Exception ignored in: Traceback (most recent call last): File "/usr/lib64/python3.12/subprocess.py", line 1127, in __del__ _warn("subprocess %s is still running" % self.pid, ResourceWarning: subprocess 1915205 is still running xFF....FFFxF.FFF....FFFFx....Fx..F.......F..FF.....F...... [ 97%] .....s.................................................FFFF........xF... [ 99%] ... [100%] =================================== FAILURES =================================== ____________ TestLocalPath.test_make_numbered_dir_multiprocess_safe ____________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_make_numbered_dir_multipr0') @pytest.mark.xfail( reason="#11603", raises=(error.EEXIST, error.ENOENT), strict=False ) def test_make_numbered_dir_multiprocess_safe(self, tmpdir): # https://github.com/pytest-dev/py/issues/30 with multiprocessing.Pool() as pool: results = [ pool.apply_async(batch_make_numbered_dirs, [tmpdir, 100]) for _ in range(20) ] for r in results: > assert r.get() /builddir/build/BUILD/pytest-7.4.3/testing/_py/test_local.py:882: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/multiprocessing/pool.py:768: in get self.wait(timeout) /usr/lib64/python3.12/multiprocessing/pool.py:765: in wait self._event.wait(timeout) /usr/lib64/python3.12/threading.py:634: in wait signaled = self._cond.wait(timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , 0)> timeout = None def wait(self, timeout=None): """Wait until notified or until a timeout occurs. If the calling thread has not acquired the lock when this method is called, a RuntimeError is raised. This method releases the underlying lock, and then blocks until it is awakened by a notify() or notify_all() call for the same condition variable in another thread, or until the optional timeout occurs. Once awakened or timed out, it re-acquires the lock and returns. When the timeout argument is present and not None, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof). When the underlying lock is an RLock, it is not released using its release() method, since this may not actually unlock the lock when it was acquired multiple times recursively. Instead, an internal interface of the RLock class is used, which really unlocks it even when it has been recursively acquired several times. Another internal interface is then used to restore the recursion level when the lock is reacquired. """ if not self._is_owned(): raise RuntimeError("cannot wait on un-acquired lock") waiter = _allocate_lock() waiter.acquire() self._waiters.append(waiter) saved_state = self._release_save() gotit = False try: # restore state no matter what (e.g., KeyboardInterrupt) if timeout is None: > waiter.acquire() E Failed: Timeout >30.0s /usr/lib64/python3.12/threading.py:334: Failed ----------------------------- Captured stderr call ----------------------------- +++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++ ~~~~~~~~~~~ Stack of Thread-3 (_handle_results) (72057592007872896) ~~~~~~~~~~~~ File "/usr/lib64/python3.12/threading.py", line 1009, in _bootstrap self._bootstrap_inner() File "/usr/lib64/python3.12/threading.py", line 1052, in _bootstrap_inner self.run() File "/usr/lib64/python3.12/threading.py", line 989, in run self._target(*self._args, **self._kwargs) File "/usr/lib64/python3.12/multiprocessing/pool.py", line 579, in _handle_results task = get() File "/usr/lib64/python3.12/multiprocessing/connection.py", line 249, in recv buf = self._recv_bytes() File "/usr/lib64/python3.12/multiprocessing/connection.py", line 413, in _recv_bytes buf = self._recv(4) File "/usr/lib64/python3.12/multiprocessing/connection.py", line 378, in _recv chunk = read(handle, remaining) ~~~~~~~~~~~~ Stack of Thread-2 (_handle_tasks) (72057592016265600) ~~~~~~~~~~~~~ File "/usr/lib64/python3.12/threading.py", line 1009, in _bootstrap self._bootstrap_inner() File "/usr/lib64/python3.12/threading.py", line 1052, in _bootstrap_inner self.run() File "/usr/lib64/python3.12/threading.py", line 989, in run self._target(*self._args, **self._kwargs) File "/usr/lib64/python3.12/multiprocessing/pool.py", line 531, in _handle_tasks for taskseq, set_length in iter(taskqueue.get, None): ~~~~~~~~~~~ Stack of Thread-1 (_handle_workers) (72057592024658304) ~~~~~~~~~~~~ File "/usr/lib64/python3.12/threading.py", line 1009, in _bootstrap self._bootstrap_inner() File "/usr/lib64/python3.12/threading.py", line 1052, in _bootstrap_inner self.run() File "/usr/lib64/python3.12/threading.py", line 989, in run self._target(*self._args, **self._kwargs) File "/usr/lib64/python3.12/multiprocessing/pool.py", line 522, in _handle_workers cls._wait_for_updates(current_sentinels, change_notifier) File "/usr/lib64/python3.12/multiprocessing/pool.py", line 502, in _wait_for_updates wait(sentinels, timeout=timeout) File "/usr/lib64/python3.12/multiprocessing/connection.py", line 1118, in wait ready = selector.select(timeout) File "/usr/lib64/python3.12/selectors.py", line 415, in select fd_event_list = self._selector.poll(timeout) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592150487424) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) +++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++ ______________________ TestInvocationVariants.test_pydoc _______________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pydoc(self, pytester: Pytester) -> None: > result = pytester.runpython_c("import pytest;help(pytest)") /builddir/build/BUILD/pytest-7.4.3/testing/acceptance_test.py:515: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1485: in runpython_c return self.run(sys.executable, "-c", command) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1472: in _dump_lines print(line, file=fp) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = > ??? E Failed: Timeout >30.0s :327: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -c import pytest;help(pytest) in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pydoc0 Help on package pytest: NAME pytest - pytest: unit and functional testing with Python. PACKAGE CONTENTS __main__ CLASSES _pytest.nodes.FSCollector(_pytest.nodes.Collector) _pytest.main.Session _pytest.nodes.File _pytest.python.Module(_pytest.nodes.File, _pytest.python.PyCollector) _pytest.python.Package _pytest.nodes.Node(builtins.object) _pytest.nodes.Collector _pytest.nodes.Item _pytest.doctest.DoctestItem _pytest.python.Function(_pytest.python.PyobjMixin, _pytest.nodes.Item) _pytest.python.PyCollector(_pytest.python.PyobjMixin, _pytest.nodes.Collector) _pytest.python.Class _pytest.python.PyobjMixin(_pytest.nodes.Node) _pytest.python.Function(_pytest.python.PyobjMixin, _pytest.nodes.Item) _pytest.reports.BaseReport(builtins.object) _pytest.reports.CollectReport _pytest.reports.TestReport builtins.Exception(builtins.BaseException) _pytest.config.exceptions.UsageError builtins.LookupError(builtins.Exception) _pytest.fixtures.FixtureLookupError builtins.UserWarning(builtins.Warning) PytestWarning PytestAssertRewriteWarning PytestCacheWarning PytestCollectionWarning PytestConfigWarning PytestDeprecationWarning(PytestWarning, builtins.DeprecationWarning) PytestRemovedIn8Warning PytestReturnNotNoneWarning PytestUnhandledCoroutineWarning PytestExperimentalApiWarning(PytestWarning, builtins.FutureWarning) PytestUnhandledThreadExceptionWarning PytestUnknownMarkWarning PytestUnraisableExceptionWarning builtins.object _pytest.cacheprovider.Cache _pytest.config.Config _pytest.config.cmdline _pytest.config.argparsing.OptionGroup _pytest.config.argparsing.Parser _pytest.fixtures.FixtureRequest _pytest.legacypath.TempdirFactory _pytest.legacypath.Testdir _pytest.logging.LogCaptureFixture _pytest.mark.structures.Mark _pytest.mark.structures.MarkDecorator _pytest.mark.structures.MarkGenerator _pytest.monkeypatch.MonkeyPatch _pytest.pytester.HookRecorder _pytest.pytester.LineMatcher _pytest.pytester.Pytester _pytest.pytester.RecordedHookCall _pytest.pytester.RunResult _pytest.python.Metafunc _pytest.stash.Stash _pytest.tmpdir.TempPathFactory builtins.tuple(builtins.object) _pytest.terminal.TestShortLogReport enum.IntEnum(builtins.int, enum.ReprEnum) _pytest.config.ExitCode pluggy._manager.PluginManager(builtins.object) _pytest.config.PytestPluginManager typing.Generic(builtins.object) _pytest._code.code.ExceptionInfo _pytest.capture.CaptureFixture _pytest.runner.CallInfo _pytest.stash.StashKey warnings.catch_warnings(builtins.object) _pytest.recwarn.WarningsRecorder class Cache(builtins.object) | Cache(cachedir: pathlib.Path, config: _pytest.config.Config, *, _ispytest: bool = False) -> None | | Instance of the `cache` fixture. | | Methods defined here: | | __eq__(self, other) | Return self==value. | | __init__(self, cachedir: pathlib.Path, config: _pytest.config.Config, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) | Return repr(self). | | get(self, key: str, default) | Return the cached value for the given key. | | If no value was yet cached or the value cannot be read, the specified | default is returned. | | :param key: | Must be a ``/`` separated value. Usually the first | name is the name of your plugin or your application. | :param default: | The value to return in case of a cache-miss or invalid cache value. | | mkdir(self, name: str) -> pathlib.Path | Return a directory path object with the given name. | | If the directory does not yet exist, it will be created. You can use | it to manage files to e.g. store/retrieve database dumps across test | sessions. | | .. versionadded:: 7.0 | | :param name: | Must be a string not containing a ``/`` separator. | Make sure the name contains your plugin or application | identifiers to prevent clashes with other cache users. | | set(self, key: str, value: object) -> None | Save value for the given key. | | :param key: | Must be a ``/`` separated value. Usually the first | name is the name of your plugin or your application. | :param value: | Must be of any combination of basic python types, | including nested types like lists of dictionaries. | | warn(self, fmt: str, *, _ispytest: bool = False, **args: object) -> None | Issue a cache warning. | | :meta private: | | ---------------------------------------------------------------------- | Class methods defined here: | | clear_cache(cachedir: pathlib.Path, _ispytest: bool = False) -> None from builtins.type | Clear the sub-directories used to hold cached directories and values. | | :meta private: | | for_config(config: _pytest.config.Config, *, _ispytest: bool = False) -> 'Cache' from builtins.type | Create the Cache instance for a Config. | | :meta private: | | ---------------------------------------------------------------------- | Static methods defined here: | | cache_dir_from_config(config: _pytest.config.Config, *, _ispytest: bool = False) -> pathlib.Path | Get the path to the cache directory for a Config. | | :meta private: | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_cachedir': , '_config': None | | Result/Exception info of a function invocation. | | Method resolution order: | CallInfo | typing.Generic | builtins.object | | Methods defined here: | | __eq__(self, other) | Return self==value. | | __init__(self, result: Optional[+TResult], excinfo: Optional[_pytest._code.code.ExceptionInfo[BaseException]], start: float, stop: float, duration: float, when: "Literal['collect', 'setup', 'call', 'teardown']", *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | ---------------------------------------------------------------------- | Class methods defined here: | | from_call(func: 'Callable[[], TResult]', when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Union[Type[BaseException], Tuple[Type[BaseException], ...], NoneType] = None) -> 'CallInfo[TResult]' from builtins.type | Call func, wrapping the result in a CallInfo. | | :param func: | The function to call. Called without arguments. | :param when: | The phase in which the function is called. | :param reraise: | Exception or exceptions that shall propagate if raised by the | function, instead of being wrapped in the CallInfo. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | result | The return value of the call, if it didn't raise. | | Can only be accessed if excinfo is None. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_result': typing.Optional[+TResult], 'duration': <... | | __dataclass_fields__ = {'_result': Field(name='_result',type=typing.Op... | | __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,or... | | __final__ = True | | __hash__ = None | | __match_args__ = ('_result', 'excinfo', 'start', 'stop', 'duration', '... | | __orig_bases__ = (typing.Generic[+TResult],) | | __parameters__ = (+TResult,) | | ---------------------------------------------------------------------- | Class methods inherited from typing.Generic: | | __class_getitem__(...) from builtins.type | Parameterizes a generic class. | | At least, parameterizing a generic class is the *main* thing this | method does. For example, for some generic class `Foo`, this is called | when we do `Foo[int]` - there, with `cls=Foo` and `params=int`. | | However, note that this method is also called when defining generic | classes in the first place with `class Foo[T]: ...`. | | __init_subclass__(...) from builtins.type | Function to initialize subclasses. class CaptureFixture(typing.Generic) | CaptureFixture(captureclass: Type[_pytest.capture.CaptureBase[~AnyStr]], request: _pytest.fixtures.SubRequest, *, _ispytest: bool = False) -> None | | Object returned by the :fixture:`capsys`, :fixture:`capsysbinary`, | :fixture:`capfd` and :fixture:`capfdbinary` fixtures. | | Method resolution order: | CaptureFixture | typing.Generic | builtins.object | | Methods defined here: | | __init__(self, captureclass: Type[_pytest.capture.CaptureBase[~AnyStr]], request: _pytest.fixtures.SubRequest, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | close(self) -> None | | disabled(self) -> Generator[NoneType, NoneType, NoneType] | Temporarily disable capturing while inside the ``with`` block. | | readouterr(self) -> _pytest.capture.CaptureResult[~AnyStr] | Read and return the captured output so far, resetting the internal | buffer. | | :returns: | The captured content as a namedtuple with ``out`` and ``err`` | string attributes. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | __orig_bases__ = (typing.Generic[~AnyStr],) | | __parameters__ = (~AnyStr,) | | ---------------------------------------------------------------------- | Class methods inherited from typing.Generic: | | __class_getitem__(...) from builtins.type | Parameterizes a generic class. | | At least, parameterizing a generic class is the *main* thing this | method does. For example, for some generic class `Foo`, this is called | when we do `Foo[int]` - there, with `cls=Foo` and `params=int`. | | However, note that this method is also called when defining generic | classes in the first place with `class Foo[T]: ...`. | | __init_subclass__(...) from builtins.type | Function to initialize subclasses. class Class(PyCollector) | Class(*k, **kw) | | Collector for test methods (and nested classes) in a Python class. | | Method resolution order: | Class | PyCollector | PyobjMixin | _pytest.nodes.Collector | _pytest.nodes.Node | builtins.object | | Methods defined here: | | collect(self) -> Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] | Collect children (items and collectors) for this collector. | | newinstance(self) | | ---------------------------------------------------------------------- | Class methods defined here: | | from_parent(parent, *, name, obj=None, **kw) from _pytest.nodes.NodeMeta | The public constructor. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from PyCollector: | | classnamefilter(self, name: str) -> bool | | funcnamefilter(self, name: str) -> bool | | isnosetest(self, obj: object) -> bool | Look for the __test__ attribute, which is applied by the | @nose.tools.istest decorator. | | istestclass(self, obj: object, name: str) -> bool | | istestfunction(self, obj: object, name: str) -> bool | | ---------------------------------------------------------------------- | Methods inherited from PyobjMixin: | | getmodpath(self, stopatmodule: bool = True, includemodule: bool = False) -> str | Return Python path relative to the containing module. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | | ---------------------------------------------------------------------- | Readonly properties inherited from PyobjMixin: | | cls | Python class object this node was collected from (can be None). | | instance | Python instance object the function is bound to. | | Returns None if not a test method, e.g. for a standalone test function, | a staticmethod, a class or a module. | | module | Python module object this node was collected from (can be None). | | ---------------------------------------------------------------------- | Data descriptors inherited from PyobjMixin: | | __weakref__ | list of weak references to the object (if defined) | | obj | Underlying Python object. | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Collector: | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Collector: | | CollectError = | An error during collection, contains a custom message. | | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | __init__(self, name: str, parent: 'Optional[Node]' = None, config: Optional[_pytest.config.Config] = None, session: 'Optional[Session]' = None, fspath: Optional[_pytest._py.path.LocalPath] = None, path: Optional[pathlib.Path] = None, nodeid: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class CollectReport(BaseReport) | CollectReport(nodeid: str, outcome: "Literal['passed', 'failed', 'skipped']", longrepr: Union[NoneType, _pytest._code.code.ExceptionInfo[BaseException], Tuple[str, int, str], str, _pytest._code.code.TerminalRepr], result: Optional[List[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]], sections: Iterable[Tuple[str, str]] = (), **extra) -> None | | Collection report object. | | Reports can contain arbitrary extra attributes. | | Method resolution order: | CollectReport | BaseReport | builtins.object | | Methods defined here: | | __init__(self, nodeid: str, outcome: "Literal['passed', 'failed', 'skipped']", longrepr: Union[NoneType, _pytest._code.code.ExceptionInfo[BaseException], Tuple[str, int, str], str, _pytest._code.code.TerminalRepr], result: Optional[List[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]], sections: Iterable[Tuple[str, str]] = (), **extra) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | ---------------------------------------------------------------------- | Readonly properties defined here: | | location | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | __final__ = True | | when = 'collect' | | ---------------------------------------------------------------------- | Methods inherited from BaseReport: | | get_sections(self, prefix: str) -> Iterator[Tuple[str, str]] | | toterminal(self, out: _pytest._io.terminalwriter.TerminalWriter) -> None | | ---------------------------------------------------------------------- | Readonly properties inherited from BaseReport: | | caplog | Return captured log lines, if log capturing is enabled. | | .. versionadded:: 3.5 | | capstderr | Return captured text from stderr, if capturing is enabled. | | .. versionadded:: 3.0 | | capstdout | Return captured text from stdout, if capturing is enabled. | | .. versionadded:: 3.0 | | count_towards_summary | **Experimental** Whether this report should be counted towards the | totals shown at the end of the test session: "1 passed, 1 failure, etc". | | .. note:: | | This function is considered **experimental**, so beware that it is subject to changes | even in patch releases. | | failed | Whether the outcome is failed. | | fspath | The path portion of the reported node, as a string. | | head_line | **Experimental** The head line shown with longrepr output for this | report, more commonly during traceback representation during | failures:: | | ________ Test.foo ________ | | | In the example above, the head_line is "Test.foo". | | .. note:: | | This function is considered **experimental**, so beware that it is subject to changes | even in patch releases. | | longreprtext | Read-only property that returns the full string representation of | ``longrepr``. | | .. versionadded:: 3.0 | | passed | Whether the outcome is passed. | | skipped | Whether the outcome is skipped. | | ---------------------------------------------------------------------- | Data descriptors inherited from BaseReport: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class Collector(Node) | Collector(*k, **kw) | | Base class of all collectors. | | Collector create children through `collect()` and thus iteratively build | the collection tree. | | Method resolution order: | Collector | Node | builtins.object | | Methods defined here: | | collect(self) -> Iterable[Union[ForwardRef('Item'), ForwardRef('Collector')]] | Collect children (items and collectors) for this collector. | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | CollectError = | An error during collection, contains a custom message. | | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from Node: | | __hash__(self) -> int | Return hash(self). | | __init__(self, name: str, parent: 'Optional[Node]' = None, config: Optional[_pytest.config.Config] = None, session: 'Optional[Session]' = None, fspath: Optional[_pytest._py.path.LocalPath] = None, path: Optional[pathlib.Path] = None, nodeid: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Class methods inherited from Node: | | from_parent(parent: 'Node', **kw) from _pytest.nodes.NodeMeta | Public constructor for Nodes. | | This indirection got introduced in order to enable removing | the fragile logic from the node constructors. | | Subclasses can use ``super().from_parent(...)`` when overriding the | construction. | | :param parent: The parent node of this Node. | | ---------------------------------------------------------------------- | Readonly properties inherited from Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class Config(builtins.object) | Config(pluginmanager: _pytest.config.PytestPluginManager, *, invocation_params: Optional[_pytest.config.Config.InvocationParams] = None) -> None | | Access to configuration values, pluginmanager and plugin hooks. | | :param PytestPluginManager pluginmanager: | A pytest PluginManager. | | :param InvocationParams invocation_params: | Object containing parameters regarding the :func:`pytest.main` | invocation. | | Methods defined here: | | __init__(self, pluginmanager: _pytest.config.PytestPluginManager, *, invocation_params: Optional[_pytest.config.Config.InvocationParams] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | add_cleanup(self, func: Callable[[], NoneType]) -> None | Add a function to be called when the config object gets out of | use (usually coinciding with pytest_unconfigure). | | addinivalue_line(self, name: str, line: str) -> None | Add a line to an ini-file option. The option must have been | declared but might not yet be set in which case the line becomes | the first line in its value. | | cwd_relative_nodeid(self, nodeid: str) -> str | | get_terminal_writer(self) -> _pytest._io.terminalwriter.TerminalWriter | | getini(self, name: str) | Return configuration value from an :ref:`ini file `. | | If the specified name hasn't been registered through a prior | :func:`parser.addini ` call (usually from a | plugin), a ValueError is raised. | | getoption(self, name: str, default=, skip: bool = False) | Return command line option value. | | :param name: Name of the option. You may also specify | the literal ``--OPT`` option instead of the "dest" option name. | :param default: Default value if no option of that name exists. | :param skip: If True, raise pytest.skip if option does not exists | or has a None value. | | getvalue(self, name: str, path=None) | Deprecated, use getoption() instead. | | getvalueorskip(self, name: str, path=None) | Deprecated, use getoption(skip=True) instead. | | issue_config_time_warning(self, warning: Warning, stacklevel: int) -> None | Issue and handle a warning during the "configure" stage. | | During ``pytest_configure`` we can't capture warnings using the ``catch_warnings_for_item`` | function because it is not possible to have hookwrappers around ``pytest_configure``. | | This function is mainly intended for plugins that need to issue warnings during | ``pytest_configure`` (or similar stages). | | :param warning: The warning instance. | :param stacklevel: stacklevel forwarded to warnings.warn. | | notify_exception(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException], option: Optional[argparse.Namespace] = None) -> None | | parse(self, args: List[str], addopts: bool = True) -> None | | pytest_cmdline_parse(self, pluginmanager: _pytest.config.PytestPluginManager, args: List[str]) -> 'Config' | | pytest_collection(self) -> Generator[NoneType, NoneType, NoneType] | | pytest_load_initial_conftests(self, early_config: 'Config') -> None | | ---------------------------------------------------------------------- | Class methods defined here: | | fromdictargs(option_dict, args) -> 'Config' from builtins.type | Constructor usable for subprocesses. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | inipath | The path to the :ref:`configfile `. | | :type: Optional[pathlib.Path] | | .. versionadded:: 6.1 | | rootpath | The path to the :ref:`rootdir `. | | :type: pathlib.Path | | .. versionadded:: 6.1 | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | ArgsSource = | Indicates the source of the test arguments. | | .. versionadded:: 7.2 | | | InvocationParams = | Holds parameters passed during :func:`pytest.main`. | | The object attributes are read-only. | | .. versionadded:: 5.1 | | .. note:: | | Note that the environment variable ``PYTEST_ADDOPTS`` and the ``addopts`` | ini option are handled by pytest, not being included in the ``args`` attribute. | | Plugins accessing ``InvocationParams`` must be aware of that. | | | __final__ = True class DoctestItem(_pytest.nodes.Item) | DoctestItem(*k, **kw) | | Method resolution order: | DoctestItem | _pytest.nodes.Item | _pytest.nodes.Node | builtins.object | | Methods defined here: | | __init__(self, name: str, parent: 'Union[DoctestTextfile, DoctestModule]', runner: Optional[ForwardRef('doctest.DocTestRunner')] = None, dtest: Optional[ForwardRef('doctest.DocTest')] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | Get location information for this item for test reports. | | Returns a tuple with three elements: | | - The path of the test (default ``self.path``) | - The 0-based line number of the test (default ``None``) | - A name of the test to be shown (default ``""``) | | .. seealso:: :ref:`non-python tests` | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection or test failure. | | .. seealso:: :ref:`non-python tests` | | :param excinfo: Exception information for the failure. | | runtest(self) -> None | Run the test case for this item. | | Must be implemented by subclasses. | | .. seealso:: :ref:`non-python tests` | | setup(self) -> None | | ---------------------------------------------------------------------- | Class methods defined here: | | from_parent(parent: 'Union[DoctestTextfile, DoctestModule]', *, name: str, runner: 'doctest.DocTestRunner', dtest: 'doctest.DocTest') from _pytest.nodes.NodeMeta | The public named constructor. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Item: | | add_report_section(self, when: str, key: str, content: str) -> None | Add a new report section, similar to what's done internally to add | stdout and stderr captured output:: | | item.add_report_section("call", "stdout", "report section contents") | | :param str when: | One of the possible capture states, ``"setup"``, ``"call"``, ``"teardown"``. | :param str key: | Name of the section, can be customized at will. Pytest uses ``"stdout"`` and | ``"stderr"`` internally. | :param str content: | The full contents as a string. | | location = | Returns a tuple of ``(relfspath, lineno, testname)`` for this item | where ``relfspath`` is file path relative to ``config.rootpath`` | and lineno is a 0-based line number. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Item: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Item: | | nextitem = None | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class ExceptionInfo(typing.Generic) | ExceptionInfo(excinfo: Optional[Tuple[Type[ForwardRef('E')], ForwardRef('E'), traceback]], striptext: str = '', traceback: Optional[_pytest._code.code.Traceback] = None, *, _ispytest: bool = False) -> None | | Wraps sys.exc_info() objects and offers help for navigating the traceback. | | Method resolution order: | ExceptionInfo | typing.Generic | builtins.object | | Methods defined here: | | __eq__(self, other) | Return self==value. | | __init__(self, excinfo: Optional[Tuple[Type[ForwardRef('E')], ForwardRef('E'), traceback]], striptext: str = '', traceback: Optional[_pytest._code.code.Traceback] = None, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | errisinstance(self, exc: Union[Type[BaseException], Tuple[Type[BaseException], ...]]) -> bool | Return True if the exception is an instance of exc. | | Consider using ``isinstance(excinfo.value, exc)`` instead. | | exconly(self, tryshort: bool = False) -> str | Return the exception as a string. | | When 'tryshort' resolves to True, and the exception is an | AssertionError, only the actual exception part of the exception | representation is returned (so 'AssertionError: ' is removed from | the beginning). | | fill_unfilled(self, exc_info: Tuple[Type[+E], +E, traceback]) -> None | Fill an unfilled ExceptionInfo created with ``for_later()``. | | getrepr(self, showlocals: bool = False, style: '_TracebackStyle' = 'long', abspath: bool = False, tbfilter: Union[bool, Callable[[ForwardRef('ExceptionInfo[BaseException]')], _pytest._code.code.Traceback]] = True, funcargs: bool = False, truncate_locals: bool = True, chain: bool = True) -> Union[ForwardRef('ReprExceptionInfo'), ForwardRef('ExceptionChainRepr')] | Return str()able representation of this exception info. | | :param bool showlocals: | Show locals per traceback entry. | Ignored if ``style=="native"``. | | :param str style: | long|short|line|no|native|value traceback style. | | :param bool abspath: | If paths should be changed to absolute or left unchanged. | | :param tbfilter: | A filter for traceback entries. | | * If false, don't hide any entries. | * If true, hide internal entries and entries that contain a local | variable ``__tracebackhide__ = True``. | * If a callable, delegates the filtering to the callable. | | Ignored if ``style`` is ``"native"``. | | :param bool funcargs: | Show fixtures ("funcargs" for legacy purposes) per traceback entry. | | :param bool truncate_locals: | With ``showlocals==True``, make sure locals can be safely represented as strings. | | :param bool chain: | If chained exceptions in Python 3 should be shown. | | .. versionchanged:: 3.9 | | Added the ``chain`` parameter. | | match(self, regexp: Union[str, Pattern[str]]) -> 'Literal[True]' | Check whether the regular expression `regexp` matches the string | representation of the exception using :func:`python:re.search`. | | If it matches `True` is returned, otherwise an `AssertionError` is raised. | | ---------------------------------------------------------------------- | Class methods defined here: | | for_later() -> 'ExceptionInfo[E]' from builtins.type | Return an unfilled ExceptionInfo. | | from_current(exprinfo: Optional[str] = None) -> 'ExceptionInfo[BaseException]' from builtins.type | Return an ExceptionInfo matching the current traceback. | | .. warning:: | | Experimental API | | :param exprinfo: | A text string helping to determine if we should strip | ``AssertionError`` from the output. Defaults to the exception | message/``__str__()``. | | from_exc_info(exc_info: Tuple[Type[+E], +E, traceback], exprinfo: Optional[str] = None) -> 'ExceptionInfo[E]' from builtins.type | Like :func:`from_exception`, but using old-style exc_info tuple. | | from_exception(exception: +E, exprinfo: Optional[str] = None) -> 'ExceptionInfo[E]' from builtins.type | Return an ExceptionInfo for an existing exception. | | The exception must have a non-``None`` ``__traceback__`` attribute, | otherwise this function fails with an assertion error. This means that | the exception must have been raised, or added a traceback with the | :py:meth:`~BaseException.with_traceback()` method. | | :param exprinfo: | A text string helping to determine if we should strip | ``AssertionError`` from the output. Defaults to the exception | message/``__str__()``. | | .. versionadded:: 7.4 | | ---------------------------------------------------------------------- | Readonly properties defined here: | | tb | The exception raw traceback. | | type | The exception class. | | typename | The type name of the exception. | | value | The exception value. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | traceback | The traceback. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_assert_start_repr': typing.ClassVar, '_excinfo': ... | | __dataclass_fields__ = {'_assert_start_repr': Field(name='_assert_star... | | __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,or... | | __final__ = True | | __hash__ = None | | __match_args__ = ('_excinfo', '_striptext', '_traceback') | | __orig_bases__ = (typing.Generic[+E],) | | __parameters__ = (+E,) | | ---------------------------------------------------------------------- | Class methods inherited from typing.Generic: | | __class_getitem__(...) from builtins.type | Parameterizes a generic class. | | At least, parameterizing a generic class is the *main* thing this | method does. For example, for some generic class `Foo`, this is called | when we do `Foo[int]` - there, with `cls=Foo` and `params=int`. | | However, note that this method is also called when defining generic | classes in the first place with `class Foo[T]: ...`. | | __init_subclass__(...) from builtins.type | Function to initialize subclasses. class ExitCode(enum.IntEnum) | ExitCode(*values) | | Encodes the valid exit codes by pytest. | | Currently users and plugins may supply other exit codes as well. | | .. versionadded:: 5.0 | | Method resolution order: | ExitCode | enum.IntEnum | builtins.int | enum.ReprEnum | enum.Enum | builtins.object | | Methods defined here: | | __format__(self, format_spec, /) | Convert to a string according to format_spec. | | __new__(cls, value) | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | INTERNAL_ERROR = | | INTERRUPTED = | | NO_TESTS_COLLECTED = | | OK = | | TESTS_FAILED = | | USAGE_ERROR = | | ---------------------------------------------------------------------- | Methods inherited from enum.IntEnum: | | __repr__(self) | Return repr(self). | | __str__ = __repr__(self, /) | Return repr(self). | | ---------------------------------------------------------------------- | Methods inherited from builtins.int: | | __abs__(self, /) | abs(self) | | __add__(self, value, /) | Return self+value. | | __and__(self, value, /) | Return self&value. | | __bool__(self, /) | True if self else False | | __ceil__(...) | Ceiling of an Integral returns itself. | | __divmod__(self, value, /) | Return divmod(self, value). | | __eq__(self, value, /) | Return self==value. | | __float__(self, /) | float(self) | | __floor__(...) | Flooring an Integral returns itself. | | __floordiv__(self, value, /) | Return self//value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getnewargs__(self, /) | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __index__(self, /) | Return self converted to an integer, if self is suitable for use as an index into a list. | | __int__(self, /) | int(self) | | __invert__(self, /) | ~self | | __le__(self, value, /) | Return self<=value. | | __lshift__(self, value, /) | Return self<>self. | | __rshift__(self, value, /) | Return self>>value. | | __rsub__(self, value, /) | Return value-self. | | __rtruediv__(self, value, /) | Return value/self. | | __rxor__(self, value, /) | Return value^self. | | __sizeof__(self, /) | Returns size in memory, in bytes. | | __sub__(self, value, /) | Return self-value. | | __truediv__(self, value, /) | Return self/value. | | __trunc__(...) | Truncating an Integral returns itself. | | __xor__(self, value, /) | Return self^value. | | as_integer_ratio(self, /) | Return a pair of integers, whose ratio is equal to the original int. | | The ratio is in lowest terms and has a positive denominator. | | >>> (10).as_integer_ratio() | (10, 1) | >>> (-10).as_integer_ratio() | (-10, 1) | >>> (0).as_integer_ratio() | (0, 1) | | bit_count(self, /) | Number of ones in the binary representation of the absolute value of self. | | Also known as the population count. | | >>> bin(13) | '0b1101' | >>> (13).bit_count() | 3 | | bit_length(self, /) | Number of bits necessary to represent self in binary. | | >>> bin(37) | '0b100101' | >>> (37).bit_length() | 6 | | conjugate(...) | Returns self, the complex conjugate of any int. | | is_integer(self, /) | Returns True. Exists for duck type compatibility with float.is_integer. | | to_bytes(self, /, length=1, byteorder='big', *, signed=False) | Return an array of bytes representing an integer. | | length | Length of bytes object to use. An OverflowError is raised if the | integer is not representable with the given number of bytes. Default | is length 1. | byteorder | The byte order used to represent the integer. If byteorder is 'big', | the most significant byte is at the beginning of the byte array. If | byteorder is 'little', the most significant byte is at the end of the | byte array. To request the native byte order of the host system, use | `sys.byteorder' as the byte order value. Default is to use 'big'. | signed | Determines whether two's complement is used to represent the integer. | If signed is False and a negative integer is given, an OverflowError | is raised. | | ---------------------------------------------------------------------- | Class methods inherited from builtins.int: | | from_bytes(bytes, byteorder='big', *, signed=False) from enum.EnumType | Return the integer represented by the given array of bytes. | | bytes | Holds the array of bytes to convert. The argument must either | support the buffer protocol or be an iterable object producing bytes. | Bytes and bytearray are examples of built-in objects that support the | buffer protocol. | byteorder | The byte order used to represent the integer. If byteorder is 'big', | the most significant byte is at the beginning of the byte array. If | byteorder is 'little', the most significant byte is at the end of the | byte array. To request the native byte order of the host system, use | `sys.byteorder' as the byte order value. Default is to use 'big'. | signed | Indicates whether two's complement is used to represent the integer. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.int: | | denominator | the denominator of a rational number in lowest terms | | imag | the imaginary part of a complex number | | numerator | the numerator of a rational number in lowest terms | | real | the real part of a complex number | | ---------------------------------------------------------------------- | Methods inherited from enum.Enum: | | __dir__(self) | Returns all members and all public methods | | __init__(self, *args, **kwds) | Initialize self. See help(type(self)) for accurate signature. | | __reduce_ex__(self, proto) | Helper for pickle. | | ---------------------------------------------------------------------- | Data descriptors inherited from enum.Enum: | | name | The name of the Enum member. | | value | The value of the Enum member. | | ---------------------------------------------------------------------- | Methods inherited from enum.EnumType: | | __contains__(value) from enum.EnumType | Return True if `value` is in `cls`. | | `value` is in `cls` if: | 1) `value` is a member of `cls`, or | 2) `value` is the value of one of the `cls`'s members. | | __getitem__(name) from enum.EnumType | Return the member matching `name`. | | __iter__() from enum.EnumType | Return members in definition order. | | __len__() from enum.EnumType | Return the number of members (no aliases) | | ---------------------------------------------------------------------- | Readonly properties inherited from enum.EnumType: | | __members__ | Returns a mapping of member name->value. | | This mapping lists all enum members, including aliases. Note that this | is a read-only view of the internal mapping. class File(FSCollector) | File(*k, **kw) | | Base class for collecting tests from a file. | | :ref:`non-python tests`. | | Method resolution order: | File | FSCollector | Collector | Node | builtins.object | | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from FSCollector: | | __init__(self, fspath: Optional[_pytest._py.path.LocalPath] = None, path_or_parent: Union[pathlib.Path, _pytest.nodes.Node, NoneType] = None, path: Optional[pathlib.Path] = None, name: Optional[str] = None, parent: Optional[_pytest.nodes.Node] = None, config: Optional[_pytest.config.Config] = None, session: Optional[ForwardRef('Session')] = None, nodeid: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | gethookproxy(self, fspath: 'os.PathLike[str]') | | isinitpath(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> bool | | ---------------------------------------------------------------------- | Class methods inherited from FSCollector: | | from_parent(parent, *, fspath: Optional[_pytest._py.path.LocalPath] = None, path: Optional[pathlib.Path] = None, **kw) from _pytest.nodes.NodeMeta | The public constructor. | | ---------------------------------------------------------------------- | Methods inherited from Collector: | | collect(self) -> Iterable[Union[ForwardRef('Item'), ForwardRef('Collector')]] | Collect children (items and collectors) for this collector. | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data descriptors inherited from Collector: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes inherited from Collector: | | CollectError = | An error during collection, contains a custom message. | | | ---------------------------------------------------------------------- | Methods inherited from Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class FixtureLookupError(builtins.LookupError) | FixtureLookupError(argname: Optional[str], request: _pytest.fixtures.FixtureRequest, msg: Optional[str] = None) -> None | | Could not return a requested fixture (missing or invalid). | | Method resolution order: | FixtureLookupError | builtins.LookupError | builtins.Exception | builtins.BaseException | builtins.object | | Methods defined here: | | __init__(self, argname: Optional[str], request: _pytest.fixtures.FixtureRequest, msg: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | formatrepr(self) -> 'FixtureLookupErrorRepr' | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Static methods inherited from builtins.LookupError: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class FixtureRequest(builtins.object) | FixtureRequest(pyfuncitem, *, _ispytest: bool = False) -> None | | A request for a fixture from a test or fixture function. | | A request object gives access to the requesting test context and has | an optional ``param`` attribute in case the fixture is parametrized | indirectly. | | Methods defined here: | | __init__(self, pyfuncitem, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | addfinalizer(self, finalizer: Callable[[], object]) -> None | Add finalizer/teardown function to be called without arguments after | the last test within the requesting test context finished execution. | | applymarker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator]) -> None | Apply a marker to a single test function invocation. | | This method is useful if you don't want to have a keyword/marker | on all function invocations. | | :param marker: | An object created by a call to ``pytest.mark.NAME(...)``. | | getfixturevalue(self, argname: str) -> Any | Dynamically run a named fixture function. | | Declaring fixtures via function argument is recommended where possible. | But if you can only decide whether to use another fixture at test | setup time, you may use this function to retrieve it inside a fixture | or test function body. | | This method can be used during the test setup phase or the test run | phase, but during the test teardown phase a fixture's value may not | be available. | | :param argname: | The fixture name. | :raises pytest.FixtureLookupError: | If the given fixture could not be found. | | raiseerror(self, msg: Optional[str]) -> NoReturn | Raise a FixtureLookupError exception. | | :param msg: | An optional custom error message. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | cls | Class (can be None) where the test function was collected. | | config | The pytest config object associated with this request. | | fixturenames | Names of all active fixtures in this request. | | function | Test function object if the request has a per-function scope. | | instance | Instance (can be None) on which test function was collected. | | keywords | Keywords/markers dictionary for the underlying node. | | module | Python module object where the test function was collected. | | node | Underlying collection node (depends on current request scope). | | path | Path where the test function was collected. | | scope | Scope string, one of "function", "class", "module", "package", "session". | | session | Pytest session object. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class Function(PyobjMixin, _pytest.nodes.Item) | Function(*k, **kw) | | Item responsible for setting up and executing a Python test function. | | :param name: | The full function name, including any decorations like those | added by parametrization (``my_func[my_param]``). | :param parent: | The parent Node. | :param config: | The pytest Config object. | :param callspec: | If given, this is function has been parametrized and the callspec contains | meta information about the parametrization. | :param callobj: | If given, the object which will be called when the Function is invoked, | otherwise the callobj will be obtained from ``parent`` using ``originalname``. | :param keywords: | Keywords bound to the function object for "-k" matching. | :param session: | The pytest Session object. | :param fixtureinfo: | Fixture information already resolved at this fixture node.. | :param originalname: | The attribute name to use for accessing the underlying function object. | Defaults to ``name``. Set this if name is different from the original name, | for example when it contains decorations like those added by parametrization | (``my_func[my_param]``). | | Method resolution order: | Function | PyobjMixin | _pytest.nodes.Item | _pytest.nodes.Node | builtins.object | | Methods defined here: | | __init__(self, name: str, parent, config: Optional[_pytest.config.Config] = None, callspec: Optional[_pytest.python.CallSpec2] = None, callobj=, keywords: Optional[Mapping[str, Any]] = None, session: Optional[_pytest.main.Session] = None, fixtureinfo: Optional[_pytest.fixtures.FuncFixtureInfo] = None, originalname: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection or test failure. | | .. seealso:: :ref:`non-python tests` | | :param excinfo: Exception information for the failure. | | runtest(self) -> None | Execute the underlying test function. | | setup(self) -> None | | ---------------------------------------------------------------------- | Class methods defined here: | | from_parent(parent, **kw) from _pytest.nodes.NodeMeta | The public constructor. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | function | Underlying python 'function' object. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from PyobjMixin: | | getmodpath(self, stopatmodule: bool = True, includemodule: bool = False) -> str | Return Python path relative to the containing module. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | | ---------------------------------------------------------------------- | Readonly properties inherited from PyobjMixin: | | cls | Python class object this node was collected from (can be None). | | instance | Python instance object the function is bound to. | | Returns None if not a test method, e.g. for a standalone test function, | a staticmethod, a class or a module. | | module | Python module object this node was collected from (can be None). | | ---------------------------------------------------------------------- | Data descriptors inherited from PyobjMixin: | | __weakref__ | list of weak references to the object (if defined) | | obj | Underlying Python object. | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Item: | | add_report_section(self, when: str, key: str, content: str) -> None | Add a new report section, similar to what's done internally to add | stdout and stderr captured output:: | | item.add_report_section("call", "stdout", "report section contents") | | :param str when: | One of the possible capture states, ``"setup"``, ``"call"``, ``"teardown"``. | :param str key: | Name of the section, can be customized at will. Pytest uses ``"stdout"`` and | ``"stderr"`` internally. | :param str content: | The full contents as a string. | | location = | Returns a tuple of ``(relfspath, lineno, testname)`` for this item | where ``relfspath`` is file path relative to ``config.rootpath`` | and lineno is a 0-based line number. | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Item: | | nextitem = None | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class HookRecorder(builtins.object) | HookRecorder(pluginmanager: _pytest.config.PytestPluginManager, *, _ispytest: bool = False) -> None | | Record all hooks called in a plugin manager. | | Hook recorders are created by :class:`Pytester`. | | This wraps all the hook calls in the plugin manager, recording each call | before propagating the normal calls. | | Methods defined here: | | __init__(self, pluginmanager: _pytest.config.PytestPluginManager, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | assert_contains(self, entries: Sequence[Tuple[str, str]]) -> None | | assertoutcome(self, passed: int = 0, skipped: int = 0, failed: int = 0) -> None | | clear(self) -> None | | countoutcomes(self) -> List[int] | | finish_recording(self) -> None | | getcall(self, name: str) -> _pytest.pytester.RecordedHookCall | | getcalls(self, names: Union[str, Iterable[str]]) -> List[_pytest.pytester.RecordedHookCall] | Get all recorded calls to hooks with the given names (or name). | | getfailedcollections(self) -> Sequence[_pytest.reports.CollectReport] | | getfailures(self, names: Union[str, Iterable[str]] = ('pytest_collectreport', 'pytest_runtest_logreport')) -> Sequence[Union[_pytest.reports.CollectReport, _pytest.reports.TestReport]] | | getreports(self, names: Union[str, Iterable[str]] = ('pytest_collectreport', 'pytest_runtest_logreport')) -> Sequence[Union[_pytest.reports.CollectReport, _pytest.reports.TestReport]] | | listoutcomes(self) -> Tuple[Sequence[_pytest.reports.TestReport], Sequence[Union[_pytest.reports.CollectReport, _pytest.reports.TestReport]], Sequence[Union[_pytest.reports.CollectReport, _pytest.reports.TestReport]]] | | matchreport(self, inamepart: str = '', names: Union[str, Iterable[str]] = ('pytest_runtest_logreport', 'pytest_collectreport'), when: Optional[str] = None) -> Union[_pytest.reports.CollectReport, _pytest.reports.TestReport] | Return a testreport whose dotted import path matches. | | popcall(self, name: str) -> _pytest.pytester.RecordedHookCall | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class Item(Node) | Item(*k, **kw) | | Base class of all test invocation items. | | Note that for a single function there might be multiple test invocation items. | | Method resolution order: | Item | Node | builtins.object | | Methods defined here: | | __init__(self, name, parent=None, config: Optional[_pytest.config.Config] = None, session: Optional[ForwardRef('Session')] = None, nodeid: Optional[str] = None, **kw) -> None | Initialize self. See help(type(self)) for accurate signature. | | add_report_section(self, when: str, key: str, content: str) -> None | Add a new report section, similar to what's done internally to add | stdout and stderr captured output:: | | item.add_report_section("call", "stdout", "report section contents") | | :param str when: | One of the possible capture states, ``"setup"``, ``"call"``, ``"teardown"``. | :param str key: | Name of the section, can be customized at will. Pytest uses ``"stdout"`` and | ``"stderr"`` internally. | :param str content: | The full contents as a string. | | location = | Returns a tuple of ``(relfspath, lineno, testname)`` for this item | where ``relfspath`` is file path relative to ``config.rootpath`` | and lineno is a 0-based line number. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | Get location information for this item for test reports. | | Returns a tuple with three elements: | | - The path of the test (default ``self.path``) | - The 0-based line number of the test (default ``None``) | - A name of the test to be shown (default ``""``) | | .. seealso:: :ref:`non-python tests` | | runtest(self) -> None | Run the test case for this item. | | Must be implemented by subclasses. | | .. seealso:: :ref:`non-python tests` | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | nextitem = None | | ---------------------------------------------------------------------- | Methods inherited from Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException], style: 'Optional[_TracebackStyle]' = None) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection or test failure. | | .. seealso:: :ref:`non-python tests` | | :param excinfo: Exception information for the failure. | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Class methods inherited from Node: | | from_parent(parent: 'Node', **kw) from _pytest.nodes.NodeMeta | Public constructor for Nodes. | | This indirection got introduced in order to enable removing | the fragile logic from the node constructors. | | Subclasses can use ``super().from_parent(...)`` when overriding the | construction. | | :param parent: The parent node of this Node. | | ---------------------------------------------------------------------- | Readonly properties inherited from Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class LineMatcher(builtins.object) | LineMatcher(lines: List[str]) -> None | | Flexible matching of text. | | This is a convenience class to test large texts like the output of | commands. | | The constructor takes a list of lines without their trailing newlines, i.e. | ``text.splitlines()``. | | Methods defined here: | | __init__(self, lines: List[str]) -> None | Initialize self. See help(type(self)) for accurate signature. | | __str__(self) -> str | Return the entire original text. | | .. versionadded:: 6.2 | You can use :meth:`str` in older versions. | | fnmatch_lines(self, lines2: Sequence[str], *, consecutive: bool = False) -> None | Check lines exist in the output (using :func:`python:fnmatch.fnmatch`). | | The argument is a list of lines which have to match and can use glob | wildcards. If they do not match a pytest.fail() is called. The | matches and non-matches are also shown as part of the error message. | | :param lines2: String patterns to match. | :param consecutive: Match lines consecutively? | | fnmatch_lines_random(self, lines2: Sequence[str]) -> None | Check lines exist in the output in any order (using :func:`python:fnmatch.fnmatch`). | | get_lines_after(self, fnline: str) -> Sequence[str] | Return all lines following the given line in the text. | | The given line can contain glob wildcards. | | no_fnmatch_line(self, pat: str) -> None | Ensure captured lines do not match the given pattern, using ``fnmatch.fnmatch``. | | :param str pat: The pattern to match lines. | | no_re_match_line(self, pat: str) -> None | Ensure captured lines do not match the given pattern, using ``re.match``. | | :param str pat: The regular expression to match lines. | | re_match_lines(self, lines2: Sequence[str], *, consecutive: bool = False) -> None | Check lines exist in the output (using :func:`python:re.match`). | | The argument is a list of lines which have to match using ``re.match``. | If they do not match a pytest.fail() is called. | | The matches and non-matches are also shown as part of the error message. | | :param lines2: string patterns to match. | :param consecutive: match lines consecutively? | | re_match_lines_random(self, lines2: Sequence[str]) -> None | Check lines exist in the output in any order (using :func:`python:re.match`). | | str(self) -> str | Return the entire original text. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class LogCaptureFixture(builtins.object) | LogCaptureFixture(item: _pytest.nodes.Node, *, _ispytest: bool = False) -> None | | Provides access and control of log capturing. | | Methods defined here: | | __init__(self, item: _pytest.nodes.Node, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | at_level(self, level: Union[int, str], logger: Optional[str] = None) -> Generator[NoneType, NoneType, NoneType] | Context manager that sets the level for capturing of logs. After | the end of the 'with' statement the level is restored to its original | value. | | Will enable the requested logging level if it was disabled via :meth:`logging.disable`. | | :param level: The level. | :param logger: The logger to update. If not given, the root logger. | | clear(self) -> None | Reset the list of log records and the captured log text. | | get_records(self, when: "Literal['setup', 'call', 'teardown']") -> List[logging.LogRecord] | Get the logging records for one of the possible test phases. | | :param when: | Which test phase to obtain the records from. | Valid values are: "setup", "call" and "teardown". | | :returns: The list of captured records at the given stage. | | .. versionadded:: 3.4 | | set_level(self, level: Union[int, str], logger: Optional[str] = None) -> None | Set the threshold level of a logger for the duration of a test. | | Logging messages which are less severe than this level will not be captured. | | .. versionchanged:: 3.4 | The levels of the loggers changed by this function will be | restored to their initial values at the end of the test. | | Will enable the requested logging level if it was disabled via :meth:`logging.disable`. | | :param level: The level. | :param logger: The logger to update. If not given, the root logger. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | handler | Get the logging handler used by the fixture. | | messages | A list of format-interpolated log messages. | | Unlike 'records', which contains the format string and parameters for | interpolation, log messages in this list are all interpolated. | | Unlike 'text', which contains the output from the handler, log | messages in this list are unadorned with levels, timestamps, etc, | making exact comparisons more reliable. | | Note that traceback or stack info (from :func:`logging.exception` or | the `exc_info` or `stack_info` arguments to the logging functions) is | not included, as this is added by the formatter in the handler. | | .. versionadded:: 3.7 | | record_tuples | A list of a stripped down version of log records intended | for use in assertion comparison. | | The format of the tuple is: | | (logger_name, log_level, message) | | records | The list of log records. | | text | The formatted log text. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class Mark(builtins.object) | Mark(name: str, args: Tuple[Any, ...], kwargs: Mapping[str, Any], param_ids_from: Optional[ForwardRef('Mark')] = None, param_ids_generated: Optional[Sequence[str]] = None, *, _ispytest: bool = False) -> None | | A pytest mark. | | Methods defined here: | | __delattr__(self, name) | Implement delattr(self, name). | | __eq__(self, other) | Return self==value. | | __hash__(self) | Return hash(self). | | __init__(self, name: str, args: Tuple[Any, ...], kwargs: Mapping[str, Any], param_ids_from: Optional[ForwardRef('Mark')] = None, param_ids_generated: Optional[Sequence[str]] = None, *, _ispytest: bool = False) -> None | :meta private: | | __repr__(self) | Return repr(self). | | __setattr__(self, name, value) | Implement setattr(self, name, value). | | combined_with(self, other: 'Mark') -> 'Mark' | Return a new Mark which is a combination of this | Mark and another Mark. | | Combines by appending args and merging kwargs. | | :param Mark other: The mark to combine with. | :rtype: Mark | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_param_ids_from': typing.Optional[ForwardRef('Mark... | | __dataclass_fields__ = {'_param_ids_from': Field(name='_param_ids_from... | | __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,or... | | __final__ = True | | __match_args__ = ('name', 'args', 'kwargs', '_param_ids_from', '_param... class MarkDecorator(builtins.object) | MarkDecorator(mark: _pytest.mark.structures.Mark, *, _ispytest: bool = False) -> None | | A decorator for applying a mark on test functions and classes. | | ``MarkDecorators`` are created with ``pytest.mark``:: | | mark1 = pytest.mark.NAME # Simple MarkDecorator | mark2 = pytest.mark.NAME(name1=value) # Parametrized MarkDecorator | | and can then be applied as decorators to test functions:: | | @mark2 | def test_function(): | pass | | When a ``MarkDecorator`` is called, it does the following: | | 1. If called with a single class as its only positional argument and no | additional keyword arguments, it attaches the mark to the class so it | gets applied automatically to all test cases found in that class. | | 2. If called with a single function as its only positional argument and | no additional keyword arguments, it attaches the mark to the function, | containing all the arguments already stored internally in the | ``MarkDecorator``. | | 3. When called in any other case, it returns a new ``MarkDecorator`` | instance with the original ``MarkDecorator``'s content updated with | the arguments passed to this call. | | Note: The rules above prevent a ``MarkDecorator`` from storing only a | single function or class reference as its positional argument with no | additional keyword or positional arguments. You can work around this by | using `with_args()`. | | Methods defined here: | | __call__(self, *args: object, **kwargs: object) | Call the MarkDecorator. | | __eq__(self, other) | Return self==value. | | __init__(self, mark: _pytest.mark.structures.Mark, *, _ispytest: bool = False) -> None | :meta private: | | __repr__(self) | Return repr(self). | | with_args(self, *args: object, **kwargs: object) -> 'MarkDecorator' | Return a MarkDecorator with extra arguments added. | | Unlike calling the MarkDecorator, with_args() can be used even | if the sole argument is a callable/class. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | args | Alias for mark.args. | | kwargs | Alias for mark.kwargs. | | markname | :meta private: | | name | Alias for mark.name. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'mark': } | | __dataclass_fields__ = {'mark': Field(name='mark',type= None | | Factory for :class:`MarkDecorator` objects - exposed as | a ``pytest.mark`` singleton instance. | | Example:: | | import pytest | | @pytest.mark.slowtest | def test_function(): | pass | | applies a 'slowtest' :class:`Mark` on ``test_function``. | | Methods defined here: | | __getattr__(self, name: str) -> _pytest.mark.structures.MarkDecorator | Generate a new :class:`MarkDecorator` with the given name. | | __init__(self, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | __final__ = True class Metafunc(builtins.object) | Metafunc(definition: 'FunctionDefinition', fixtureinfo: _pytest.fixtures.FuncFixtureInfo, config: _pytest.config.Config, cls=None, module=None, *, _ispytest: bool = False) -> None | | Objects passed to the :hook:`pytest_generate_tests` hook. | | They help to inspect a test function and to generate tests according to | test configuration or values specified in the class or module where a | test function is defined. | | Methods defined here: | | __init__(self, definition: 'FunctionDefinition', fixtureinfo: _pytest.fixtures.FuncFixtureInfo, config: _pytest.config.Config, cls=None, module=None, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | parametrize(self, argnames: Union[str, Sequence[str]], argvalues: Iterable[Union[_pytest.mark.structures.ParameterSet, Sequence[object], object]], indirect: Union[bool, Sequence[str]] = False, ids: Union[Iterable[Optional[object]], Callable[[Any], Optional[object]], NoneType] = None, scope: 'Optional[_ScopeName]' = None, *, _param_mark: Optional[_pytest.mark.structures.Mark] = None) -> None | Add new invocations to the underlying test function using the list | of argvalues for the given argnames. Parametrization is performed | during the collection phase. If you need to setup expensive resources | see about setting indirect to do it rather than at test setup time. | | Can be called multiple times per test function (but only on different | argument names), in which case each call parametrizes all previous | parametrizations, e.g. | | :: | | unparametrized: t | parametrize ["x", "y"]: t[x], t[y] | parametrize [1, 2]: t[x-1], t[x-2], t[y-1], t[y-2] | | :param argnames: | A comma-separated string denoting one or more argument names, or | a list/tuple of argument strings. | | :param argvalues: | The list of argvalues determines how often a test is invoked with | different argument values. | | If only one argname was specified argvalues is a list of values. | If N argnames were specified, argvalues must be a list of | N-tuples, where each tuple-element specifies a value for its | respective argname. | | :param indirect: | A list of arguments' names (subset of argnames) or a boolean. | If True the list contains all names from the argnames. Each | argvalue corresponding to an argname in this list will | be passed as request.param to its respective argname fixture | function so that it can perform more expensive setups during the | setup phase of a test rather than at collection time. | | :param ids: | Sequence of (or generator for) ids for ``argvalues``, | or a callable to return part of the id for each argvalue. | | With sequences (and generators like ``itertools.count()``) the | returned ids should be of type ``string``, ``int``, ``float``, | ``bool``, or ``None``. | They are mapped to the corresponding index in ``argvalues``. | ``None`` means to use the auto-generated id. | | If it is a callable it will be called for each entry in | ``argvalues``, and the return value is used as part of the | auto-generated id for the whole set (where parts are joined with | dashes ("-")). | This is useful to provide more specific ids for certain items, e.g. | dates. Returning ``None`` will use an auto-generated id. | | If no ids are provided they will be generated automatically from | the argvalues. | | :param scope: | If specified it denotes the scope of the parameters. | The scope is used for grouping tests by parameter instances. | It will also override any fixture-function defined scope, allowing | to set a dynamic scope using test context or configuration. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class Module(_pytest.nodes.File, PyCollector) | Module(*k, **kw) | | Collector for test classes and functions in a Python module. | | Method resolution order: | Module | _pytest.nodes.File | _pytest.nodes.FSCollector | PyCollector | PyobjMixin | _pytest.nodes.Collector | _pytest.nodes.Node | builtins.object | | Methods defined here: | | collect(self) -> Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] | Collect children (items and collectors) for this collector. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.FSCollector: | | __init__(self, fspath: Optional[_pytest._py.path.LocalPath] = None, path_or_parent: Union[pathlib.Path, _pytest.nodes.Node, NoneType] = None, path: Optional[pathlib.Path] = None, name: Optional[str] = None, parent: Optional[_pytest.nodes.Node] = None, config: Optional[_pytest.config.Config] = None, session: Optional[ForwardRef('Session')] = None, nodeid: Optional[str] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | gethookproxy(self, fspath: 'os.PathLike[str]') | | isinitpath(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> bool | | ---------------------------------------------------------------------- | Class methods inherited from _pytest.nodes.FSCollector: | | from_parent(parent, *, fspath: Optional[_pytest._py.path.LocalPath] = None, path: Optional[pathlib.Path] = None, **kw) from _pytest.nodes.NodeMeta | The public constructor. | | ---------------------------------------------------------------------- | Methods inherited from PyCollector: | | classnamefilter(self, name: str) -> bool | | funcnamefilter(self, name: str) -> bool | | isnosetest(self, obj: object) -> bool | Look for the __test__ attribute, which is applied by the | @nose.tools.istest decorator. | | istestclass(self, obj: object, name: str) -> bool | | istestfunction(self, obj: object, name: str) -> bool | | ---------------------------------------------------------------------- | Methods inherited from PyobjMixin: | | getmodpath(self, stopatmodule: bool = True, includemodule: bool = False) -> str | Return Python path relative to the containing module. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | | ---------------------------------------------------------------------- | Readonly properties inherited from PyobjMixin: | | cls | Python class object this node was collected from (can be None). | | instance | Python instance object the function is bound to. | | Returns None if not a test method, e.g. for a standalone test function, | a staticmethod, a class or a module. | | module | Python module object this node was collected from (can be None). | | ---------------------------------------------------------------------- | Data descriptors inherited from PyobjMixin: | | __weakref__ | list of weak references to the object (if defined) | | obj | Underlying Python object. | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Collector: | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Collector: | | CollectError = | An error during collection, contains a custom message. | | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class MonkeyPatch(builtins.object) | MonkeyPatch() -> None | | Helper to conveniently monkeypatch attributes/items/environment | variables/syspath. | | Returned by the :fixture:`monkeypatch` fixture. | | .. versionchanged:: 6.2 | Can now also be used directly as `pytest.MonkeyPatch()`, for when | the fixture is not available. In this case, use | :meth:`with MonkeyPatch.context() as mp: ` or remember to call | :meth:`undo` explicitly. | | Methods defined here: | | __init__(self) -> None | Initialize self. See help(type(self)) for accurate signature. | | chdir(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> None | Change the current working directory to the specified path. | | :param path: | The path to change into. | | delattr(self, target: Union[object, str], name: Union[str, _pytest.monkeypatch.Notset] = , raising: bool = True) -> None | Delete attribute ``name`` from ``target``. | | If no ``name`` is specified and ``target`` is a string | it will be interpreted as a dotted import path with the | last part being the attribute name. | | Raises AttributeError it the attribute does not exist, unless | ``raising`` is set to False. | | delenv(self, name: str, raising: bool = True) -> None | Delete ``name`` from the environment. | | Raises ``KeyError`` if it does not exist, unless ``raising`` is set to | False. | | delitem(self, dic: Mapping[~K, ~V], name: ~K, raising: bool = True) -> None | Delete ``name`` from dict. | | Raises ``KeyError`` if it doesn't exist, unless ``raising`` is set to | False. | | setattr(self, target: Union[str, object], name: Union[object, str], value: object = , raising: bool = True) -> None | Set attribute value on target, memorizing the old value. | | For example: | | .. code-block:: python | | import os | | monkeypatch.setattr(os, "getcwd", lambda: "/") | | The code above replaces the :func:`os.getcwd` function by a ``lambda`` which | always returns ``"/"``. | | For convenience, you can specify a string as ``target`` which | will be interpreted as a dotted import path, with the last part | being the attribute name: | | .. code-block:: python | | monkeypatch.setattr("os.getcwd", lambda: "/") | | Raises :class:`AttributeError` if the attribute does not exist, unless | ``raising`` is set to False. | | **Where to patch** | | ``monkeypatch.setattr`` works by (temporarily) changing the object that a name points to with another one. | There can be many names pointing to any individual object, so for patching to work you must ensure | that you patch the name used by the system under test. | | See the section :ref:`Where to patch ` in the :mod:`unittest.mock` | docs for a complete explanation, which is meant for :func:`unittest.mock.patch` but | applies to ``monkeypatch.setattr`` as well. | | setenv(self, name: str, value: str, prepend: Optional[str] = None) -> None | Set environment variable ``name`` to ``value``. | | If ``prepend`` is a character, read the current environment variable | value and prepend the ``value`` adjoined with the ``prepend`` | character. | | setitem(self, dic: Mapping[~K, ~V], name: ~K, value: ~V) -> None | Set dictionary entry ``name`` to value. | | syspath_prepend(self, path) -> None | Prepend ``path`` to ``sys.path`` list of import locations. | | undo(self) -> None | Undo previous changes. | | This call consumes the undo stack. Calling it a second time has no | effect unless you do more monkeypatching after the undo call. | | There is generally no need to call `undo()`, since it is | called automatically during tear-down. | | .. note:: | The same `monkeypatch` fixture is used across a | single test function invocation. If `monkeypatch` is used both by | the test function itself and one of the test fixtures, | calling `undo()` will undo all of the changes made in | both functions. | | Prefer to use :meth:`context() ` instead. | | ---------------------------------------------------------------------- | Class methods defined here: | | context() -> Generator[ForwardRef('MonkeyPatch'), NoneType, NoneType] from builtins.type | Context manager that returns a new :class:`MonkeyPatch` object | which undoes any patching done inside the ``with`` block upon exit. | | Example: | | .. code-block:: python | | import functools | | | def test_partial(monkeypatch): | with monkeypatch.context() as m: | m.setattr(functools, "partial", 3) | | Useful in situations where it is desired to undo some patches before the test ends, | such as mocking ``stdlib`` functions that might break pytest itself if mocked (for examples | of this see :issue:`3290`). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class OptionGroup(builtins.object) | OptionGroup(name: str, description: str = '', parser: Optional[_pytest.config.argparsing.Parser] = None, *, _ispytest: bool = False) -> None | | A group of options shown in its own section. | | Methods defined here: | | __init__(self, name: str, description: str = '', parser: Optional[_pytest.config.argparsing.Parser] = None, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | addoption(self, *opts: str, **attrs: Any) -> None | Add an option to this group. | | If a shortened version of a long option is specified, it will | be suppressed in the help. ``addoption('--twowords', '--two-words')`` | results in help showing ``--two-words`` only, but ``--twowords`` gets | accepted **and** the automatic destination is in ``args.twowords``. | | :param opts: | Option names, can be short or long options. | :param attrs: | Same attributes as the argparse library's :py:func:`add_argument() | ` function accepts. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class Package(Module) | Package(*k, **kw) | | Collector for files and directories in a Python packages -- directories | with an `__init__.py` file. | | Method resolution order: | Package | Module | _pytest.nodes.File | _pytest.nodes.FSCollector | PyCollector | PyobjMixin | _pytest.nodes.Collector | _pytest.nodes.Node | builtins.object | | Methods defined here: | | __init__(self, fspath: Optional[_pytest._py.path.LocalPath], parent: _pytest.nodes.Collector, config=None, session=None, nodeid=None, path: Optional[pathlib.Path] = None) -> None | Initialize self. See help(type(self)) for accurate signature. | | collect(self) -> Iterable[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] | Collect children (items and collectors) for this collector. | | setup(self) -> None | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.FSCollector: | | gethookproxy(self, fspath: 'os.PathLike[str]') | | isinitpath(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> bool | | ---------------------------------------------------------------------- | Class methods inherited from _pytest.nodes.FSCollector: | | from_parent(parent, *, fspath: Optional[_pytest._py.path.LocalPath] = None, path: Optional[pathlib.Path] = None, **kw) from _pytest.nodes.NodeMeta | The public constructor. | | ---------------------------------------------------------------------- | Methods inherited from PyCollector: | | classnamefilter(self, name: str) -> bool | | funcnamefilter(self, name: str) -> bool | | isnosetest(self, obj: object) -> bool | Look for the __test__ attribute, which is applied by the | @nose.tools.istest decorator. | | istestclass(self, obj: object, name: str) -> bool | | istestfunction(self, obj: object, name: str) -> bool | | ---------------------------------------------------------------------- | Methods inherited from PyobjMixin: | | getmodpath(self, stopatmodule: bool = True, includemodule: bool = False) -> str | Return Python path relative to the containing module. | | reportinfo(self) -> Tuple[Union[ForwardRef('os.PathLike[str]'), str], Optional[int], str] | | ---------------------------------------------------------------------- | Readonly properties inherited from PyobjMixin: | | cls | Python class object this node was collected from (can be None). | | instance | Python instance object the function is bound to. | | Returns None if not a test method, e.g. for a standalone test function, | a staticmethod, a class or a module. | | module | Python module object this node was collected from (can be None). | | ---------------------------------------------------------------------- | Data descriptors inherited from PyobjMixin: | | __weakref__ | list of weak references to the object (if defined) | | obj | Underlying Python object. | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Collector: | | repr_failure(self, excinfo: _pytest._code.code.ExceptionInfo[BaseException]) -> Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Collector: | | CollectError = | An error during collection, contains a custom message. | | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | __repr__(self) -> str | Return repr(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class Parser(builtins.object) | Parser(usage: Optional[str] = None, processopt: Optional[Callable[[ForwardRef('Argument')], NoneType]] = None, *, _ispytest: bool = False) -> None | | Parser for command line arguments and ini-file values. | | :ivar extra_info: Dict of generic param -> value to display in case | there's an error processing the command line arguments. | | Methods defined here: | | __init__(self, usage: Optional[str] = None, processopt: Optional[Callable[[ForwardRef('Argument')], NoneType]] = None, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | addini(self, name: str, help: str, type: Optional[ForwardRef("Literal['string', 'paths', 'pathlist', 'args', 'linelist', 'bool']")] = None, default: Any = None) -> None | Register an ini-file option. | | :param name: | Name of the ini-variable. | :param type: | Type of the variable. Can be: | | * ``string``: a string | * ``bool``: a boolean | * ``args``: a list of strings, separated as in a shell | * ``linelist``: a list of strings, separated by line breaks | * ``paths``: a list of :class:`pathlib.Path`, separated as in a shell | * ``pathlist``: a list of ``py.path``, separated as in a shell | | .. versionadded:: 7.0 | The ``paths`` variable type. | | Defaults to ``string`` if ``None`` or not passed. | :param default: | Default value if no ini-file option exists but is queried. | | The value of ini-variables can be retrieved via a call to | :py:func:`config.getini(name) `. | | addoption(self, *opts: str, **attrs: Any) -> None | Register a command line option. | | :param opts: | Option names, can be short or long options. | :param attrs: | Same attributes as the argparse library's :py:func:`add_argument() | ` function accepts. | | After command line parsing, options are available on the pytest config | object via ``config.option.NAME`` where ``NAME`` is usually set | by passing a ``dest`` attribute, for example | ``addoption("--long", dest="NAME", ...)``. | | getgroup(self, name: str, description: str = '', after: Optional[str] = None) -> 'OptionGroup' | Get (or create) a named option Group. | | :param name: Name of the option group. | :param description: Long description for --help output. | :param after: Name of another group, used for ordering --help output. | :returns: The option group. | | The returned group object has an ``addoption`` method with the same | signature as :func:`parser.addoption ` but | will be shown in the respective group in the output of | ``pytest --help``. | | parse(self, args: Sequence[Union[str, ForwardRef('os.PathLike[str]')]], namespace: Optional[argparse.Namespace] = None) -> argparse.Namespace | | parse_known_and_unknown_args(self, args: Sequence[Union[str, ForwardRef('os.PathLike[str]')]], namespace: Optional[argparse.Namespace] = None) -> Tuple[argparse.Namespace, List[str]] | Parse the known arguments at this point, and also return the | remaining unknown arguments. | | :returns: | A tuple containing an argparse namespace object for the known | arguments, and a list of the unknown arguments. | | parse_known_args(self, args: Sequence[Union[str, ForwardRef('os.PathLike[str]')]], namespace: Optional[argparse.Namespace] = None) -> argparse.Namespace | Parse the known arguments at this point. | | :returns: An argparse namespace object. | | parse_setoption(self, args: Sequence[Union[str, ForwardRef('os.PathLike[str]')]], option: argparse.Namespace, namespace: Optional[argparse.Namespace] = None) -> List[str] | | processoption(self, option: 'Argument') -> None | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'prog': typing.Optional[str]} | | __final__ = True | | prog = None class PytestAssertRewriteWarning(PytestWarning) | Warning emitted by the pytest assert rewrite module. | | Method resolution order: | PytestAssertRewriteWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestCacheWarning(PytestWarning) | Warning emitted by the cache plugin in various situations. | | Method resolution order: | PytestCacheWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestCollectionWarning(PytestWarning) | Warning emitted when pytest is not able to collect a file or symbol in a module. | | Method resolution order: | PytestCollectionWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestConfigWarning(PytestWarning) | Warning emitted for configuration issues. | | Method resolution order: | PytestConfigWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestDeprecationWarning(PytestWarning, builtins.DeprecationWarning) | Warning class for features that will be removed in a future version. | | Method resolution order: | PytestDeprecationWarning | PytestWarning | builtins.UserWarning | builtins.DeprecationWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestExperimentalApiWarning(PytestWarning, builtins.FutureWarning) | Warning category used to denote experiments in pytest. | | Use sparingly as the API might change or even be removed completely in a | future version. | | Method resolution order: | PytestExperimentalApiWarning | PytestWarning | builtins.UserWarning | builtins.FutureWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Class methods defined here: | | simple(apiname: str) -> 'PytestExperimentalApiWarning' from builtins.type | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestPluginManager(pluggy._manager.PluginManager) | PytestPluginManager() -> None | | A :py:class:`pluggy.PluginManager ` with | additional pytest-specific functionality: | | * Loading plugins from the command line, ``PYTEST_PLUGINS`` env variable and | ``pytest_plugins`` global variables found in plugins being loaded. | * ``conftest.py`` loading during start-up. | | Method resolution order: | PytestPluginManager | pluggy._manager.PluginManager | builtins.object | | Methods defined here: | | __init__(self) -> None | Initialize self. See help(type(self)) for accurate signature. | | consider_conftest(self, conftestmodule: module) -> None | :meta private: | | consider_env(self) -> None | :meta private: | | consider_module(self, mod: module) -> None | :meta private: | | consider_pluginarg(self, arg: str) -> None | :meta private: | | consider_preparse(self, args: Sequence[str], *, exclude_only: bool = False) -> None | :meta private: | | getplugin(self, name: str) | | hasplugin(self, name: str) -> bool | Return whether a plugin with the given name is registered. | | import_plugin(self, modname: str, consider_entry_points: bool = False) -> None | Import a plugin with ``modname``. | | If ``consider_entry_points`` is True, entry point names are also | considered to find a plugin. | | parse_hookimpl_opts(self, plugin: object, name: str) | Try to obtain a hook implementation from an item with the given name | in the given plugin which is being searched for hook impls. | | :returns: | The parsed hookimpl options, or None to skip the given item. | | This method can be overridden by ``PluginManager`` subclasses to | customize how hook implementation are picked up. By default, returns the | options for items decorated with :class:`HookimplMarker`. | | parse_hookspec_opts(self, module_or_class, name: str) | Try to obtain a hook specification from an item with the given name | in the given module or class which is being searched for hook specs. | | :returns: | The parsed hookspec options for defining a hook, or None to skip the | given item. | | This method can be overridden by ``PluginManager`` subclasses to | customize how hook specifications are picked up. By default, returns the | options for items decorated with :class:`HookspecMarker`. | | pytest_configure(self, config: 'Config') -> None | :meta private: | | register(self, plugin: object, name: Optional[str] = None) -> Optional[str] | Register a plugin and return its name. | | :param name: | The name under which to register the plugin. If not specified, a | name is generated using :func:`get_canonical_name`. | | :returns: | The plugin name. If the name is blocked from registering, returns | ``None``. | | If the plugin is already registered, raises a :exc:`ValueError`. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Methods inherited from pluggy._manager.PluginManager: | | add_hookcall_monitoring(self, before: '_BeforeTrace', after: '_AfterTrace') -> 'Callable[[], None]' | Add before/after tracing functions for all hooks. | | Returns an undo function which, when called, removes the added tracers. | | ``before(hook_name, hook_impls, kwargs)`` will be called ahead | of all hook calls and receive a hookcaller instance, a list | of HookImpl instances and the keyword arguments for the hook call. | | ``after(outcome, hook_name, hook_impls, kwargs)`` receives the | same arguments as ``before`` but also a :class:`~pluggy.Result` object | which represents the result of the overall hook call. | | add_hookspecs(self, module_or_class: '_Namespace') -> 'None' | Add new hook specifications defined in the given ``module_or_class``. | | Functions are recognized as hook specifications if they have been | decorated with a matching :class:`HookspecMarker`. | | check_pending(self) -> 'None' | Verify that all hooks which have not been verified against a | hook specification are optional, otherwise raise | :exc:`PluginValidationError`. | | enable_tracing(self) -> 'Callable[[], None]' | Enable tracing of hook calls. | | Returns an undo function which, when called, removes the added tracing. | | get_canonical_name(self, plugin: '_Plugin') -> 'str' | Return a canonical name for a plugin object. | | Note that a plugin may be registered under a different name | specified by the caller of :meth:`register(plugin, name) `. | To obtain the name of a registered plugin use :meth:`get_name(plugin) | ` instead. | | get_hookcallers(self, plugin: '_Plugin') -> 'list[HookCaller] | None' | Get all hook callers for the specified plugin. | | :returns: | The hook callers, or ``None`` if ``plugin`` is not registered in | this plugin manager. | | get_name(self, plugin: '_Plugin') -> 'str | None' | Return the name the plugin is registered under, or ``None`` if | is isn't. | | get_plugin(self, name: 'str') -> 'Any | None' | Return the plugin registered under the given name, if any. | | get_plugins(self) -> 'set[Any]' | Return a set of all registered plugin objects. | | has_plugin(self, name: 'str') -> 'bool' | Return whether a plugin with the given name is registered. | | is_blocked(self, name: 'str') -> 'bool' | Return whether the given plugin name is blocked. | | is_registered(self, plugin: '_Plugin') -> 'bool' | Return whether the plugin is already registered. | | list_name_plugin(self) -> 'list[tuple[str, _Plugin]]' | Return a list of (name, plugin) pairs for all registered plugins. | | list_plugin_distinfo(self) -> 'list[tuple[_Plugin, DistFacade]]' | Return a list of (plugin, distinfo) pairs for all | setuptools-registered plugins. | | load_setuptools_entrypoints(self, group: 'str', name: 'str | None' = None) -> 'int' | Load modules from querying the specified setuptools ``group``. | | :param group: | Entry point group to load plugins. | :param name: | If given, loads only plugins with the given ``name``. | | :return: | The number of plugins loaded by this call. | | set_blocked(self, name: 'str') -> 'None' | Block registrations of the given name, unregister if already registered. | | subset_hook_caller(self, name: 'str', remove_plugins: 'Iterable[_Plugin]') -> 'HookCaller' | Return a proxy :class:`~pluggy.HookCaller` instance for the named | method which manages calls to all registered plugins except the ones | from remove_plugins. | | unregister(self, plugin: '_Plugin | None' = None, name: 'str | None' = None) -> 'Any | None' | Unregister a plugin and all of its hook implementations. | | The plugin can be specified either by the plugin object or the plugin | name. If both are specified, they must agree. | | Returns the unregistered plugin, or ``None`` if not found. | | ---------------------------------------------------------------------- | Data descriptors inherited from pluggy._manager.PluginManager: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class PytestRemovedIn8Warning(PytestDeprecationWarning) | Warning class for features that will be removed in pytest 8. | | Method resolution order: | PytestRemovedIn8Warning | PytestDeprecationWarning | PytestWarning | builtins.UserWarning | builtins.DeprecationWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestReturnNotNoneWarning(PytestRemovedIn8Warning) | Warning emitted when a test function is returning value other than None. | | Method resolution order: | PytestReturnNotNoneWarning | PytestRemovedIn8Warning | PytestDeprecationWarning | PytestWarning | builtins.UserWarning | builtins.DeprecationWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestUnhandledCoroutineWarning(PytestReturnNotNoneWarning) | Warning emitted for an unhandled coroutine. | | A coroutine was encountered when collecting test functions, but was not | handled by any async-aware plugin. | Coroutine test functions are not natively supported. | | Method resolution order: | PytestUnhandledCoroutineWarning | PytestReturnNotNoneWarning | PytestRemovedIn8Warning | PytestDeprecationWarning | PytestWarning | builtins.UserWarning | builtins.DeprecationWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestUnhandledThreadExceptionWarning(PytestWarning) | An unhandled exception occurred in a :class:`~threading.Thread`. | | Such exceptions don't propagate normally. | | Method resolution order: | PytestUnhandledThreadExceptionWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestUnknownMarkWarning(PytestWarning) | Warning emitted on use of unknown markers. | | See :ref:`mark` for details. | | Method resolution order: | PytestUnknownMarkWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestUnraisableExceptionWarning(PytestWarning) | An unraisable exception was reported. | | Unraisable exceptions are exceptions raised in :meth:`__del__ ` | implementations and similar situations when the exception cannot be raised | as normal. | | Method resolution order: | PytestUnraisableExceptionWarning | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data and other attributes defined here: | | __final__ = True | | ---------------------------------------------------------------------- | Data descriptors inherited from PytestWarning: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class PytestWarning(builtins.UserWarning) | Base class for all warnings emitted by pytest. | | Method resolution order: | PytestWarning | builtins.UserWarning | builtins.Warning | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Methods inherited from builtins.UserWarning: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.UserWarning: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __delattr__(self, name, /) | Implement delattr(self, name). | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setattr__(self, name, value, /) | Implement setattr(self, name, value). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args class Pytester(builtins.object) | Pytester(request: _pytest.fixtures.FixtureRequest, tmp_path_factory: _pytest.tmpdir.TempPathFactory, monkeypatch: _pytest.monkeypatch.MonkeyPatch, *, _ispytest: bool = False) -> None | | Facilities to write tests/configuration files, execute pytest in isolation, and match | against expected output, perfect for black-box testing of pytest plugins. | | It attempts to isolate the test run from external factors as much as possible, modifying | the current working directory to :attr:`path` and environment variables during initialization. | | Methods defined here: | | __init__(self, request: _pytest.fixtures.FixtureRequest, tmp_path_factory: _pytest.tmpdir.TempPathFactory, monkeypatch: _pytest.monkeypatch.MonkeyPatch, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | chdir(self) -> None | Cd into the temporary directory. | | This is done automatically upon instantiation. | | collect_by_name(self, modcol: _pytest.nodes.Collector, name: str) -> Union[_pytest.nodes.Item, _pytest.nodes.Collector, NoneType] | Return the collection node for name from the module collection. | | Searches a module collection node for a collection node matching the | given name. | | :param modcol: A module collection node; see :py:meth:`getmodulecol`. | :param name: The name of the node to return. | | copy_example(self, name: Optional[str] = None) -> pathlib.Path | Copy file from project's directory into the testdir. | | :param name: | The name of the file to copy. | :return: | Path to the copied directory (inside ``self.path``). | | genitems(self, colitems: Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]]) -> List[_pytest.nodes.Item] | Generate all test items from a collection node. | | This recurses into the collection node and returns a list of all the | test items contained within. | | :param colitems: | The collection nodes. | :returns: | The collected items. | | getinicfg(self, source: str) -> iniconfig.SectionWrapper | Return the pytest section from the tox.ini config file. | | getitem(self, source: Union[str, ForwardRef('os.PathLike[str]')], funcname: str = 'test_func') -> _pytest.nodes.Item | Return the test item for a test function. | | Writes the source to a python file and runs pytest's collection on | the resulting module, returning the test item for the requested | function name. | | :param source: | The module source. | :param funcname: | The name of the test function for which to return a test item. | :returns: | The test item. | | getitems(self, source: Union[str, ForwardRef('os.PathLike[str]')]) -> List[_pytest.nodes.Item] | Return all test items collected from the module. | | Writes the source to a Python file and runs pytest's collection on | the resulting module, returning all test items contained within. | | getmodulecol(self, source: Union[str, ForwardRef('os.PathLike[str]')], configargs=(), *, withinit: bool = False) | Return the module collection node for ``source``. | | Writes ``source`` to a file using :py:meth:`makepyfile` and then | runs the pytest collection on it, returning the collection node for the | test module. | | :param source: | The source code of the module to collect. | | :param configargs: | Any extra arguments to pass to :py:meth:`parseconfigure`. | | :param withinit: | Whether to also write an ``__init__.py`` file to the same | directory to ensure it is a package. | | getnode(self, config: _pytest.config.Config, arg: Union[str, ForwardRef('os.PathLike[str]')]) -> Union[_pytest.nodes.Collector, _pytest.nodes.Item] | Get the collection node of a file. | | :param config: | A pytest config. | See :py:meth:`parseconfig` and :py:meth:`parseconfigure` for creating it. | :param arg: | Path to the file. | :returns: | The node. | | getpathnode(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> Union[_pytest.nodes.Collector, _pytest.nodes.Item] | Return the collection node of a file. | | This is like :py:meth:`getnode` but uses :py:meth:`parseconfigure` to | create the (configured) pytest Config instance. | | :param path: | Path to the file. | :returns: | The node. | | inline_genitems(self, *args) -> Tuple[List[_pytest.nodes.Item], _pytest.pytester.HookRecorder] | Run ``pytest.main(['--collectonly'])`` in-process. | | Runs the :py:func:`pytest.main` function to run all of pytest inside | the test process itself like :py:meth:`inline_run`, but returns a | tuple of the collected items and a :py:class:`HookRecorder` instance. | | inline_run(self, *args: Union[str, ForwardRef('os.PathLike[str]')], plugins=(), no_reraise_ctrlc: bool = False) -> _pytest.pytester.HookRecorder | Run ``pytest.main()`` in-process, returning a HookRecorder. | | Runs the :py:func:`pytest.main` function to run all of pytest inside | the test process itself. This means it can return a | :py:class:`HookRecorder` instance which gives more detailed results | from that run than can be done by matching stdout/stderr from | :py:meth:`runpytest`. | | :param args: | Command line arguments to pass to :py:func:`pytest.main`. | :param plugins: | Extra plugin instances the ``pytest.main()`` instance should use. | :param no_reraise_ctrlc: | Typically we reraise keyboard interrupts from the child run. If | True, the KeyboardInterrupt exception is captured. | | inline_runsource(self, source: str, *cmdlineargs) -> _pytest.pytester.HookRecorder | Run a test module in process using ``pytest.main()``. | | This run writes "source" into a temporary file and runs | ``pytest.main()`` on it, returning a :py:class:`HookRecorder` instance | for the result. | | :param source: The source code of the test module. | :param cmdlineargs: Any extra command line arguments to use. | | make_hook_recorder(self, pluginmanager: _pytest.config.PytestPluginManager) -> _pytest.pytester.HookRecorder | Create a new :class:`HookRecorder` for a :class:`PytestPluginManager`. | | makeconftest(self, source: str) -> pathlib.Path | Write a contest.py file. | | :param source: The contents. | :returns: The conftest.py file. | | makefile(self, ext: str, *args: str, **kwargs: str) -> pathlib.Path | Create new text file(s) in the test directory. | | :param ext: | The extension the file(s) should use, including the dot, e.g. `.py`. | :param args: | All args are treated as strings and joined using newlines. | The result is written as contents to the file. The name of the | file is based on the test function requesting this fixture. | :param kwargs: | Each keyword is the name of a file, while the value of it will | be written as contents of the file. | :returns: | The first created file. | | Examples: | | .. code-block:: python | | pytester.makefile(".txt", "line1", "line2") | | pytester.makefile(".ini", pytest="[pytest]\naddopts=-rs\n") | | To create binary files, use :meth:`pathlib.Path.write_bytes` directly: | | .. code-block:: python | | filename = pytester.path.joinpath("foo.bin") | filename.write_bytes(b"...") | | makeini(self, source: str) -> pathlib.Path | Write a tox.ini file. | | :param source: The contents. | :returns: The tox.ini file. | | makepyfile(self, *args, **kwargs) -> pathlib.Path | Shortcut for .makefile() with a .py extension. | | Defaults to the test name with a '.py' extension, e.g test_foobar.py, overwriting | existing files. | | Examples: | | .. code-block:: python | | def test_something(pytester): | # Initial file is created test_something.py. | pytester.makepyfile("foobar") | # To create multiple files, pass kwargs accordingly. | pytester.makepyfile(custom="foobar") | # At this point, both 'test_something.py' & 'custom.py' exist in the test directory. | | makepyprojecttoml(self, source: str) -> pathlib.Path | Write a pyproject.toml file. | | :param source: The contents. | :returns: The pyproject.ini file. | | .. versionadded:: 6.0 | | maketxtfile(self, *args, **kwargs) -> pathlib.Path | Shortcut for .makefile() with a .txt extension. | | Defaults to the test name with a '.txt' extension, e.g test_foobar.txt, overwriting | existing files. | | Examples: | | .. code-block:: python | | def test_something(pytester): | # Initial file is created test_something.txt. | pytester.maketxtfile("foobar") | # To create multiple files, pass kwargs accordingly. | pytester.maketxtfile(custom="foobar") | # At this point, both 'test_something.txt' & 'custom.txt' exist in the test directory. | | mkdir(self, name: Union[str, ForwardRef('os.PathLike[str]')]) -> pathlib.Path | Create a new (sub)directory. | | :param name: | The name of the directory, relative to the pytester path. | :returns: | The created directory. | | mkpydir(self, name: Union[str, ForwardRef('os.PathLike[str]')]) -> pathlib.Path | Create a new python package. | | This creates a (sub)directory with an empty ``__init__.py`` file so it | gets recognised as a Python package. | | parseconfig(self, *args: Union[str, ForwardRef('os.PathLike[str]')]) -> _pytest.config.Config | Return a new pytest :class:`pytest.Config` instance from given | commandline args. | | This invokes the pytest bootstrapping code in _pytest.config to create a | new :py:class:`pytest.PytestPluginManager` and call the | :hook:`pytest_cmdline_parse` hook to create a new :class:`pytest.Config` | instance. | | If :attr:`plugins` has been populated they should be plugin modules | to be registered with the plugin manager. | | parseconfigure(self, *args: Union[str, ForwardRef('os.PathLike[str]')]) -> _pytest.config.Config | Return a new pytest configured Config instance. | | Returns a new :py:class:`pytest.Config` instance like | :py:meth:`parseconfig`, but also calls the :hook:`pytest_configure` | hook. | | popen(self, cmdargs: Sequence[Union[str, ForwardRef('os.PathLike[str]')]], stdout: Union[int, TextIO] = -1, stderr: Union[int, TextIO] = -1, stdin: Union[_pytest.compat.NotSetType, bytes, IO[Any], int] = , **kw) | Invoke :py:class:`subprocess.Popen`. | | Calls :py:class:`subprocess.Popen` making sure the current working | directory is in ``PYTHONPATH``. | | You probably want to use :py:meth:`run` instead. | | run(self, *cmdargs: Union[str, ForwardRef('os.PathLike[str]')], timeout: Optional[float] = None, stdin: Union[_pytest.compat.NotSetType, bytes, IO[Any], int] = ) -> _pytest.pytester.RunResult | Run a command with arguments. | | Run a process using :py:class:`subprocess.Popen` saving the stdout and | stderr. | | :param cmdargs: | The sequence of arguments to pass to :py:class:`subprocess.Popen`, | with path-like objects being converted to :py:class:`str` | automatically. | :param timeout: | The period in seconds after which to timeout and raise | :py:class:`Pytester.TimeoutExpired`. | :param stdin: | Optional standard input. | | - If it is :py:attr:`CLOSE_STDIN` (Default), then this method calls | :py:class:`subprocess.Popen` with ``stdin=subprocess.PIPE``, and | the standard input is closed immediately after the new command is | started. | | - If it is of type :py:class:`bytes`, these bytes are sent to the | standard input of the command. | | - Otherwise, it is passed through to :py:class:`subprocess.Popen`. | For further information in this case, consult the document of the | ``stdin`` parameter in :py:class:`subprocess.Popen`. | :returns: | The result. | | runitem(self, source: str) -> Any | Run the "test_func" Item. | | The calling test instance (class containing the test method) must | provide a ``.getrunner()`` method which should return a runner which | can run the test protocol for a single item, e.g. | :py:func:`_pytest.runner.runtestprotocol`. | | runpytest(self, *args: Union[str, ForwardRef('os.PathLike[str]')], **kwargs: Any) -> _pytest.pytester.RunResult | Run pytest inline or in a subprocess, depending on the command line | option "--runpytest" and return a :py:class:`~pytest.RunResult`. | | runpytest_inprocess(self, *args: Union[str, ForwardRef('os.PathLike[str]')], **kwargs: Any) -> _pytest.pytester.RunResult | Return result of running pytest in-process, providing a similar | interface to what self.runpytest() provides. | | runpytest_subprocess(self, *args: Union[str, ForwardRef('os.PathLike[str]')], timeout: Optional[float] = None) -> _pytest.pytester.RunResult | Run pytest as a subprocess with given arguments. | | Any plugins added to the :py:attr:`plugins` list will be added using the | ``-p`` command line option. Additionally ``--basetemp`` is used to put | any temporary files and directories in a numbered directory prefixed | with "runpytest-" to not conflict with the normal numbered pytest | location for temporary files and directories. | | :param args: | The sequence of arguments to pass to the pytest subprocess. | :param timeout: | The period in seconds after which to timeout and raise | :py:class:`Pytester.TimeoutExpired`. | :returns: | The result. | | runpython(self, script: 'os.PathLike[str]') -> _pytest.pytester.RunResult | Run a python script using sys.executable as interpreter. | | runpython_c(self, command: str) -> _pytest.pytester.RunResult | Run ``python -c "command"``. | | spawn(self, cmd: str, expect_timeout: float = 10.0) -> 'pexpect.spawn' | Run a command using pexpect. | | The pexpect child is returned. | | spawn_pytest(self, string: str, expect_timeout: float = 10.0) -> 'pexpect.spawn' | Run pytest using pexpect. | | This makes sure to use the right pytest and sets up the temporary | directory locations. | | The pexpect child is returned. | | syspathinsert(self, path: Union[str, ForwardRef('os.PathLike[str]'), NoneType] = None) -> None | Prepend a directory to sys.path, defaults to :attr:`path`. | | This is undone automatically when this object dies at the end of each | test. | | :param path: | The path. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | path | Temporary directory path used to create files/run tests from, etc. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | CLOSE_STDIN = | | TimeoutExpired = | | __annotations__ = {'CLOSE_STDIN': 'Final'} | | __final__ = True | | __test__ = False class RecordedHookCall(builtins.object) | RecordedHookCall(name: str, kwargs) -> None | | A recorded call to a hook. | | The arguments to the hook call are set as attributes. | For example: | | .. code-block:: python | | calls = hook_recorder.getcalls("pytest_runtest_setup") | # Suppose pytest_runtest_setup was called once with `item=an_item`. | assert calls[0].item is an_item | | Methods defined here: | | __init__(self, name: str, kwargs) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class RunResult(builtins.object) | RunResult(ret: Union[int, _pytest.config.ExitCode], outlines: List[str], errlines: List[str], duration: float) -> None | | The result of running a command from :class:`~pytest.Pytester`. | | Methods defined here: | | __init__(self, ret: Union[int, _pytest.config.ExitCode], outlines: List[str], errlines: List[str], duration: float) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | assert_outcomes(self, passed: int = 0, skipped: int = 0, failed: int = 0, errors: int = 0, xpassed: int = 0, xfailed: int = 0, warnings: Optional[int] = None, deselected: Optional[int] = None) -> None | Assert that the specified outcomes appear with the respective | numbers (0 means it didn't occur) in the text output from a test run. | | ``warnings`` and ``deselected`` are only checked if not None. | | parseoutcomes(self) -> Dict[str, int] | Return a dictionary of outcome noun -> count from parsing the terminal | output that the test process produced. | | The returned nouns will always be in plural form:: | | ======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ==== | | Will return ``{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}``. | | ---------------------------------------------------------------------- | Class methods defined here: | | parse_summary_nouns(lines) -> Dict[str, int] from builtins.type | Extract the nouns from a pytest terminal summary line. | | It always returns the plural noun for consistency:: | | ======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ==== | | Will return ``{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}``. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __final__ = True class Session(_pytest.nodes.FSCollector) | Session(*k, **kw) | | The root of the collection tree. | | ``Session`` collects the initial paths given as arguments to pytest. | | Method resolution order: | Session | _pytest.nodes.FSCollector | _pytest.nodes.Collector | _pytest.nodes.Node | builtins.object | | Methods defined here: | | __init__(self, config: _pytest.config.Config) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | collect(self) -> Iterator[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] | Collect children (items and collectors) for this collector. | | genitems(self, node: Union[_pytest.nodes.Item, _pytest.nodes.Collector]) -> Iterator[_pytest.nodes.Item] | | gethookproxy(self, fspath: 'os.PathLike[str]') | | isinitpath(self, path: Union[str, ForwardRef('os.PathLike[str]')]) -> bool | | perform_collect(self, args: Optional[Sequence[str]] = None, genitems: bool = True) -> Sequence[Union[_pytest.nodes.Item, _pytest.nodes.Collector]] | Perform the collection phase for this session. | | This is called by the default :hook:`pytest_collection` hook | implementation; see the documentation of this hook for more details. | For testing purposes, it may also be called directly on a fresh | ``Session``. | | This function normally recursively expands any collectors collected | from the session to their items, and only items are returned. For | testing purposes, this may be suppressed by passing ``genitems=False``, | in which case the return value contains these collectors unexpanded, | and ``session.items`` is empty. | | pytest_collectreport = pytest_runtest_logreport(self, report: Union[_pytest.reports.TestReport, _pytest.reports.CollectReport]) -> None | | pytest_collectstart(self) -> None | | pytest_runtest_logreport(self, report: Union[_pytest.reports.TestReport, _pytest.reports.CollectReport]) -> None | | ---------------------------------------------------------------------- | Class methods defined here: | | from_config(config: _pytest.config.Config) -> 'Session' from _pytest.nodes.NodeMeta | | ---------------------------------------------------------------------- | Readonly properties defined here: | | startpath | The path from which pytest was invoked. | | .. versionadded:: 7.0.0 | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | Failed = | Signals a stop as failed test run. | | | Interrupted = | Signals that the test run was interrupted. | | | __annotations__ = {'_fixturemanager': Union[str, _pytest._code.code.TerminalRepr] | Return a representation of a collection failure. | | :param excinfo: Exception information for the failure. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Collector: | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes inherited from _pytest.nodes.Collector: | | CollectError = | An error during collection, contains a custom message. | | | ---------------------------------------------------------------------- | Methods inherited from _pytest.nodes.Node: | | __hash__(self) -> int | Return hash(self). | | add_marker(self, marker: Union[str, _pytest.mark.structures.MarkDecorator], append: bool = True) -> None | Dynamically add a marker object to the node. | | :param marker: | The marker. | :param append: | Whether to append the marker, or prepend it. | | addfinalizer(self, fin: Callable[[], object]) -> None | Register a function to be called without arguments when this node is | finalized. | | This method can only be called when this node is active | in a setup chain, for example during self.setup(). | | get_closest_marker(self, name: str, default: Optional[_pytest.mark.structures.Mark] = None) -> Optional[_pytest.mark.structures.Mark] | Return the first marker matching the name, from closest (for | example function) to farther level (for example module level). | | :param default: Fallback return value if no marker was found. | :param name: Name to filter by. | | getparent(self, cls: Type[~_NodeType]) -> Optional[~_NodeType] | Get the next parent node (including self) which is an instance of | the given class. | | :param cls: The node class to search for. | :returns: The node, if found. | | iter_markers(self, name: Optional[str] = None) -> Iterator[_pytest.mark.structures.Mark] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of the markers of the node. | | iter_markers_with_node(self, name: Optional[str] = None) -> Iterator[Tuple[ForwardRef('Node'), _pytest.mark.structures.Mark]] | Iterate over all markers of the node. | | :param name: If given, filter the results by the name attribute. | :returns: An iterator of (node, mark) tuples. | | listchain(self) -> List[ForwardRef('Node')] | Return list of all parent collectors up to self, starting from | the root of collection tree. | | :returns: The nodes. | | listextrakeywords(self) -> Set[str] | Return a set of all extra keywords in self and any parents. | | listnames(self) -> List[str] | | setup(self) -> None | | teardown(self) -> None | | warn(self, warning: Warning) -> None | Issue a warning for this Node. | | Warnings will be displayed after the test session, unless explicitly suppressed. | | :param Warning warning: | The warning instance to issue. | | :raises ValueError: If ``warning`` instance is not a subclass of Warning. | | Example usage: | | .. code-block:: python | | node.warn(PytestWarning("some message")) | node.warn(UserWarning("some message")) | | .. versionchanged:: 6.2 | Any subclass of :class:`Warning` is now accepted, rather than only | :class:`PytestWarning ` subclasses. | | ---------------------------------------------------------------------- | Readonly properties inherited from _pytest.nodes.Node: | | ihook | fspath-sensitive hook proxy used to call pytest hooks. | | nodeid | A ::-separated string denoting its collection tree address. | | ---------------------------------------------------------------------- | Data descriptors inherited from _pytest.nodes.Node: | | __dict__ | dictionary for instance variables (if defined) | | config | | name | | parent | | path | | session class Stash(builtins.object) | Stash() -> None | | ``Stash`` is a type-safe heterogeneous mutable mapping that | allows keys and value types to be defined separately from | where it (the ``Stash``) is created. | | Usually you will be given an object which has a ``Stash``, for example | :class:`~pytest.Config` or a :class:`~_pytest.nodes.Node`: | | .. code-block:: python | | stash: Stash = some_object.stash | | If a module or plugin wants to store data in this ``Stash``, it creates | :class:`StashKey`\s for its keys (at the module level): | | .. code-block:: python | | # At the top-level of the module | some_str_key = StashKey[str]() | some_bool_key = StashKey[bool]() | | To store information: | | .. code-block:: python | | # Value type must match the key. | stash[some_str_key] = "value" | stash[some_bool_key] = True | | To retrieve the information: | | .. code-block:: python | | # The static type of some_str is str. | some_str = stash[some_str_key] | # The static type of some_bool is bool. | some_bool = stash[some_bool_key] | | Methods defined here: | | __contains__(self, key: _pytest.stash.StashKey[~T]) -> bool | Return whether key was set. | | __delitem__(self, key: _pytest.stash.StashKey[~T]) -> None | Delete the value for key. | | Raises ``KeyError`` if the key wasn't set before. | | __getitem__(self, key: _pytest.stash.StashKey[~T]) -> ~T | Get the value for key. | | Raises ``KeyError`` if the key wasn't set before. | | __init__(self) -> None | Initialize self. See help(type(self)) for accurate signature. | | __len__(self) -> int | Return how many items exist in the stash. | | __setitem__(self, key: _pytest.stash.StashKey[~T], value: ~T) -> None | Set a value for key. | | get(self, key: _pytest.stash.StashKey[~T], default: ~D) -> Union[~T, ~D] | Get the value for key, or return default if the key wasn't set | before. | | setdefault(self, key: _pytest.stash.StashKey[~T], default: ~T) -> ~T | Return the value of key if already set, otherwise set the value | of key to default and return default. class StashKey(typing.Generic) | ``StashKey`` is an object used as a key to a :class:`Stash`. | | A ``StashKey`` is associated with the type ``T`` of the value of the key. | | A ``StashKey`` is unique and cannot conflict with another key. | | Method resolution order: | StashKey | typing.Generic | builtins.object | | Data and other attributes defined here: | | __annotations__ = {} | | __orig_bases__ = (typing.Generic[~T],) | | __parameters__ = (~T,) | | ---------------------------------------------------------------------- | Class methods inherited from typing.Generic: | | __class_getitem__(...) from builtins.type | Parameterizes a generic class. | | At least, parameterizing a generic class is the *main* thing this | method does. For example, for some generic class `Foo`, this is called | when we do `Foo[int]` - there, with `cls=Foo` and `params=int`. | | However, note that this method is also called when defining generic | classes in the first place with `class Foo[T]: ...`. | | __init_subclass__(...) from builtins.type | Function to initialize subclasses. class TempPathFactory(builtins.object) | TempPathFactory(given_basetemp: Optional[pathlib.Path], retention_count: int, retention_policy: 'RetentionType', trace, basetemp: Optional[pathlib.Path] = None, *, _ispytest: bool = False) -> None | | Factory for temporary directories under the common base temp directory. | | The base directory can be configured using the ``--basetemp`` option. | | Methods defined here: | | __eq__(self, other) | Return self==value. | | __init__(self, given_basetemp: Optional[pathlib.Path], retention_count: int, retention_policy: 'RetentionType', trace, basetemp: Optional[pathlib.Path] = None, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) | Return repr(self). | | getbasetemp(self) -> pathlib.Path | Return the base temporary directory, creating it if needed. | | :returns: | The base temporary directory. | | mktemp(self, basename: str, numbered: bool = True) -> pathlib.Path | Create a new temporary directory managed by the factory. | | :param basename: | Directory base name, must be a relative path. | | :param numbered: | If ``True``, ensure the directory is unique by adding a numbered | suffix greater than any existing one: ``basename="foo-"`` and ``numbered=True`` | means that this function will create directories named ``"foo-0"``, | ``"foo-1"``, ``"foo-2"`` and so on. | | :returns: | The path to the new directory. | | ---------------------------------------------------------------------- | Class methods defined here: | | from_config(config: _pytest.config.Config, *, _ispytest: bool = False) -> 'TempPathFactory' from builtins.type | Create a factory according to pytest configuration. | | :meta private: | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_basetemp': typing.Optional[pathlib.Path], '_given... | | __dataclass_fields__ = {'_basetemp': Field(name='_basetemp',type=typin... | | __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,or... | | __final__ = True | | __hash__ = None | | __match_args__ = ('_given_basetemp', '_trace', '_basetemp', '_retentio... class TempdirFactory(builtins.object) | TempdirFactory(tmppath_factory: _pytest.tmpdir.TempPathFactory, *, _ispytest: bool = False) -> None | | Backward compatibility wrapper that implements :class:`py.path.local` | for :class:`TempPathFactory`. | | .. note:: | These days, it is preferred to use ``tmp_path_factory``. | | :ref:`About the tmpdir and tmpdir_factory fixtures`. | | Methods defined here: | | __eq__(self, other) | Return self==value. | | __init__(self, tmppath_factory: _pytest.tmpdir.TempPathFactory, *, _ispytest: bool = False) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) | Return repr(self). | | getbasetemp(self) -> _pytest._py.path.LocalPath | Same as :meth:`TempPathFactory.getbasetemp`, but returns a :class:`py.path.local` object. | | mktemp(self, basename: str, numbered: bool = True) -> _pytest._py.path.LocalPath | Same as :meth:`TempPathFactory.mktemp`, but returns a :class:`py.path.local` object. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {'_tmppath_factory': None | | Basic test report object (also used for setup and teardown calls if | they fail). | | Reports can contain arbitrary extra attributes. | | Method resolution order: | TestReport | BaseReport | builtins.object | | Methods defined here: | | __init__(self, nodeid: str, location: Tuple[str, Optional[int], str], keywords: Mapping[str, Any], outcome: "Literal['passed', 'failed', 'skipped']", longrepr: Union[NoneType, _pytest._code.code.ExceptionInfo[BaseException], Tuple[str, int, str], str, _pytest._code.code.TerminalRepr], when: "Literal['setup', 'call', 'teardown']", sections: Iterable[Tuple[str, str]] = (), duration: float = 0, start: float = 0, stop: float = 0, user_properties: Optional[Iterable[Tuple[str, object]]] = None, **extra) -> None | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) -> str | Return repr(self). | | ---------------------------------------------------------------------- | Class methods defined here: | | from_item_and_call(item: _pytest.nodes.Item, call: 'CallInfo[None]') -> 'TestReport' from builtins.type | Create and fill a TestReport with standard item and call info. | | :param item: The item. | :param call: The call info. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __annotations__ = {} | | __final__ = True | | __test__ = False | | ---------------------------------------------------------------------- | Methods inherited from BaseReport: | | get_sections(self, prefix: str) -> Iterator[Tuple[str, str]] | | toterminal(self, out: _pytest._io.terminalwriter.TerminalWriter) -> None | | ---------------------------------------------------------------------- | Readonly properties inherited from BaseReport: | | caplog | Return captured log lines, if log capturing is enabled. | | .. versionadded:: 3.5 | | capstderr | Return captured text from stderr, if capturing is enabled. | | .. versionadded:: 3.0 | | capstdout | Return captured text from stdout, if capturing is enabled. | | .. versionadded:: 3.0 | | count_towards_summary | **Experimental** Whether this report should be counted towards the | totals shown at the end of the test session: "1 passed, 1 failure, etc". | | .. note:: | | This function is considered **experimental**, so beware that it is subject to changes | even in patch releases. | | failed | Whether the outcome is failed. | | fspath | The path portion of the reported node, as a string. | | head_line | **Experimental** The head line shown with longrepr output for this | report, more commonly during traceback representation during | failures:: | | ________ Test.foo ________ | | | In the example above, the head_line is "Test.foo". | | .. note:: | | This function is considered **experimental**, so beware that it is subject to changes | even in patch releases. | | longreprtext | Read-only property that returns the full string representation of | ``longrepr``. | | .. versionadded:: 3.0 | | passed | Whether the outcome is passed. | | skipped | Whether the outcome is skipped. | | ---------------------------------------------------------------------- | Data descriptors inherited from BaseReport: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) class TestShortLogReport(builtins.tuple) | TestShortLogReport(category: str, letter: str, word: Union[str, Tuple[str, Mapping[str, bool]]]) | | Used to store the test status result category, shortletter and verbose word. | For example ``"rerun", "R", ("RERUN", {"yellow": True})``. | | :ivar category: | The class of result, for example ``“passed”``, ``“skipped”``, ``“error”``, or the empty string. | | :ivar letter: | The short letter shown as testing progresses, for example ``"."``, ``"s"``, ``"E"``, or the empty string. | ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592752370048) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ test_no_recursion_index_on_recursion_error __________________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 @pytest.mark.usefixtures("limited_recursion_depth") def test_no_recursion_index_on_recursion_error(): """ Ensure that we don't break in case we can't find the recursion index during a recursion error (#2486). """ class RecursionDepthError: def __getattr__(self, attr): return getattr(self, "_" + attr) with pytest.raises(RuntimeError) as excinfo: RecursionDepthError().trigger > assert "maximum recursion" in str(excinfo.getrepr()) testing/code/test_excinfo.py:1500: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:701: in getrepr return fmt.repr_excinfo(self) ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:989: in repr_excinfo reprtraceback = self.repr_traceback(excinfo_) ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:914: in repr_traceback self.repr_traceback_entry(entry, excinfo if last == entry else None) ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:852: in repr_traceback_entry source = self._getentrysource(entry) ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:754: in _getentrysource source = entry.getsource(self.astcache) ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:262: in getsource astnode, _, end = getstatementrange_ast( ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/source.py:187: in getstatementrange_ast start, end = get_statement_startend2(lineno, astnode) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ lineno = 1495, node = def get_statement_startend2(lineno: int, node: ast.AST) -> Tuple[int, Optional[int]]: # Flatten all statements and except handlers into one lineno-list. # AST's line numbers start indexing at 1. values: List[int] = [] for x in ast.walk(node): > if isinstance(x, (ast.stmt, ast.ExceptHandler)): E Failed: Timeout >30.0s ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/source.py:151: Failed ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ test_options_on_small_file_do_not_blow_up ___________________ [gw6] linux -- Python 3.12.0 /usr/bin/python3 pytester = def test_options_on_small_file_do_not_blow_up(pytester: Pytester) -> None: def runfiletest(opts: Sequence[str]) -> None: reprec = pytester.inline_run(*opts) passed, skipped, failed = reprec.countoutcomes() assert failed == 2 assert skipped == passed == 0 path = str( pytester.makepyfile( """ def test_f1(): assert 0 def test_f2(): assert 0 """ ) ) runfiletest([path]) runfiletest(["-l", path]) runfiletest(["-s", path]) runfiletest(["--tb=no", path]) runfiletest(["--tb=short", path]) runfiletest(["--tb=long", path]) runfiletest(["--fulltrace", path]) runfiletest(["--traceconfig", path]) > runfiletest(["-v", path]) /builddir/build/BUILD/pytest-7.4.3/testing/test_config.py:979: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILD/pytest-7.4.3/testing/test_config.py:957: in runfiletest reprec = pytester.inline_run(*opts) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1137: in inline_run ret = main([str(x) for x in args], plugins=plugins) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:150: in main config = _prepareconfig(args, plugins) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:331: in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/helpconfig.py:104: in pytest_cmdline_parse config: Config = outcome.get_result() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:1075: in pytest_cmdline_parse self.parse(args) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:1425: in parse self._preparse(args, addopts=addopts) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:1327: in _preparse self.hook.pytest_load_initial_conftests( /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/capture.py:143: in pytest_load_initial_conftests pluginmanager.register(capman, "capturemanager") /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:491: in register ret: Optional[str] = super().register(plugin, name) /usr/lib/python3.12/site-packages/pluggy/_manager.py:156: in register hookimpl = HookImpl(plugin, plugin_name, method, hookimpl_opts) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:643: in __init__ argnames, kwargnames = varnames(self.function) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:302: in varnames sig = inspect.signature( /usr/lib64/python3.12/inspect.py:3327: in signature return Signature.from_callable(obj, follow_wrapped=follow_wrapped, /usr/lib64/python3.12/inspect.py:3071: in from_callable return _signature_from_callable(obj, sigcls=cls, /usr/lib64/python3.12/inspect.py:2559: in _signature_from_callable return _signature_from_function(sigcls, obj, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = skip_bound_arg = True, globals = None, locals = None, eval_str = False def _signature_from_function(cls, func, skip_bound_arg=True, globals=None, locals=None, eval_str=False): """Private helper: constructs Signature for the given python function.""" is_duck_function = False if not isfunction(func): if _signature_is_functionlike(func): is_duck_function = True else: # If it's not a pure Python function, and not a duck type # of pure function: raise TypeError('{!r} is not a Python function'.format(func)) s = getattr(func, "__text_signature__", None) if s: return _signature_fromstr(cls, func, s, skip_bound_arg) Parameter = cls._parameter_cls # Parameter information. func_code = func.__code__ pos_count = func_code.co_argcount arg_names = func_code.co_varnames posonly_count = func_code.co_posonlyargcount positional = arg_names[:pos_count] keyword_only_count = func_code.co_kwonlyargcount keyword_only = arg_names[pos_count:pos_count + keyword_only_count] annotations = get_annotations(func, globals=globals, locals=locals, eval_str=eval_str) defaults = func.__defaults__ kwdefaults = func.__kwdefaults__ if defaults: pos_default_count = len(defaults) else: pos_default_count = 0 parameters = [] non_default_count = pos_count - pos_default_count posonly_left = posonly_count # Non-keyword-only parameters w/o defaults. for name in positional[:non_default_count]: kind = _POSITIONAL_ONLY if posonly_left else _POSITIONAL_OR_KEYWORD > annotation = annotations.get(name, _empty) E Failed: Timeout >30.0s /usr/lib64/python3.12/inspect.py:2412: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 1.24s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 0.99s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 0.49s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 0.55s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ test_options_on_small_file_do_not_blow_up.py:1: in test_f1 def test_f1(): assert 0 E assert 0 ___________________________________ test_f2 ____________________________________ test_options_on_small_file_do_not_blow_up.py:2: in test_f2 def test_f2(): assert 0 E assert 0 =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 0.57s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 0.60s =============================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ cls = func = . at 0xffffff6e687a60> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: ihook(item=item, **kwds), when=when, reraise=reraise ) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:262: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kwargs = {'item': } firstresult = False def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff6e696c00> hook_name = 'pytest_runtest_call' methods = [>] kwargs = {'item': }, firstresult = False def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff6e687f60> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: raise exception.with_traceback(exception.__traceback__) else: return result # Slow path - need to support old-style wrappers. else: if firstresult: # first result hooks return a single value outcome: Result[object | list[object]] = Result( results[0] if results else None, exception ) else: outcome = Result(results, exception) # run all wrapper post-yield blocks for teardown in reversed(teardowns): if isinstance(teardown, tuple): try: teardown[0].send(outcome) _raise_wrapfail(teardown[0], "has second yield") except StopIteration: pass else: try: if outcome._exception is not None: teardown.throw(outcome._exception) else: teardown.send(outcome._result) # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() except StopIteration as si: outcome.force_result(si.value) continue except BaseException as e: outcome.force_exception(e) continue _raise_wrapfail(teardown, "has second yield") > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_callers.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: item.runtest() except Exception as e: # Store trace info to allow postmortem debugging sys.last_type = type(e) sys.last_value = e assert e.__traceback__ is not None # Skip *this* frame sys.last_traceback = e.__traceback__.tb_next > raise e /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: > item.runtest() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:169: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def runtest(self) -> None: """Execute the underlying test function.""" > self.ihook.pytest_pyfunc_call(pyfuncitem=self) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:1792: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'pyfuncitem': }, firstresult = True def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff6e696c00> hook_name = 'pytest_pyfunc_call' methods = [>] kwargs = {'pyfuncitem': }, firstresult = True def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff7f9c0040> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: > raise exception.with_traceback(exception.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_callers.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pyfuncitem = @hookimpl(trylast=True) def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: testfunction = pyfuncitem.obj if is_async_function(testfunction): async_warn_and_skip(pyfuncitem.nodeid) funcargs = pyfuncitem.funcargs testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} > result = testfunction(**testargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:194: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ cls = func = . at 0xffffff7f9c0a40> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: ihook(item=item, **kwds), when=when, reraise=reraise ) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:262: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , kwargs = {'item': } firstresult = False def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff6e696c00> hook_name = 'pytest_runtest_call' methods = [>] kwargs = {'item': }, firstresult = False def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff7f9c0fe0> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: raise exception.with_traceback(exception.__traceback__) else: return result # Slow path - need to support old-style wrappers. else: if firstresult: # first result hooks return a single value outcome: Result[object | list[object]] = Result( results[0] if results else None, exception ) else: outcome = Result(results, exception) # run all wrapper post-yield blocks for teardown in reversed(teardowns): if isinstance(teardown, tuple): try: teardown[0].send(outcome) _raise_wrapfail(teardown[0], "has second yield") except StopIteration: pass else: try: if outcome._exception is not None: teardown.throw(outcome._exception) else: teardown.send(outcome._result) # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() except StopIteration as si: outcome.force_result(si.value) continue except BaseException as e: outcome.force_exception(e) continue _raise_wrapfail(teardown, "has second yield") > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_callers.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: item.runtest() except Exception as e: # Store trace info to allow postmortem debugging sys.last_type = type(e) sys.last_value = e assert e.__traceback__ is not None # Skip *this* frame sys.last_traceback = e.__traceback__.tb_next > raise e /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: > item.runtest() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:169: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def runtest(self) -> None: """Execute the underlying test function.""" > self.ihook.pytest_pyfunc_call(pyfuncitem=self) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:1792: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'pyfuncitem': }, firstresult = True def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff6e696c00> hook_name = 'pytest_pyfunc_call' methods = [>] kwargs = {'pyfuncitem': }, firstresult = True def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff7f9c0400> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: > raise exception.with_traceback(exception.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_callers.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pyfuncitem = @hookimpl(trylast=True) def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: testfunction = pyfuncitem.obj if is_async_function(testfunction): async_warn_and_skip(pyfuncitem.nodeid) funcargs = pyfuncitem.funcargs testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} > result = testfunction(**testargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:194: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 11.86s ============================== PLUGIN registered: <_pytest.config.PytestPluginManager object at 0xffffff6e7123c0> PLUGIN registered: <_pytest.config.Config object at 0xffffff6e711610> PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: PLUGIN registered: <_pytest.pytester.Pytester.inline_run..Collect object at 0xffffff6e695010> PLUGIN registered: > err=> in_=> _state='suspended' _in_suspended=False> _capture_fixture=None> PLUGIN registered: testsfailed=0 testscollected=0> PLUGIN registered: <_pytest.cacheprovider.LFPlugin object at 0xffffff6e642960> PLUGIN registered: <_pytest.cacheprovider.NFPlugin object at 0xffffff84247590> PLUGIN registered: PLUGIN registered: <_pytest.terminal.TerminalReporter object at 0xffffff84194560> PLUGIN registered: <_pytest.logging.LoggingPlugin object at 0xffffff6e642660> PLUGIN registered: <_pytest.fixtures.FixtureManager object at 0xffffff6e6407a0> ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 using: pytest-7.4.3 active plugins: 72057591595869120 : <_pytest.config.PytestPluginManager object at 0xffffff6e7123c0> pytestconfig : <_pytest.config.Config object at 0xffffff6e711610> mark : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/mark/__init__.py main : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py runner : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py fixtures : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/fixtures.py helpconfig : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/helpconfig.py python : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py terminal : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/terminal.py debugging : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/debugging.py unittest : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/unittest.py capture : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/capture.py skipping : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/skipping.py legacypath : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/legacypath.py tmpdir : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/tmpdir.py monkeypatch : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/monkeypatch.py recwarn : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/recwarn.py pastebin : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pastebin.py nose : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/nose.py assertion : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/assertion/__init__.py junitxml : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/junitxml.py doctest : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/doctest.py cacheprovider : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/cacheprovider.py freeze_support : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/freeze_support.py setuponly : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/setuponly.py setupplan : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/setupplan.py stepwise : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/stepwise.py warnings : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/warnings.py logging : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/logging.py reports : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/reports.py python_path : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python_path.py unraisableexception : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/unraisableexception.py threadexception : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/threadexception.py faulthandler : /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/faulthandler.py 72057591595356176 : <_pytest.pytester.Pytester.inline_run..Collect object at 0xffffff6e695010> capturemanager : > err=> in_=> _state='suspended' _in_suspended=False> _capture_fixture=None> session : testsfailed=0 testscollected=0> lfplugin : <_pytest.cacheprovider.LFPlugin object at 0xffffff6e642960> nfplugin : <_pytest.cacheprovider.NFPlugin object at 0xffffff84247590> legacypath-tmpdir : terminalreporter : <_pytest.terminal.TerminalReporter object at 0xffffff84194560> logging-plugin : <_pytest.logging.LoggingPlugin object at 0xffffff6e642660> funcmanage : <_pytest.fixtures.FixtureManager object at 0xffffff6e6407a0> rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_options_on_small_file_do_not_blow_up0 collected 2 items test_options_on_small_file_do_not_blow_up.py FF [100%] =================================== FAILURES =================================== ___________________________________ test_f1 ____________________________________ > def test_f1(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:1: AssertionError ___________________________________ test_f2 ____________________________________ > def test_f2(): assert 0 E assert 0 test_options_on_small_file_do_not_blow_up.py:2: AssertionError =========================== short test summary info ============================ FAILED test_options_on_small_file_do_not_blow_up.py::test_f1 - assert 0 FAILED test_options_on_small_file_do_not_blow_up.py::test_f2 - assert 0 ============================== 2 failed in 1.21s =============================== ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592028852608) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _________________________ test_random_report_log_xdist _________________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff8679b050> run_and_parse = def test_random_report_log_xdist( pytester: Pytester, monkeypatch: MonkeyPatch, run_and_parse: RunAndParse ) -> None: """`xdist` calls pytest_runtest_logreport as they are executed by the workers, with nodes from several nodes overlapping, so junitxml must cope with that to produce correct reports (#1064).""" pytest.importorskip("xdist") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) pytester.makepyfile( """ import pytest, time @pytest.mark.parametrize('i', list(range(30))) def test_x(i): assert i != 22 """ ) _, dom = run_and_parse("-n2") suite_node = dom.find_first_by_tag("testsuite") failed = [] for case_node in suite_node.find_by_tag("testcase"): if case_node.find_first_by_tag("failure"): failed.append(case_node["name"]) > assert failed == ["test_x[22]"] E AssertionError: assert [] == ['test_x[22]'] E Right contains one more item: 'test_x[22]' E Use -v to get more diff /builddir/build/BUILD/pytest-7.4.3/testing/test_junitxml.py:1389: AssertionError ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_random_report_log_xdist0 plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 2/2 workers INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 29.36s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592016265600) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592007872896) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592150487424) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _______________ TestCollectonly.test_collect_only_summary_status _______________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_collect_only_summary_status(self, pytester: Pytester) -> None: """Custom status depending on test selection using -k or -m. #7701.""" pytester.makepyfile( test_collect_foo=""" def test_foo(): pass """, test_collect_bar=""" def test_foobar(): pass def test_bar(): pass """, ) result = pytester.runpytest("--collect-only") result.stdout.fnmatch_lines("*== 3 tests collected in * ==*") result = pytester.runpytest("--collect-only", "test_collect_foo.py") result.stdout.fnmatch_lines("*== 1 test collected in * ==*") result = pytester.runpytest("--collect-only", "-k", "foo") result.stdout.fnmatch_lines("*== 2/3 tests collected (1 deselected) in * ==*") result = pytester.runpytest("--collect-only", "-k", "test_bar") result.stdout.fnmatch_lines("*== 1/3 tests collected (2 deselected) in * ==*") result = pytester.runpytest("--collect-only", "-k", "invalid") result.stdout.fnmatch_lines("*== no tests collected (3 deselected) in * ==*") pytester.mkdir("no_tests_here") result = pytester.runpytest("--collect-only", "no_tests_here") result.stdout.fnmatch_lines("*== no tests collected in * ==*") pytester.makepyfile( test_contains_error=""" raise RuntimeError """, ) result = pytester.runpytest("--collect-only") result.stdout.fnmatch_lines("*== 3 tests collected, 1 error in * ==*") result = pytester.runpytest("--collect-only", "-k", "foo") > result.stdout.fnmatch_lines( "*== 2/3 tests collected (1 deselected), 1 error in * ==*" ) E Failed: nomatch: '*== 2/3 tests collected (1 deselected), 1 error in * ==*' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0' E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0' E and: 'collected 3 items' E and: '' E and: '' E and: ' ' E and: ' ' E and: '' E and: ' ' E and: 'INTERNALERROR> Traceback (most recent call last):' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session' E and: 'INTERNALERROR> session.exitstatus = doit(config, session) or 0' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 324, in _main' E and: 'INTERNALERROR> config.hook.pytest_collection(session=session)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 335, in pytest_collection' E and: 'INTERNALERROR> session.perform_collect()' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 675, in perform_collect' E and: 'INTERNALERROR> self.items.extend(self.genitems(node))' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 842, in genitems' E and: 'INTERNALERROR> rep = collect_one_node(node)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py", line 547, in collect_one_node' E and: 'INTERNALERROR> rep: CollectReport = ihook.pytest_make_collect_report(collector=collector)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 130, in _multicall' E and: 'INTERNALERROR> teardown[0].send(outcome)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/capture.py", line 859, in pytest_make_collect_report' E and: 'INTERNALERROR> rep = outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py", line 391, in pytest_make_collect_report' E and: 'INTERNALERROR> errorinfo = collector.repr_failure(call.excinfo)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/nodes.py", line 562, in repr_failure' E and: 'INTERNALERROR> return self._repr_failure_py(excinfo, style=tbstyle)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/nodes.py", line 486, in _repr_failure_py' E and: 'INTERNALERROR> return excinfo.getrepr(' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 701, in getrepr' E and: 'INTERNALERROR> return fmt.repr_excinfo(self)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 989, in repr_excinfo' E and: 'INTERNALERROR> reprtraceback = self.repr_traceback(excinfo_)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 914, in repr_traceback' E and: 'INTERNALERROR> self.repr_traceback_entry(entry, excinfo if last == entry else None)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 867, in repr_traceback_entry' E and: 'INTERNALERROR> path = self._makepath(entry_path)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 883, in _makepath' E and: 'INTERNALERROR> np = bestrelpath(Path.cwd(), path)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pathlib.py", line 769, in bestrelpath' E and: 'INTERNALERROR> reldirectory = directory.relative_to(base)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/pathlib.py", line 680, in relative_to' E and: 'INTERNALERROR> if self.is_relative_to(path):' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/pathlib.py", line 701, in is_relative_to' E and: 'INTERNALERROR> return other == self or other in self.parents' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "", line 1034, in __contains__' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler' E and: 'INTERNALERROR> timeout_sigalrm(item, settings)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm' E and: 'INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail' E and: 'INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace)' E and: 'INTERNALERROR> Failed: Timeout >30.0s' E and: '' E and: '========================== 3 tests collected in 3.51s ==========================' E remains unmatched: '*== 2/3 tests collected (1 deselected), 1 error in * ==*' /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:605: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items ========================== 3 tests collected in 0.11s ========================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 1 item ========================== 1 test collected in 0.19s =========================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items / 1 deselected / 2 selected ================= 2/3 tests collected (1 deselected) in 0.53s ================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items / 2 deselected / 1 selected ================= 1/3 tests collected (2 deselected) in 0.11s ================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items / 3 deselected / 0 selected ================== no tests collected (3 deselected) in 0.43s ================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 0 items ========================= no tests collected in 0.03s ========================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items / 1 error ==================================== ERRORS ==================================== ___________________ ERROR collecting test_contains_error.py ____________________ /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: in from_call result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:372: in call = CallInfo.from_call(lambda: list(collector.collect()), "collect") /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:531: in collect self._inject_setup_module_fixture() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:545: in _inject_setup_module_fixture self.obj, ("setUpModule", "setup_module") /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:310: in obj self._obj = obj = self._getobj() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:528: in _getobj return self._importtestmodule() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:617: in _importtestmodule mod = import_path(self.path, mode=importmode, root=self.config.rootpath) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pathlib.py:567: in import_path importlib.import_module(module_name) /usr/lib64/python3.12/importlib/__init__.py:90: in import_module return _bootstrap._gcd_import(name[level:], package, level) :1381: in _gcd_import ??? :1354: in _find_and_load ??? :1325: in _find_and_load_unlocked ??? :929: in _load_unlocked ??? /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:186: in exec_module exec(co, module.__dict__) test_contains_error.py:1: in raise RuntimeError E RuntimeError =========================== short test summary info ============================ ERROR test_contains_error.py - RuntimeError !!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!! ===================== 3 tests collected, 1 error in 11.39s ===================== ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_collect_only_summary_status0 collected 3 items INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 324, in _main INTERNALERROR> config.hook.pytest_collection(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 335, in pytest_collection INTERNALERROR> session.perform_collect() INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 675, in perform_collect INTERNALERROR> self.items.extend(self.genitems(node)) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 842, in genitems INTERNALERROR> rep = collect_one_node(node) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py", line 547, in collect_one_node INTERNALERROR> rep: CollectReport = ihook.pytest_make_collect_report(collector=collector) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 130, in _multicall INTERNALERROR> teardown[0].send(outcome) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/capture.py", line 859, in pytest_make_collect_report INTERNALERROR> rep = outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py", line 391, in pytest_make_collect_report INTERNALERROR> errorinfo = collector.repr_failure(call.excinfo) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/nodes.py", line 562, in repr_failure INTERNALERROR> return self._repr_failure_py(excinfo, style=tbstyle) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/nodes.py", line 486, in _repr_failure_py INTERNALERROR> return excinfo.getrepr( INTERNALERROR> ^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 701, in getrepr INTERNALERROR> return fmt.repr_excinfo(self) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 989, in repr_excinfo INTERNALERROR> reprtraceback = self.repr_traceback(excinfo_) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 914, in repr_traceback INTERNALERROR> self.repr_traceback_entry(entry, excinfo if last == entry else None) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 867, in repr_traceback_entry INTERNALERROR> path = self._makepath(entry_path) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py", line 883, in _makepath INTERNALERROR> np = bestrelpath(Path.cwd(), path) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pathlib.py", line 769, in bestrelpath INTERNALERROR> reldirectory = directory.relative_to(base) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/pathlib.py", line 680, in relative_to INTERNALERROR> if self.is_relative_to(path): INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/pathlib.py", line 701, in is_relative_to INTERNALERROR> return other == self or other in self.parents INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "", line 1034, in __contains__ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ========================== 3 tests collected in 3.51s ========================== ____________________________ test_resource_warning _____________________________ [gw5] linux -- Python 3.12.0 /usr/bin/python3 pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff9c9b4f80> def test_resource_warning(pytester: Pytester, monkeypatch: pytest.MonkeyPatch) -> None: # Some platforms (notably PyPy) don't have tracemalloc. # We choose to explicitly not skip this in case tracemalloc is not # available, using `importorskip("tracemalloc")` for example, # because we want to ensure the same code path does not break in those platforms. try: import tracemalloc # noqa has_tracemalloc = True except ImportError: has_tracemalloc = False # Explicitly disable PYTHONTRACEMALLOC in case pytest's test suite is running # with it enabled. monkeypatch.delenv("PYTHONTRACEMALLOC", raising=False) pytester.makepyfile( """ def open_file(p): f = p.open("r", encoding="utf-8") assert p.read_text() == "hello" def test_resource_warning(tmp_path): p = tmp_path.joinpath("foo.txt") p.write_text("hello", encoding="utf-8") open_file(p) """ ) result = pytester.run(sys.executable, "-Xdev", "-m", "pytest") expected_extra = ( [ "*ResourceWarning* unclosed file*", "*Enable tracemalloc to get traceback where the object was allocated*", "*See https* for more info.", ] if has_tracemalloc else [] ) result.stdout.fnmatch_lines([*expected_extra, "*1 passed*"]) monkeypatch.setenv("PYTHONTRACEMALLOC", "20") > result = pytester.run(sys.executable, "-Xdev", "-m", "pytest") /builddir/build/BUILD/pytest-7.4.3/testing/test_warnings.py:836: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -Xdev -m pytest in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_resource_warning0 ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_resource_warning0 collected 1 item test_resource_warning.py . [100%] =============================== warnings summary =============================== test_resource_warning.py::test_resource_warning /tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_resource_warning0/test_resource_warning.py:8: ResourceWarning: unclosed file <_io.TextIOWrapper name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw5/tmp-test_resource_warning0/pytest-of-mockbuild/pytest-0/test_resource_warning0/foo.txt' mode='r' encoding='utf-8'> open_file(p) Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ========================= 1 passed, 1 warning in 1.08s ========================= running: /usr/bin/python3 -Xdev -m pytest in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_resource_warning0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592427143552) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _____________ TestTerminalFunctional.test_verbose_reporting_xdist ______________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = verbose_testfile = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_verbose_reporting_xdist0/test_verbose_reporting_xdist.py') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff8c10c3e0> pytester = pytestconfig = <_pytest.config.Config object at 0xffffff8ec6e240> def test_verbose_reporting_xdist( self, verbose_testfile, monkeypatch: MonkeyPatch, pytester: Pytester, pytestconfig, ) -> None: if not pytestconfig.pluginmanager.get_plugin("xdist"): pytest.skip("xdist plugin not installed") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD") result = pytester.runpytest( verbose_testfile, "-v", "-n 1", "-Walways::pytest.PytestWarning" ) > result.stdout.fnmatch_lines( ["*FAIL*test_verbose_reporting_xdist.py::test_fail*"] ) E Failed: nomatch: '*FAIL*test_verbose_reporting_xdist.py::test_fail*' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 -- /usr/bin/python3' E and: 'cachedir: .pytest_cache' E and: "hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/builddir/build/BUILD/pytest-7.4.3/.hypothesis/examples')" E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_verbose_reporting_xdist0' E and: 'plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0' E and: 'created: 1/1 worker' E and: 'INTERNALERROR> Traceback (most recent call last):' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session' E and: 'INTERNALERROR> session.exitstatus = doit(config, session) or 0' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main' E and: 'INTERNALERROR> config.hook.pytest_runtestloop(session=session)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop' E and: 'INTERNALERROR> self.loop_once()' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once' E and: 'INTERNALERROR> eventcall = self.queue.get(timeout=2.0)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get' E and: 'INTERNALERROR> self.not_empty.wait(remaining)' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait' E and: 'INTERNALERROR> gotit = waiter.acquire(True, timeout)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler' E and: 'INTERNALERROR> timeout_sigalrm(item, settings)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm' E and: 'INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail' E and: 'INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace)' E and: 'INTERNALERROR> Failed: Timeout >30.0s' E and: '' E and: '============================ no tests ran in 33.62s ============================' E remains unmatched: '*FAIL*test_verbose_reporting_xdist.py::test_fail*' /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:1087: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 -- /usr/bin/python3 cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/builddir/build/BUILD/pytest-7.4.3/.hypothesis/examples') rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_verbose_reporting_xdist0 plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 1/1 worker INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 33.62s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591987945856) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592150487424) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ TestProgressOutputStyle.test_xdist_normal ___________________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = many_tests_files = None pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff806a3f20> def test_xdist_normal( self, many_tests_files, pytester: Pytester, monkeypatch ) -> None: pytest.importorskip("xdist") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) output = pytester.runpytest("-n2") > output.stdout.re_match_lines([r"\.{20} \s+ \[100%\]"]) E Failed: nomatch: '\\.{20} \\s+ \\[100%\\]' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0' E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal0' E and: 'plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0' E and: 'created: 2/2 workers' E and: 'INTERNALERROR> Traceback (most recent call last):' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session' E and: 'INTERNALERROR> session.exitstatus = doit(config, session) or 0' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main' E and: 'INTERNALERROR> config.hook.pytest_runtestloop(session=session)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop' E and: 'INTERNALERROR> self.loop_once()' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once' E and: 'INTERNALERROR> eventcall = self.queue.get(timeout=2.0)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get' E and: 'INTERNALERROR> self.not_empty.wait(remaining)' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait' E and: 'INTERNALERROR> gotit = waiter.acquire(True, timeout)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler' E and: 'INTERNALERROR> timeout_sigalrm(item, settings)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm' E and: 'INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail' E and: 'INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace)' E and: 'INTERNALERROR> Failed: Timeout >30.0s' E and: '' E and: '============================ no tests ran in 37.07s ============================' E remains unmatched: '\\.{20} \\s+ \\[100%\\]' /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:2178: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal0 plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 2/2 workers INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 37.07s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591812841856) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591821234560) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _______________ TestProgressOutputStyle.test_xdist_normal_count ________________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = many_tests_files = None pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff803ca8a0> def test_xdist_normal_count( self, many_tests_files, pytester: Pytester, monkeypatch ) -> None: pytest.importorskip("xdist") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) pytester.makeini( """ [pytest] console_output_style = count """ ) output = pytester.runpytest("-n2") > output.stdout.re_match_lines([r"\.{20} \s+ \[20/20\]"]) E Failed: nomatch: '\\.{20} \\s+ \\[20/20\\]' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0' E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal_count0' E and: 'configfile: tox.ini' E and: 'plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0' E and: 'created: 2/2 workers' E and: 'INTERNALERROR> Traceback (most recent call last):' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session' E and: 'INTERNALERROR> session.exitstatus = doit(config, session) or 0' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main' E and: 'INTERNALERROR> config.hook.pytest_runtestloop(session=session)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop' E and: 'INTERNALERROR> self.loop_once()' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once' E and: 'INTERNALERROR> eventcall = self.queue.get(timeout=2.0)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get' E and: 'INTERNALERROR> self.not_empty.wait(remaining)' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait' E and: 'INTERNALERROR> gotit = waiter.acquire(True, timeout)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler' E and: 'INTERNALERROR> timeout_sigalrm(item, settings)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm' E and: 'INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail' E and: 'INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace)' E and: 'INTERNALERROR> Failed: Timeout >30.0s' E and: '' E and: '============================ no tests ran in 34.78s ============================' E remains unmatched: '\\.{20} \\s+ \\[20/20\\]' /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:2192: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal_count0 configfile: tox.ini plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 2/2 workers INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 34.78s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591812841856) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591779271040) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ test_package_collection_infinite_recursion __________________ [gw5] linux -- Python 3.12.0 /usr/bin/python3 cls = func = . at 0xffffff9c264b80> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:262: in lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/unraisableexception.py:88: in pytest_runtest_call yield from unraisable_exception_runtest_hook() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def unraisable_exception_runtest_hook() -> Generator[None, None, None]: with catch_unraisable_exception() as cm: yield if cm.unraisable: if cm.unraisable.err_msg is not None: err_msg = cm.unraisable.err_msg else: err_msg = "Exception ignored in" msg = f"{err_msg}: {cm.unraisable.object!r}\n\n" msg += "".join( traceback.format_exception( cm.unraisable.exc_type, cm.unraisable.exc_value, cm.unraisable.exc_traceback, ) ) > warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) E pytest.PytestUnraisableExceptionWarning: Exception ignored in: E E Traceback (most recent call last): E File "/usr/lib64/python3.12/subprocess.py", line 1127, in __del__ E _warn("subprocess %s is still running" % self.pid, E ResourceWarning: subprocess 1915093 is still running /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/unraisableexception.py:78: PytestUnraisableExceptionWarning ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_package_collection_infinite_recursion0 collected 1 item tests/test_basic.py . [100%] ============================== 1 passed in 3.23s =============================== __________________ TestProgressOutputStyle.test_xdist_verbose __________________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = many_tests_files = None pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff80cbc620> def test_xdist_verbose( self, many_tests_files, pytester: Pytester, monkeypatch ) -> None: pytest.importorskip("xdist") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) output = pytester.runpytest("-n2", "-v") > output.stdout.re_match_lines_random( [ r"\[gw\d\] \[\s*\d+%\] PASSED test_bar.py::test_bar\[1\]", r"\[gw\d\] \[\s*\d+%\] PASSED test_foo.py::test_foo\[1\]", r"\[gw\d\] \[\s*\d+%\] PASSED test_foobar.py::test_foobar\[1\]", ] ) E Failed: line '\\[gw\\d\\] \\[\\s*\\d+%\\] PASSED test_bar.py::test_bar\\[1\\]' not found in output /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:2200: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 -- /usr/bin/python3 cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/builddir/build/BUILD/pytest-7.4.3/.hypothesis/examples') rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_verbose0 plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 2/2 workers INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 35.92s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591812841856) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591821234560) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ______________ TestTerminal.test_keyboard_interrupt[--fulltrace] _______________ [gw1] linux -- Python 3.12.0 /usr/bin/python3 def test_interrupt_me(): > raise KeyboardInterrupt # simulating the user E KeyboardInterrupt /tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_keyboard_interrupt1/test_keyboard_interrupt.py:6: KeyboardInterrupt During handling of the above exception, another exception occurred: self = pytester = fulltrace = '--fulltrace' @pytest.mark.parametrize("fulltrace", ("", "--fulltrace")) def test_keyboard_interrupt(self, pytester: Pytester, fulltrace) -> None: pytester.makepyfile( """ def test_foobar(): assert 0 def test_spamegg(): import py; pytest.skip('skip me please!') def test_interrupt_me(): raise KeyboardInterrupt # simulating the user """ ) > result = pytester.runpytest(fulltrace, no_reraise_ctrlc=True) /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:268: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1209: in runpytest return self.runpytest_inprocess(*new_args, **kwargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1172: in runpytest_inprocess reprec = self.inline_run(*args, **kwargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pytester.py:1137: in inline_run ret = main([str(x) for x in args], plugins=plugins) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/config/__init__.py:169: in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py:318: in pytest_cmdline_main return wrap_session(config, _main) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py:285: in wrap_session config.hook.pytest_keyboard_interrupt(excinfo=excinfo) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: in __call__ return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: in traced_hookexec return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: in lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/terminal.py:891: in pytest_keyboard_interrupt self._keyboardinterrupt_memo = excinfo.getrepr(funcargs=True) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:701: in getrepr return fmt.repr_excinfo(self) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:989: in repr_excinfo reprtraceback = self.repr_traceback(excinfo_) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:914: in repr_traceback self.repr_traceback_entry(entry, excinfo if last == entry else None) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:852: in repr_traceback_entry source = self._getentrysource(entry) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:754: in _getentrysource source = entry.getsource(self.astcache) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/code.py:262: in getsource astnode, _, end = getstatementrange_ast( /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/source.py:187: in getstatementrange_ast start, end = get_statement_startend2(lineno, astnode) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/_code/source.py:150: in get_statement_startend2 for x in ast.walk(node): /usr/lib64/python3.12/ast.py:379: in walk todo.extend(iter_child_nodes(node)) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ node = > def iter_child_nodes(node): E Failed: Timeout >30.0s /usr/lib64/python3.12/ast.py:269: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_keyboard_interrupt1 collected 3 items test_keyboard_interrupt.py FF =================================== FAILURES =================================== _________________________________ test_foobar __________________________________ cls = func = . at 0xffffff9bfc9260> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: ihook(item=item, **kwds), when=when, reraise=reraise ) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:262: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'item': }, firstresult = False def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff9be1a960> hook_name = 'pytest_runtest_call' methods = [>] kwargs = {'item': }, firstresult = False def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff9bfc98a0> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: raise exception.with_traceback(exception.__traceback__) else: return result # Slow path - need to support old-style wrappers. else: if firstresult: # first result hooks return a single value outcome: Result[object | list[object]] = Result( results[0] if results else None, exception ) else: outcome = Result(results, exception) # run all wrapper post-yield blocks for teardown in reversed(teardowns): if isinstance(teardown, tuple): try: teardown[0].send(outcome) _raise_wrapfail(teardown[0], "has second yield") except StopIteration: pass else: try: if outcome._exception is not None: teardown.throw(outcome._exception) else: teardown.send(outcome._result) # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() except StopIteration as si: outcome.force_result(si.value) continue except BaseException as e: outcome.force_exception(e) continue _raise_wrapfail(teardown, "has second yield") > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_callers.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: item.runtest() except Exception as e: # Store trace info to allow postmortem debugging sys.last_type = type(e) sys.last_value = e assert e.__traceback__ is not None # Skip *this* frame sys.last_traceback = e.__traceback__.tb_next > raise e /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: > item.runtest() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:169: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def runtest(self) -> None: """Execute the underlying test function.""" > self.ihook.pytest_pyfunc_call(pyfuncitem=self) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:1792: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'pyfuncitem': }, firstresult = True def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff9be1a960> hook_name = 'pytest_pyfunc_call' methods = [>] kwargs = {'pyfuncitem': }, firstresult = True def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff9bfca980> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: > raise exception.with_traceback(exception.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_callers.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pyfuncitem = @hookimpl(trylast=True) def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: testfunction = pyfuncitem.obj if is_async_function(testfunction): async_warn_and_skip(pyfuncitem.nodeid) funcargs = pyfuncitem.funcargs testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} > result = testfunction(**testargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:194: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def test_foobar(): > assert 0 E assert 0 test_keyboard_interrupt.py:2: AssertionError _________________________________ test_spamegg _________________________________ cls = func = . at 0xffffff9bfc82c0> when = 'call' reraise = (, ) @classmethod def from_call( cls, func: "Callable[[], TResult]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: Optional[ Union[Type[BaseException], Tuple[Type[BaseException], ...]] ] = None, ) -> "CallInfo[TResult]": """Call func, wrapping the result in a CallInfo. :param func: The function to call. Called without arguments. :param when: The phase in which the function is called. :param reraise: Exception or exceptions that shall propagate if raised by the function, instead of being wrapped in the CallInfo. """ excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result: Optional[TResult] = func() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:341: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: ihook(item=item, **kwds), when=when, reraise=reraise ) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:262: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'item': }, firstresult = False def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff9be1a960> hook_name = 'pytest_runtest_call' methods = [>] kwargs = {'item': }, firstresult = False def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff9a578720> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: raise exception.with_traceback(exception.__traceback__) else: return result # Slow path - need to support old-style wrappers. else: if firstresult: # first result hooks return a single value outcome: Result[object | list[object]] = Result( results[0] if results else None, exception ) else: outcome = Result(results, exception) # run all wrapper post-yield blocks for teardown in reversed(teardowns): if isinstance(teardown, tuple): try: teardown[0].send(outcome) _raise_wrapfail(teardown[0], "has second yield") except StopIteration: pass else: try: if outcome._exception is not None: teardown.throw(outcome._exception) else: teardown.send(outcome._result) # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() except StopIteration as si: outcome.force_result(si.value) continue except BaseException as e: outcome.force_exception(e) continue _raise_wrapfail(teardown, "has second yield") > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_callers.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_runtest_call' hook_impls = [>] caller_kwargs = {'item': }, firstresult = False def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: item.runtest() except Exception as e: # Store trace info to allow postmortem debugging sys.last_type = type(e) sys.last_value = e assert e.__traceback__ is not None # Skip *this* frame sys.last_traceback = e.__traceback__.tb_next > raise e /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:177: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = def pytest_runtest_call(item: Item) -> None: _update_current_test_var(item, "call") try: del sys.last_type del sys.last_value del sys.last_traceback except AttributeError: pass try: > item.runtest() /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/runner.py:169: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def runtest(self) -> None: """Execute the underlying test function.""" > self.ihook.pytest_pyfunc_call(pyfuncitem=self) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:1792: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = kwargs = {'pyfuncitem': }, firstresult = True def __call__(self, **kwargs: object) -> Any: """Call the hook. Only accepts keyword arguments, which should match the hook specification. Returns the result(s) of calling all registered plugins, see :ref:`calling`. """ assert ( not self.is_historic() ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False > return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_hooks.py:493: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0xffffff9be1a960> hook_name = 'pytest_pyfunc_call' methods = [>] kwargs = {'pyfuncitem': }, firstresult = True def _hookexec( self, hook_name: str, methods: Sequence[HookImpl], kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook_name, methods, kwargs, firstresult) /usr/lib/python3.12/site-packages/pluggy/_manager.py:115: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def traced_hookexec( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: before(hook_name, hook_impls, caller_kwargs) outcome = Result.from_call( lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) after(outcome, hook_name, hook_impls, caller_kwargs) > return outcome.get_result() /usr/lib/python3.12/site-packages/pluggy/_manager.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def get_result(self) -> ResultType: """Get the result(s) for this hook call. If the hook was marked as a ``firstresult`` only a single value will be returned, otherwise a list of results. """ __tracebackhide__ = True exc = self._exception if exc is None: return cast(ResultType, self._result) else: > raise exc.with_traceback(exc.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_result.py:114: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = func = .traced_hookexec.. at 0xffffff9a578860> @classmethod def from_call(cls, func: Callable[[], ResultType]) -> Result[ResultType]: """:meta private:""" __tracebackhide__ = True result = exception = None try: > result = func() /usr/lib/python3.12/site-packages/pluggy/_result.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) ) /usr/lib/python3.12/site-packages/pluggy/_manager.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: res = hook_impl.function(*args) if res is not None: results.append(res) if firstresult: # halt further impl calls break except BaseException as exc: exception = exc finally: # Fast path - only new-style wrappers, no Result. if only_new_style_wrappers: if firstresult: # first result hooks return a single value result = results[0] if results else None else: result = results # run all wrapper post-yield blocks for teardown in reversed(teardowns): try: if exception is not None: teardown.throw(exception) # type: ignore[union-attr] else: teardown.send(result) # type: ignore[union-attr] # Following is unreachable for a well behaved hook wrapper. # Try to force finalizers otherwise postponed till GC action. # Note: close() may raise if generator handles GeneratorExit. teardown.close() # type: ignore[union-attr] except StopIteration as si: result = si.value exception = None continue except BaseException as e: exception = e continue _raise_wrapfail(teardown, "has second yield") # type: ignore[arg-type] if exception is not None: > raise exception.with_traceback(exception.__traceback__) /usr/lib/python3.12/site-packages/pluggy/_callers.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook_name = 'pytest_pyfunc_call' hook_impls = [>] caller_kwargs = {'pyfuncitem': }, firstresult = True def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], caller_kwargs: Mapping[str, object], firstresult: bool, ) -> object | list[object]: """Execute a call into multiple python functions/methods and return the result(s). ``caller_kwargs`` comes from HookCaller.__call__(). """ __tracebackhide__ = True results: list[object] = [] exception = None only_new_style_wrappers = True try: # run impl and wrapper setup functions in a loop teardowns: list[Teardown] = [] try: for hook_impl in reversed(hook_impls): try: args = [caller_kwargs[argname] for argname in hook_impl.argnames] except KeyError: for argname in hook_impl.argnames: if argname not in caller_kwargs: raise HookCallError( f"hook call must provide argument {argname!r}" ) if hook_impl.hookwrapper: only_new_style_wrappers = False try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield teardowns.append((wrapper_gen,)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: try: # If this cast is not valid, a type error is raised below, # which is the desired response. res = hook_impl.function(*args) function_gen = cast(Generator[None, object, object], res) next(function_gen) # first yield teardowns.append(function_gen) except StopIteration: _raise_wrapfail(function_gen, "did not yield") else: > res = hook_impl.function(*args) /usr/lib/python3.12/site-packages/pluggy/_callers.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pyfuncitem = @hookimpl(trylast=True) def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: testfunction = pyfuncitem.obj if is_async_function(testfunction): async_warn_and_skip(pyfuncitem.nodeid) funcargs = pyfuncitem.funcargs testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} > result = testfunction(**testargs) /builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/python.py:194: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def test_spamegg(): > import py; pytest.skip('skip me please!') E NameError: name 'pytest' is not defined test_keyboard_interrupt.py:4: NameError =========================== short test summary info ============================ FAILED test_keyboard_interrupt.py::test_foobar - assert 0 FAILED test_keyboard_interrupt.py::test_spamegg - NameError: name 'pytest' is... ============================== 2 failed in 27.35s ============================== ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592486031744) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ TestProgressWithTeardown.test_xdist_normal __________________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = many_files = None pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff8067fcb0> def test_xdist_normal(self, many_files, pytester: Pytester, monkeypatch) -> None: pytest.importorskip("xdist") monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) output = pytester.runpytest("-n2") > output.stdout.re_match_lines([r"[\.E]{40} \s+ \[100%\]"]) E Failed: nomatch: '[\\.E]{40} \\s+ \\[100%\\]' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0' E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal1' E and: 'plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0' E and: 'created: 2/2 workers' E and: '2 workers [20 items]' E and: '' E and: 'INTERNALERROR> Traceback (most recent call last):' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session' E and: 'INTERNALERROR> session.exitstatus = doit(config, session) or 0' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main' E and: 'INTERNALERROR> config.hook.pytest_runtestloop(session=session)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__' E and: 'INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec' E and: 'INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call' E and: 'INTERNALERROR> result = func()' E and: 'INTERNALERROR> ^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in ' E and: 'INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall' E and: 'INTERNALERROR> return outcome.get_result()' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result' E and: 'INTERNALERROR> raise exc.with_traceback(exc.__traceback__)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall' E and: 'INTERNALERROR> res = hook_impl.function(*args)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop' E and: 'INTERNALERROR> self.loop_once()' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once' E and: 'INTERNALERROR> eventcall = self.queue.get(timeout=2.0)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get' E and: 'INTERNALERROR> self.not_empty.wait(remaining)' E and: 'INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait' E and: 'INTERNALERROR> gotit = waiter.acquire(True, timeout)' E and: 'INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler' E and: 'INTERNALERROR> timeout_sigalrm(item, settings)' E and: 'INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm' E and: 'INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout)' E and: 'INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail' E and: 'INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace)' E and: 'INTERNALERROR> Failed: Timeout >30.0s' E and: '' E and: '============================ no tests ran in 30.59s ============================' E remains unmatched: '[\\.E]{40} \\s+ \\[100%\\]' /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:2342: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_xdist_normal1 plugins: xdist-3.5.0, timeout-2.2.0, hypothesis-6.82.0 created: 2/2 workers 2 workers [20 items] INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 271, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/main.py", line 325, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 493, in __call__ INTERNALERROR> return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 115, in _hookexec INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 457, in traced_hookexec INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 76, in from_call INTERNALERROR> result = func() INTERNALERROR> ^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 454, in INTERNALERROR> lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_result.py", line 114, in get_result INTERNALERROR> raise exc.with_traceback(exc.__traceback__) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 77, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 123, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/usr/lib/python3.12/site-packages/xdist/dsession.py", line 139, in loop_once INTERNALERROR> eventcall = self.queue.get(timeout=2.0) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib64/python3.12/queue.py", line 180, in get INTERNALERROR> self.not_empty.wait(remaining) INTERNALERROR> File "/usr/lib64/python3.12/threading.py", line 338, in wait INTERNALERROR> gotit = waiter.acquire(True, timeout) INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 264, in handler INTERNALERROR> timeout_sigalrm(item, settings) INTERNALERROR> File "/usr/lib/python3.12/site-packages/pytest_timeout.py", line 448, in timeout_sigalrm INTERNALERROR> pytest.fail("Timeout >%ss" % settings.timeout) INTERNALERROR> File "/builddir/build/BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/outcomes.py", line 198, in fail INTERNALERROR> raise Failed(msg=reason, pytrace=pytrace) INTERNALERROR> Failed: Timeout >30.0s ============================ no tests ran in 30.59s ============================ ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591812841856) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591779271040) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) __________________ TestPDB.test_pdb_print_captured_logs[log] ___________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = showcapture = 'log' @pytest.mark.parametrize("showcapture", ["all", "no", "log"]) def test_pdb_print_captured_logs(self, pytester, showcapture: str) -> None: p1 = pytester.makepyfile( """ def test_1(): import logging logging.warning("get " + "rekt") assert False """ ) child = pytester.spawn_pytest(f"--show-capture={showcapture} --pdb {p1}") if showcapture in ("all", "log"): > child.expect("captured log") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:272: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs0/temp-pexpect', '--show-capture=log', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs0/test_pdb_print_captured_logs.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915170 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'captured log') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _______ TestLoggingInteraction.test_logging_and_immediate_setupteardown ________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_logging_and_immediate_setupteardown(self, pytester: Pytester) -> None: p = pytester.makepyfile( """\ import logging def setup_function(function): logging.warning("hello1") def test_logging(): logging.warning("hello2") assert 0 def teardown_function(function): logging.warning("hello3") assert 0 """ ) for optargs in (("--capture=sys",), ("--capture=fd",)): print(optargs) > result = pytester.runpytest_subprocess(p, *optargs) /builddir/build/BUILD/pytest-7.4.3/testing/test_capture.py:326: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- ('--capture=sys',) running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0/runpytest-0 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0/test_logging_and_immediate_setupteardown.py --capture=sys in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0 ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0 collected 1 item test_logging_and_immediate_setupteardown.py FE [100%] ==================================== ERRORS ==================================== ______________________ ERROR at teardown of test_logging _______________________ function = def teardown_function(function): logging.warning("hello3") > assert 0 E assert 0 test_logging_and_immediate_setupteardown.py:11: AssertionError ------------------------------ Captured log setup ------------------------------ WARNING root:test_logging_and_immediate_setupteardown.py:3 hello1 ------------------------------ Captured log call ------------------------------- WARNING root:test_logging_and_immediate_setupteardown.py:6 hello2 ---------------------------- Captured log teardown ----------------------------- WARNING root:test_logging_and_immediate_setupteardown.py:10 hello3 =================================== FAILURES =================================== _________________________________ test_logging _________________________________ def test_logging(): logging.warning("hello2") > assert 0 E assert 0 test_logging_and_immediate_setupteardown.py:7: AssertionError ------------------------------ Captured log setup ------------------------------ WARNING root:test_logging_and_immediate_setupteardown.py:3 hello1 ------------------------------ Captured log call ------------------------------- WARNING root:test_logging_and_immediate_setupteardown.py:6 hello2 =========================== short test summary info ============================ FAILED test_logging_and_immediate_setupteardown.py::test_logging - assert 0 ERROR test_logging_and_immediate_setupteardown.py::test_logging - assert 0 ========================== 1 failed, 1 error in 2.44s ========================== ('--capture=fd',) running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0/runpytest-1 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0/test_logging_and_immediate_setupteardown.py --capture=fd in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_immediate_setupteardown0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ________________ TestPDB.test_pdb_print_captured_logs_nologging ________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_print_captured_logs_nologging(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def test_1(): import logging logging.warning("get " + "rekt") assert False """ ) child = pytester.spawn_pytest("--show-capture=all --pdb -p no:logging %s" % p1) > child.expect("get rekt") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:290: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs_nologging0/temp-pexpect', '--show-capture=all', '--pdb', '-p', 'no:logging', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs_nologging0/test_pdb_print_captured_logs_nologging.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915178 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_print_captured_logs_nologging0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'get rekt') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ____________________ TestPDB.test_pdb_interaction_exception ____________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_interaction_exception(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest def globalfunc(): pass def test_1(): pytest.raises(ValueError, globalfunc) """ ) child = pytester.spawn_pytest("--pdb %s" % p1) > child.expect(".*def test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:310: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_exception0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_exception0/test_pdb_interaction_exception.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915186 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_exception0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'.*def test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________________ TestPDB.test_pdb_unittest_postmortem _____________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_unittest_postmortem(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import unittest class Blub(unittest.TestCase): def tearDown(self): self.filename = None def test_false(self): self.filename = 'debug' + '.me' assert 0 """ ) child = pytester.spawn_pytest(f"--pdb {p1}") > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_postmortem0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_postmortem0/test_pdb_unittest_postmortem.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915187 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_postmortem0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________ TestPDB.test_pdb_interaction_on_collection_issue181 ______________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_interaction_on_collection_issue181(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest xxx """ ) child = pytester.spawn_pytest("--pdb %s" % p1) # child.expect(".*import pytest.*") > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:328: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_collection_issue1810/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_collection_issue1810/test_pdb_interaction_on_collection_issue181.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915191 E child_fd: 19 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_collection_issue1810/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _________ TestLoggingInteraction.test_logging_and_crossscope_fixtures __________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_logging_and_crossscope_fixtures(self, pytester: Pytester) -> None: p = pytester.makepyfile( """\ import logging def setup_module(function): logging.warning("hello1") def test_logging(): logging.warning("hello2") assert 0 def teardown_module(function): logging.warning("hello3") assert 0 """ ) for optargs in (("--capture=sys",), ("--capture=fd",)): print(optargs) > result = pytester.runpytest_subprocess(p, *optargs) /builddir/build/BUILD/pytest-7.4.3/testing/test_capture.py:352: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- ('--capture=sys',) running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0/runpytest-0 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0/test_logging_and_crossscope_fixtures.py --capture=sys in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0 ============================= test session starts ============================== platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0 rootdir: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0 collected 1 item test_logging_and_crossscope_fixtures.py FE [100%] ==================================== ERRORS ==================================== ______________________ ERROR at teardown of test_logging _______________________ function = def teardown_module(function): logging.warning("hello3") > assert 0 E assert 0 test_logging_and_crossscope_fixtures.py:11: AssertionError ------------------------------ Captured log setup ------------------------------ WARNING root:test_logging_and_crossscope_fixtures.py:3 hello1 ------------------------------ Captured log call ------------------------------- WARNING root:test_logging_and_crossscope_fixtures.py:6 hello2 ---------------------------- Captured log teardown ----------------------------- WARNING root:test_logging_and_crossscope_fixtures.py:10 hello3 =================================== FAILURES =================================== _________________________________ test_logging _________________________________ def test_logging(): logging.warning("hello2") > assert 0 E assert 0 test_logging_and_crossscope_fixtures.py:7: AssertionError ------------------------------ Captured log setup ------------------------------ WARNING root:test_logging_and_crossscope_fixtures.py:3 hello1 ------------------------------ Captured log call ------------------------------- WARNING root:test_logging_and_crossscope_fixtures.py:6 hello2 =========================== short test summary info ============================ FAILED test_logging_and_crossscope_fixtures.py::test_logging - assert 0 ERROR test_logging_and_crossscope_fixtures.py::test_logging - assert 0 ========================== 1 failed, 1 error in 2.57s ========================== ('--capture=fd',) running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0/runpytest-1 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0/test_logging_and_crossscope_fixtures.py --capture=fd in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_and_crossscope_fixtures0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ________________________ TestPDB.test_pdb_unittest_skip ________________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_unittest_skip(self, pytester: Pytester) -> None: """Test for issue #2137""" p1 = pytester.makepyfile( """ import unittest @unittest.skipIf(True, 'Skipping also with pdb active') class MyTestCase(unittest.TestCase): def test_one(self): assert 0 """ ) child = pytester.spawn_pytest(f"-rs --pdb {p1}") > child.expect("Skipping also with pdb active") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:209: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_skip0/temp-pexpect', '-rs', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_skip0/test_pdb_unittest_skip.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915193 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_unittest_skip0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Skipping also with pdb active') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ________________ TestPDB.test_pdb_interaction_on_internal_error ________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_interaction_on_internal_error(self, pytester: Pytester) -> None: pytester.makeconftest( """ def pytest_runtest_protocol(): 0/0 """ ) p1 = pytester.makepyfile("def test_func(): pass") child = pytester.spawn_pytest("--pdb %s" % p1) > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:342: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_internal_error0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_internal_error0/test_pdb_interaction_on_internal_error.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915198 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_interaction_on_internal_error0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ______________ TestPDB.test_pdb_print_captured_stdout_and_stderr _______________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_print_captured_stdout_and_stderr(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def test_1(): import sys sys.stderr.write("get\\x20rekt") print("get\\x20rekt") assert False def test_not_called_due_to_quit(): pass """ ) child = pytester.spawn_pytest("--pdb %s" % p1) > child.expect("captured stdout") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:228: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_stdout_and_stderr0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_stdout_and_stderr0/test_pdb_print_captured_stdout_and_stderr.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915200 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_stdout_and_stderr0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'captured stdout') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________________ TestRewriteOnImport.test_pyc_vs_pyo ______________________ [gw4] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff8aaa4380> @pytest.mark.skipif('"__pypy__" in sys.modules') def test_pyc_vs_pyo(self, pytester: Pytester, monkeypatch) -> None: pytester.makepyfile( """ import pytest def test_optimized(): "hello" assert test_optimized.__doc__ is None""" ) p = make_numbered_dir(root=Path(pytester.path), prefix="runpytest-") tmp = "--basetemp=%s" % p monkeypatch.setenv("PYTHONOPTIMIZE", "2") monkeypatch.delenv("PYTHONDONTWRITEBYTECODE", raising=False) monkeypatch.delenv("PYTHONPYCACHEPREFIX", raising=False) > assert pytester.runpytest_subprocess(tmp).ret == 0 /builddir/build/BUILD/pytest-7.4.3/testing/test_assertrewrite.py:893: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_pyc_vs_pyo0/runpytest-1 --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_pyc_vs_pyo0/runpytest-0 in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_pyc_vs_pyo0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592502808960) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _________ TestPDB.test_pdb_dont_print_empty_captured_stdout_and_stderr _________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_dont_print_empty_captured_stdout_and_stderr( self, pytester: Pytester ) -> None: p1 = pytester.makepyfile( """ def test_1(): assert False """ ) child = pytester.spawn_pytest("--pdb %s" % p1) > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_dont_print_empty_captured_stdout_and_stderr0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_dont_print_empty_captured_stdout_and_stderr0/test_pdb_dont_print_empty_captured_stdout_and_stderr.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915208 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_dont_print_empty_captured_stdout_and_stderr0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _______ TestPDB.test_pdb_prevent_ConftestImportFailure_hiding_exception ________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_prevent_ConftestImportFailure_hiding_exception( self, pytester: Pytester ) -> None: pytester.makepyfile("def test_func(): pass") sub_dir = pytester.path.joinpath("ns") sub_dir.mkdir() sub_dir.joinpath("conftest").with_suffix(".py").write_text( "import unknown", "utf-8" ) sub_dir.joinpath("test_file").with_suffix(".py").write_text( "def test_func(): pass", "utf-8" ) > result = pytester.runpytest_subprocess("--pdb", ".") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:372: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_prevent_ConftestImportFailure_hiding_exception0/runpytest-0 --pdb . in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_prevent_ConftestImportFailure_hiding_exception0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592150487424) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ______________________ TestPDB.test_pdb_set_trace_kwargs _______________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_set_trace_kwargs(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest def test_1(): i = 0 print("hello17") pytest.set_trace(header="== my_header ==") x = 3 assert 0 """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("== my_header ==") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:413: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_kwargs0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_kwargs0/test_pdb_set_trace_kwargs.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915212 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_kwargs0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'== my_header ==') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT __________________ TestPDB.test_pdb_print_captured_logs[all] ___________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = showcapture = 'all' @pytest.mark.parametrize("showcapture", ["all", "no", "log"]) def test_pdb_print_captured_logs(self, pytester, showcapture: str) -> None: p1 = pytester.makepyfile( """ def test_1(): import logging logging.warning("get " + "rekt") assert False """ ) child = pytester.spawn_pytest(f"--show-capture={showcapture} --pdb {p1}") if showcapture in ("all", "log"): > child.expect("captured log") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:272: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs0/temp-pexpect', '--show-capture=all', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs0/test_pdb_print_captured_logs.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915215 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'captured log') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ___________________ TestPDB.test_pdb_set_trace_interception ____________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_set_trace_interception(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pdb def test_1(): pdb.set_trace() """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:432: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_interception0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_interception0/test_pdb_set_trace_interception.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915217 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_set_trace_interception0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ____________ TestLoggingInteraction.test_logging_after_cap_stopped _____________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_logging_after_cap_stopped(self, pytester: Pytester) -> None: pytester.makeconftest( """\ import pytest import logging log = logging.getLogger(__name__) @pytest.fixture def log_on_teardown(): yield log.warning('Logging on teardown') """ ) # make sure that logging is still captured in tests p = pytester.makepyfile( """\ def test_hello(log_on_teardown): import logging logging.warning("hello433") assert 1 raise KeyboardInterrupt() """ ) > result = pytester.runpytest_subprocess(p, "--log-cli-level", "info") /builddir/build/BUILD/pytest-7.4.3/testing/test_capture.py:420: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_after_cap_stopped0/runpytest-0 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_after_cap_stopped0/test_logging_after_cap_stopped.py --log-cli-level info in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_logging_after_cap_stopped0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) ___________________ TestPDB.test_pdb_print_captured_logs[no] ___________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = showcapture = 'no' @pytest.mark.parametrize("showcapture", ["all", "no", "log"]) def test_pdb_print_captured_logs(self, pytester, showcapture: str) -> None: p1 = pytester.makepyfile( """ def test_1(): import logging logging.warning("get " + "rekt") assert False """ ) child = pytester.spawn_pytest(f"--show-capture={showcapture} --pdb {p1}") if showcapture in ("all", "log"): child.expect("captured log") child.expect("get rekt") > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:274: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs1/temp-pexpect', '--show-capture=no', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs1/test_pdb_print_captured_logs.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915221 E child_fd: 19 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_print_captured_logs1/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _________________________ TestPDB.test_pdb_and_capsys __________________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_and_capsys(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest def test_1(capsys): print("hello1") pytest.set_trace() """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:451: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_and_capsys0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_and_capsys0/test_pdb_and_capsys.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915225 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_and_capsys0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ______________________ TestPDB.test_pdb_used_outside_test ______________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_used_outside_test(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest pytest.set_trace() x = 5 """ ) child = pytester.spawn(f"{sys.executable} {p1}") > child.expect("x = 5") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:774: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_used_outside_test0/test_pdb_used_outside_test.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915229 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_used_outside_test0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'x = 5') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ________________ TestPDB.test_pdb_with_caplog_on_pdb_invocation ________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_with_caplog_on_pdb_invocation(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def test_1(capsys, caplog): import logging logging.getLogger(__name__).warning("some_warning") assert 0 """ ) child = pytester.spawn_pytest("--pdb %s" % str(p1)) child.send("caplog.record_tuples\n") > child.expect_exact( "[('test_pdb_with_caplog_on_pdb_invocation', 30, 'some_warning')]" ) /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:469: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:421: in expect_exact return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_with_caplog_on_pdb_invocation0/temp-pexpect', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_with_caplog_on_pdb_invocation0/test_pdb_with_caplog_on_pdb_invocation.py'] E buffer (last 100 chars): b'caplog.record_tuples\r\n' E before (last 100 chars): b'caplog.record_tuples\r\n' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915231 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_with_caplog_on_pdb_invocation0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_string: E 0: b"[('test_pdb_with_caplog_on_pdb_invocation', 30, 'some_warning')]" /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _______________________ TestPDB.test_pdb_without_capture _______________________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_without_capture(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest def test_1(): pytest.set_trace() """ ) child = pytester.spawn_pytest("-s %s" % p1) > child.expect(r">>> PDB set_trace >>>") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:665: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_without_capture0/temp-pexpect', '-s', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_without_capture0/test_pdb_without_capture.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915234 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_without_capture0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'>>> PDB set_trace >>>') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ___________________ TestPDB.test_pdb_used_in_generate_tests ____________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_used_in_generate_tests(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pytest def pytest_generate_tests(metafunc): pytest.set_trace() x = 5 def test_foo(a): pass """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("x = 5") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:791: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_used_in_generate_tests0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_used_in_generate_tests0/test_pdb_used_in_generate_tests.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915235 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_used_in_generate_tests0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'x = 5') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _________ TestCaptureFixture.test_keyboardinterrupt_disables_capturing _________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_keyboardinterrupt_disables_capturing(self, pytester: Pytester) -> None: p = pytester.makepyfile( """\ def test_hello(capfd): import os os.write(1, b'42') raise KeyboardInterrupt() """ ) > result = pytester.runpytest_subprocess(p) /builddir/build/BUILD/pytest-7.4.3/testing/test_capture.py:604: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_keyboardinterrupt_disables_capturing0/runpytest-0 /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_keyboardinterrupt_disables_capturing0/test_keyboardinterrupt_disables_capturing.py in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_keyboardinterrupt_disables_capturing0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _________________ TestPDB.test_set_trace_capturing_afterwards __________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_set_trace_capturing_afterwards(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ import pdb def test_1(): pdb.set_trace() def test_2(): print("hello") assert 0 """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:488: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_set_trace_capturing_afterwards0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_set_trace_capturing_afterwards0/test_set_trace_capturing_afterwards.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915236 E child_fd: 19 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_set_trace_capturing_afterwards0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT __________________ TestTraceOption.test_trace_sets_breakpoint __________________ [gw1] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_trace_sets_breakpoint(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def test_1(): assert True def test_2(): pass def test_3(): pass """ ) child = pytester.spawn_pytest("--trace " + str(p1)) > child.expect("test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:1060: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_sets_breakpoint0/temp-pexpect', '--trace', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_sets_breakpoint0/test_trace_sets_breakpoint.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915243 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_sets_breakpoint0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _______________ TestPDB.test_pdb_continue_with_recursive_debug[] _______________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = , capture_arg = '' pytester = @pytest.mark.parametrize("capture_arg", ("", "-s", "-p no:capture")) def test_pdb_continue_with_recursive_debug( self, capture_arg, pytester: Pytester ) -> None: """Full coverage for do_debug without capturing. This is very similar to test_pdb_interaction_continue_recursive in general, but mocks out ``pdb.set_trace`` for providing more coverage. """ p1 = pytester.makepyfile( """ try: input = raw_input except NameError: pass def set_trace(): __import__('pdb').set_trace() def test_1(monkeypatch): import _pytest.debugging class pytestPDBTest(_pytest.debugging.pytestPDB): @classmethod def set_trace(cls, *args, **kwargs): # Init PytestPdbWrapper to handle capturing. _pdb = cls._init_pdb("set_trace", *args, **kwargs) # Mock out pdb.Pdb.do_continue. import pdb pdb.Pdb.do_continue = lambda self, arg: None print("===" + " SET_TRACE ===") assert input() == "debug set_trace()" # Simulate PytestPdbWrapper.do_debug cls._recursive_debug += 1 print("ENTERING RECURSIVE DEBUGGER") print("===" + " SET_TRACE_2 ===") assert input() == "c" _pdb.do_continue("") print("===" + " SET_TRACE_3 ===") # Simulate PytestPdbWrapper.do_debug print("LEAVING RECURSIVE DEBUGGER") cls._recursive_debug -= 1 print("===" + " SET_TRACE_4 ===") assert input() == "c" _pdb.do_continue("") def do_continue(self, arg): print("=== do_continue") monkeypatch.setattr(_pytest.debugging, "pytestPDB", pytestPDBTest) import pdb monkeypatch.setattr(pdb, "set_trace", pytestPDBTest.set_trace) set_trace() """ ) child = pytester.spawn_pytest(f"--tb=short {p1} {capture_arg}") > child.expect("=== SET_TRACE ===") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:736: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug0/temp-pexpect', '--tb=short', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug0/test_pdb_continue_with_recursive_debug.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915244 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'=== SET_TRACE ===') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________________ TestPDB.test_pdb_interaction_doctest _____________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_interaction_doctest(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def function_1(): ''' >>> i = 0 >>> assert i == 1 ''' """ ) child = pytester.spawn_pytest("--doctest-modules --pdb %s" % p1) > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:508: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_interaction_doctest0/temp-pexpect', '--doctest-modules', '--pdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_interaction_doctest0/test_pdb_interaction_doctest.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915245 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_pdb_interaction_doctest0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ______________ TestPDB.test_pdb_continue_with_recursive_debug[-s] ______________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = , capture_arg = '-s' pytester = @pytest.mark.parametrize("capture_arg", ("", "-s", "-p no:capture")) def test_pdb_continue_with_recursive_debug( self, capture_arg, pytester: Pytester ) -> None: """Full coverage for do_debug without capturing. This is very similar to test_pdb_interaction_continue_recursive in general, but mocks out ``pdb.set_trace`` for providing more coverage. """ p1 = pytester.makepyfile( """ try: input = raw_input except NameError: pass def set_trace(): __import__('pdb').set_trace() def test_1(monkeypatch): import _pytest.debugging class pytestPDBTest(_pytest.debugging.pytestPDB): @classmethod def set_trace(cls, *args, **kwargs): # Init PytestPdbWrapper to handle capturing. _pdb = cls._init_pdb("set_trace", *args, **kwargs) # Mock out pdb.Pdb.do_continue. import pdb pdb.Pdb.do_continue = lambda self, arg: None print("===" + " SET_TRACE ===") assert input() == "debug set_trace()" # Simulate PytestPdbWrapper.do_debug cls._recursive_debug += 1 print("ENTERING RECURSIVE DEBUGGER") print("===" + " SET_TRACE_2 ===") assert input() == "c" _pdb.do_continue("") print("===" + " SET_TRACE_3 ===") # Simulate PytestPdbWrapper.do_debug print("LEAVING RECURSIVE DEBUGGER") cls._recursive_debug -= 1 print("===" + " SET_TRACE_4 ===") assert input() == "c" _pdb.do_continue("") def do_continue(self, arg): print("=== do_continue") monkeypatch.setattr(_pytest.debugging, "pytestPDB", pytestPDBTest) import pdb monkeypatch.setattr(pdb, "set_trace", pytestPDBTest.set_trace) set_trace() """ ) child = pytester.spawn_pytest(f"--tb=short {p1} {capture_arg}") > child.expect("=== SET_TRACE ===") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:736: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug1/temp-pexpect', '--tb=short', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug1/test_pdb_continue_with_recursive_debug.py', '-s'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915252 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug1/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'=== SET_TRACE ===') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ____ TestTraceOption.test_trace_with_parametrize_handles_shared_fixtureinfo ____ [gw1] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_trace_with_parametrize_handles_shared_fixtureinfo( self, pytester: Pytester ) -> None: p1 = pytester.makepyfile( """ import pytest @pytest.mark.parametrize('myparam', [1,2]) def test_1(myparam, request): assert myparam in (1, 2) assert request.function.__name__ == "test_1" @pytest.mark.parametrize('func', [1,2]) def test_func(func, request): assert func in (1, 2) assert request.function.__name__ == "test_func" @pytest.mark.parametrize('myparam', [1,2]) def test_func_kw(myparam, request, func="func_kw"): assert myparam in (1, 2) assert func == "func_kw" assert request.function.__name__ == "test_func_kw" """ ) child = pytester.spawn_pytest("--trace " + str(p1)) for func, argname in [ ("test_1", "myparam"), ("test_func", "func"), ("test_func_kw", "myparam"), ]: > child.expect_exact("> PDB runcall (IO-capturing turned off) >") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:1104: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:421: in expect_exact return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_with_parametrize_handles_shared_fixtureinfo0/temp-pexpect', '--trace', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_with_parametrize_handles_shared_fixtureinfo0/test_trace_with_parametrize_handles_shared_fixtureinfo.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915251 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_trace_with_parametrize_handles_shared_fixtureinfo0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_string: E 0: b'> PDB runcall (IO-capturing turned off) >' /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _________________ TestPDB.test_pdb_collection_failure_is_shown _________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_pdb_collection_failure_is_shown(self, pytester: Pytester) -> None: p1 = pytester.makepyfile("xxx") > result = pytester.runpytest_subprocess("--pdb", p1) /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:798: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_collection_failure_is_shown0/runpytest-0 --pdb /tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_collection_failure_is_shown0/test_pdb_collection_failure_is_shown.py in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_collection_failure_is_shown0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057592460865920) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) _____________________ TestPDB.test_doctest_set_trace_quit ______________________ [gw2] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_doctest_set_trace_quit(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def function_1(): ''' >>> __import__('pdb').set_trace() ''' """ ) # NOTE: does not use pytest.set_trace, but Python's patched pdb, # therefore "-s" is required. child = pytester.spawn_pytest("--doctest-modules --pdb -s %s" % p1) > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:535: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_doctest_set_trace_quit0/temp-pexpect', '--doctest-modules', '--pdb', '-s', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_doctest_set_trace_quit0/test_doctest_set_trace_quit.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915253 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw2/test_doctest_set_trace_quit0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________ TestPDB.test_enter_leave_pdb_hooks_are_called[False] _____________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = , post_mortem = False pytester = @pytest.mark.parametrize("post_mortem", (False, True)) def test_enter_leave_pdb_hooks_are_called( self, post_mortem, pytester: Pytester ) -> None: pytester.makeconftest( """ mypdb = None def pytest_configure(config): config.testing_verification = 'configured' def pytest_enter_pdb(config, pdb): assert config.testing_verification == 'configured' print('enter_pdb_hook') global mypdb mypdb = pdb mypdb.set_attribute = "bar" def pytest_leave_pdb(config, pdb): assert config.testing_verification == 'configured' print('leave_pdb_hook') global mypdb assert mypdb is pdb assert mypdb.set_attribute == "bar" """ ) p1 = pytester.makepyfile( """ import pytest def test_set_trace(): pytest.set_trace() assert 0 def test_post_mortem(): assert 0 """ ) if post_mortem: child = pytester.spawn_pytest(str(p1) + " --pdb -s -k test_post_mortem") else: child = pytester.spawn_pytest(str(p1) + " -k test_set_trace") > child.expect("enter_pdb_hook") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:847: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called0/test_enter_leave_pdb_hooks_are_called.py', '-k', 'test_set_trace'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915261 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'enter_pdb_hook') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ________ TestPDB.test_pdb_continue_with_recursive_debug[-p no:capture] _________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = capture_arg = '-p no:capture' pytester = @pytest.mark.parametrize("capture_arg", ("", "-s", "-p no:capture")) def test_pdb_continue_with_recursive_debug( self, capture_arg, pytester: Pytester ) -> None: """Full coverage for do_debug without capturing. This is very similar to test_pdb_interaction_continue_recursive in general, but mocks out ``pdb.set_trace`` for providing more coverage. """ p1 = pytester.makepyfile( """ try: input = raw_input except NameError: pass def set_trace(): __import__('pdb').set_trace() def test_1(monkeypatch): import _pytest.debugging class pytestPDBTest(_pytest.debugging.pytestPDB): @classmethod def set_trace(cls, *args, **kwargs): # Init PytestPdbWrapper to handle capturing. _pdb = cls._init_pdb("set_trace", *args, **kwargs) # Mock out pdb.Pdb.do_continue. import pdb pdb.Pdb.do_continue = lambda self, arg: None print("===" + " SET_TRACE ===") assert input() == "debug set_trace()" # Simulate PytestPdbWrapper.do_debug cls._recursive_debug += 1 print("ENTERING RECURSIVE DEBUGGER") print("===" + " SET_TRACE_2 ===") assert input() == "c" _pdb.do_continue("") print("===" + " SET_TRACE_3 ===") # Simulate PytestPdbWrapper.do_debug print("LEAVING RECURSIVE DEBUGGER") cls._recursive_debug -= 1 print("===" + " SET_TRACE_4 ===") assert input() == "c" _pdb.do_continue("") def do_continue(self, arg): print("=== do_continue") monkeypatch.setattr(_pytest.debugging, "pytestPDB", pytestPDBTest) import pdb monkeypatch.setattr(pdb, "set_trace", pytestPDBTest.set_trace) set_trace() """ ) child = pytester.spawn_pytest(f"--tb=short {p1} {capture_arg}") > child.expect("=== SET_TRACE ===") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:736: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug2/temp-pexpect', '--tb=short', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug2/test_pdb_continue_with_recursive_debug.py', '-p', 'no:capture'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915259 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_pdb_continue_with_recursive_debug2/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'=== SET_TRACE ===') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________ TestPDB.test_enter_leave_pdb_hooks_are_called[True] ______________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = , post_mortem = True pytester = @pytest.mark.parametrize("post_mortem", (False, True)) def test_enter_leave_pdb_hooks_are_called( self, post_mortem, pytester: Pytester ) -> None: pytester.makeconftest( """ mypdb = None def pytest_configure(config): config.testing_verification = 'configured' def pytest_enter_pdb(config, pdb): assert config.testing_verification == 'configured' print('enter_pdb_hook') global mypdb mypdb = pdb mypdb.set_attribute = "bar" def pytest_leave_pdb(config, pdb): assert config.testing_verification == 'configured' print('leave_pdb_hook') global mypdb assert mypdb is pdb assert mypdb.set_attribute == "bar" """ ) p1 = pytester.makepyfile( """ import pytest def test_set_trace(): pytest.set_trace() assert 0 def test_post_mortem(): assert 0 """ ) if post_mortem: child = pytester.spawn_pytest(str(p1) + " --pdb -s -k test_post_mortem") else: child = pytester.spawn_pytest(str(p1) + " -k test_set_trace") > child.expect("enter_pdb_hook") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:847: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called1/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called1/test_enter_leave_pdb_hooks_are_called.py', '--pdb', '-s', '-k', 'test_post_mortem'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915267 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_enter_leave_pdb_hooks_are_called1/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'enter_pdb_hook') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT __________ TestDebuggingBreakpoints.test_sys_breakpoint_interception ___________ [gw5] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = @pytest.mark.skipif( not _ENVIRON_PYTHONBREAKPOINT == "", reason="Requires breakpoint() default value", ) def test_sys_breakpoint_interception(self, pytester: Pytester) -> None: p1 = pytester.makepyfile( """ def test_1(): breakpoint() """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("test_1") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:1017: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_sys_breakpoint_interception0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_sys_breakpoint_interception0/test_sys_breakpoint_interception.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915271 E child_fd: 22 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw5/test_sys_breakpoint_interception0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'test_1') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________________ test_quit_with_swallowed_SystemExit ______________________ [gw1] linux -- Python 3.12.0 /usr/bin/python3 pytester = def test_quit_with_swallowed_SystemExit(pytester: Pytester) -> None: """Test that debugging's pytest_configure is re-entrant.""" p1 = pytester.makepyfile( """ def call_pdb_set_trace(): __import__('pdb').set_trace() def test_1(): try: call_pdb_set_trace() except SystemExit: pass def test_2(): pass """ ) child = pytester.spawn_pytest(str(p1)) > child.expect("Pdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:1176: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_quit_with_swallowed_SystemExit0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_quit_with_swallowed_SystemExit0/test_quit_with_swallowed_SystemExit.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915273 E child_fd: 18 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw1/test_quit_with_swallowed_SystemExit0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'Pdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT __________________ TestPDB.test_pdb_custom_cls_with_set_trace __________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff9a6e3c20> def test_pdb_custom_cls_with_set_trace( self, pytester: Pytester, monkeypatch: MonkeyPatch, ) -> None: pytester.makepyfile( custom_pdb=""" class CustomPdb(object): def __init__(self, *args, **kwargs): skip = kwargs.pop("skip") assert skip == ["foo.*"] print("__init__") super(CustomPdb, self).__init__(*args, **kwargs) def set_trace(*args, **kwargs): print('custom set_trace>') """ ) p1 = pytester.makepyfile( """ import pytest def test_foo(): pytest.set_trace(skip=['foo.*']) """ ) monkeypatch.setenv("PYTHONPATH", str(pytester.path)) child = pytester.spawn_pytest("--pdbcls=custom_pdb:CustomPdb %s" % str(p1)) > child.expect("__init__") /builddir/build/BUILD/pytest-7.4.3/testing/test_debugging.py:922: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_custom_cls_with_set_trace0/temp-pexpect', '--pdbcls=custom_pdb:CustomPdb', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_custom_cls_with_set_trace0/test_pdb_custom_cls_with_set_trace.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915281 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_pdb_custom_cls_with_set_trace0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'__init__') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT ___________________________ test_spawn_uses_tmphome ____________________________ [gw0] linux -- Python 3.12.0 /usr/bin/python3 pytester = def test_spawn_uses_tmphome(pytester: Pytester) -> None: tmphome = str(pytester.path) assert os.environ.get("HOME") == tmphome pytester._monkeypatch.setenv("CUSTOMENV", "42") p1 = pytester.makepyfile( """ import os def test(): assert os.environ["HOME"] == {tmphome!r} assert os.environ["CUSTOMENV"] == "42" """.format( tmphome=tmphome ) ) child = pytester.spawn_pytest(str(p1)) > out = child.read() /builddir/build/BUILD/pytest-7.4.3/testing/test_pytester.py:731: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:444: in read self.expect(self.delimiter) /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_spawn_uses_tmphome0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_spawn_uses_tmphome0/test_spawn_uses_tmphome.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915355 E child_fd: 20 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw0/test_spawn_uses_tmphome0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: EOF /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________ TestTerminal.test_report_collect_after_half_a_second _____________ [gw7] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff866624e0> def test_report_collect_after_half_a_second( self, pytester: Pytester, monkeypatch: MonkeyPatch ) -> None: """Test for "collecting" being updated after 0.5s""" pytester.makepyfile( **{ "test1.py": """ import _pytest.terminal _pytest.terminal.REPORT_COLLECTING_RESOLUTION = 0 def test_1(): pass """, "test2.py": "def test_2(): pass", } ) # Explicitly test colored output. monkeypatch.setenv("PY_COLORS", "1") child = pytester.spawn_pytest("-v test1.py test2.py") > child.expect(r"collecting \.\.\.") /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:176: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_report_collect_after_half_a_second0/temp-pexpect', '-v', 'test1.py', 'test2.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915357 E child_fd: 17 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw7/test_report_collect_after_half_a_second0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'collecting \\.\\.\\.') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _________ TestTerminal.test_runtest_location_shown_before_test_starts __________ [gw6] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_runtest_location_shown_before_test_starts( self, pytester: Pytester ) -> None: pytester.makepyfile( """ def test_1(): import time time.sleep(20) """ ) child = pytester.spawn_pytest("") > child.expect(".*test_runtest_location.*py") /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_runtest_location_shown_before_test_starts0/temp-pexpect'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915359 E child_fd: 22 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_runtest_location_shown_before_test_starts0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'.*test_runtest_location.*py') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _______________________ TestTrialUnittest.test_trial_pdb _______________________ [gw4] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = def test_trial_pdb(self, pytester: Pytester) -> None: p = pytester.makepyfile( """ from twisted.trial import unittest import pytest class TC(unittest.TestCase): def test_hello(self): assert 0, "hellopdb" """ ) child = pytester.spawn_pytest(str(p)) > child.expect("hellopdb") /builddir/build/BUILD/pytest-7.4.3/testing/test_unittest.py:610: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.12/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_trial_pdb0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_trial_pdb0/test_trial_pdb.py'] E buffer (last 100 chars): b'' E before (last 100 chars): '' E after: E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 1915358 E child_fd: 16 E closed: False E timeout: 10.0 E delimiter: E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/popen-gw4/test_trial_pdb0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'hellopdb') /usr/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT _____________ TestCodeHighlight.test_code_highlight_invalid_theme ______________ [gw3] linux -- Python 3.12.0 /usr/bin/python3 self = pytester = color_mapping = .ColorMapping'> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffffff81a175f0> def test_code_highlight_invalid_theme( self, pytester: Pytester, color_mapping, monkeypatch: MonkeyPatch ) -> None: pytester.makepyfile( """ def test_foo(): assert 1 == 10 """ ) monkeypatch.setenv("PYTEST_THEME", "invalid") > result = pytester.runpytest_subprocess("--color=yes") /builddir/build/BUILD/pytest-7.4.3/testing/test_terminal.py:2572: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.12/subprocess.py:1264: in wait return self._wait(timeout=timeout) /usr/lib64/python3.12/subprocess.py:2046: in _wait (pid, sts) = self._try_wait(0) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = wait_flags = 0 def _try_wait(self, wait_flags): """All callers to this function MUST hold self._waitpid_lock.""" try: > (pid, sts) = os.waitpid(self.pid, wait_flags) E Failed: Timeout >30.0s /usr/lib64/python3.12/subprocess.py:2004: Failed ----------------------------- Captured stdout call ----------------------------- running: /usr/bin/python3 -mpytest --basetemp=/tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_code_highlight_invalid_theme0/runpytest-0 --color=yes in: /tmp/pytest-of-mockbuild/pytest-0/popen-gw3/test_code_highlight_invalid_theme0 ----------------------------- Captured stderr call ----------------------------- ~~~~~~~~~~~~~~~~~~~~ Stack of (72057591953355136) ~~~~~~~~~~~~~~~~~~~~ File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 285, in _perform_spawn reply.run() File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 220, in run self._result = func(*args, **kwargs) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 967, in _thread_receiver msg = Message.from_io(io) File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 432, in from_io header = io.read(9) # type 1, channel 4, payload 4 File "/usr/lib/python3.12/site-packages/execnet/gateway_base.py", line 400, in read data = self._read(numbytes - len(buf)) =========================== short test summary info ============================ SKIPPED [1] testing/test_pathlib.py:459: Windows only SKIPPED [1] testing/_py/test_local.py:462: sys.version_info < (3,6) SKIPPED [1] testing/_py/test_local.py:467: sys.version_info < (3,6) SKIPPED [1] testing/_py/test_local.py:667: case insensitive only on windows SKIPPED [1] testing/test_tmpdir.py:361: win only SKIPPED [1] testing/test_capture.py:1447: only on windows SKIPPED [1] testing/test_findpaths.py:140: condition: sys.platform != 'win32' SKIPPED [1] testing/_py/test_local.py:888: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1240: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1246: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1258: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1264: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1269: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1277: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/_py/test_local.py:1284: condition: not (sys.platform == 'win32' or getattr(os, '_name', None) == 'nt') SKIPPED [1] testing/test_config.py:1894: does not work with xdist currently SKIPPED [1] ../../BUILDROOT/pytest-7.4.3-2.fc40.noarch/usr/lib/python3.12/site-packages/_pytest/pathlib.py:466: symlinks not supported: [Errno 17] File exists: '/tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_collect_symlink_dir0/symlink_dir' -> '/tmp/pytest-of-mockbuild/pytest-0/popen-gw6/test_collect_symlink_dir0/dir' SKIPPED [1] testing/test_conftest.py:374: only relevant for case insensitive file systems SKIPPED [3] testing/test_warnings.py:521: not relevant until pytest 8.0 SKIPPED [9] testing/code/test_excinfo.py:1586: could not import 'exceptiongroup': No module named 'exceptiongroup' SKIPPED [1] testing/test_unittest.py:1327: could not import 'asynctest': No module named 'asynctest' SKIPPED [1] testing/test_compat.py:95: couroutine removed SKIPPED [1] testing/test_faulthandler.py:71: sometimes crashes on CI (#7022) ===== 57 failed, 3360 passed, 33 skipped, 18 xfailed in 1809.40s (0:30:09) ===== RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.ApkMvr (%check) Bad exit status from /var/tmp/rpm-tmp.ApkMvr (%check) Child return code was: 1 EXCEPTION: [Error('Command failed: \n # bash --login -c /usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec\n', 1)] Traceback (most recent call last): File "/usr/lib/python3.11/site-packages/mockbuild/trace_decorator.py", line 93, in trace result = func(*args, **kw) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/mockbuild/util.py", line 597, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -ba --noprep --noclean --target noarch --nodeps /builddir/build/SPECS/pytest.spec