Source: python-pytest-xprocess
Version: 0.18.1-2
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: [email protected]
Usertags: ftbfs-20211220 ftbfs-bookworm
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> make[1]: pyversions: No such file or directory
> py3versions: no X-Python3-Version in control file, using supported versions
> pkgos-dh_auto_install --no-py2 --in-tmp
> + PKGOS_USE_PY2=yes
> + PKGOS_USE_PY3=yes
> + PKGOS_IN_TMP=no
> + PKGOS_USE_PY2=no
> + shift
> + PKGOS_IN_TMP=yes
> + shift
> + dpkg-parsechangelog -SSource
> + SRC_PKG_NAME=python-pytest-xprocess
> + echo python-pytest-xprocess
> + sed s/python-//
> + PY_MODULE_NAME=pytest-xprocess
> + [ no = yes ]
> + [ yes = yes ]
> + py3versions -vr
> + PYTHON3S=3.10 3.9
> + [ no = yes ]
> + [ yes = yes ]
> + [ yes = yes ]
> + TARGET_DIR=tmp
> + pwd
> + python3.10 setup.py install --install-layout=deb --root
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34:
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and
> pip and other standards-based tools.
> warnings.warn(
> running build
> running build_py
> creating build
> creating build/lib
> copying pytest_xprocess.py -> build/lib
> copying xprocess.py -> build/lib
> running install_lib
> creating /<<PKGBUILDDIR>>/debian/tmp
> creating /<<PKGBUILDDIR>>/debian/tmp/usr
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
> copying build/lib/pytest_xprocess.py ->
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
> copying build/lib/xprocess.py ->
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
> byte-compiling
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pytest_xprocess.py
> to pytest_xprocess.cpython-310.pyc
> byte-compiling
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/xprocess.py to
> xprocess.cpython-310.pyc
> running install_egg_info
> running egg_info
> creating pytest_xprocess.egg-info
> writing pytest_xprocess.egg-info/PKG-INFO
> writing dependency_links to pytest_xprocess.egg-info/dependency_links.txt
> writing entry points to pytest_xprocess.egg-info/entry_points.txt
> writing requirements to pytest_xprocess.egg-info/requires.txt
> writing top-level names to pytest_xprocess.egg-info/top_level.txt
> writing manifest file 'pytest_xprocess.egg-info/SOURCES.txt'
> reading manifest file 'pytest_xprocess.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no files found matching 'CHANGELOG'
> warning: no directories found matching 'example'
> adding license file 'LICENSE'
> writing manifest file 'pytest_xprocess.egg-info/SOURCES.txt'
> Copying pytest_xprocess.egg-info to
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pytest_xprocess-0.18.1.egg-info
> Skipping SOURCES.txt
> running install_scripts
> + pwd
> + python3.9 setup.py install --install-layout=deb --root
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34:
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and
> pip and other standards-based tools.
> warnings.warn(
> running build
> running build_py
> running install_lib
> byte-compiling
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pytest_xprocess.py
> to pytest_xprocess.cpython-39.pyc
> byte-compiling
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/xprocess.py to
> xprocess.cpython-39.pyc
> running install_egg_info
> running egg_info
> writing pytest_xprocess.egg-info/PKG-INFO
> writing dependency_links to pytest_xprocess.egg-info/dependency_links.txt
> writing entry points to pytest_xprocess.egg-info/entry_points.txt
> writing requirements to pytest_xprocess.egg-info/requires.txt
> writing top-level names to pytest_xprocess.egg-info/top_level.txt
> reading manifest file 'pytest_xprocess.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no files found matching 'CHANGELOG'
> warning: no directories found matching 'example'
> adding license file 'LICENSE'
> writing manifest file 'pytest_xprocess.egg-info/SOURCES.txt'
> removing
> '/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pytest_xprocess-0.18.1.egg-info'
> (and everything under it)
> Copying pytest_xprocess.egg-info to
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pytest_xprocess-0.18.1.egg-info
> Skipping SOURCES.txt
> running install_scripts
> + pwd
> + rm -rf /<<PKGBUILDDIR>>/debian/python*/usr/lib/python*/dist-packages/*.pth
> + pwd
> + rm -rf /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python*/dist-packages/*.pth
> + pwd
> + [ -d /<<PKGBUILDDIR>>/debian/python-pytest-xprocess/usr/bin ]
> set -e ; for pyvers in 3.10 3.9; do \
> PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
> python$pyvers -m pytest -v ; \
> done
> ============================= test session starts
> ==============================
> platform linux -- Python 3.10.1, pytest-6.2.5, py-1.10.0, pluggy-0.13.0 --
> /usr/bin/python3.10
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>, configfile: tox.ini
> plugins: xprocess-0.18.1
> collecting ... collected 45 items
>
> tests/test_callback.py::test_callback_success[s1] PASSED [
> 2%]
> tests/test_callback.py::test_callback_success[s2] PASSED [
> 4%]
> tests/test_callback.py::test_callback_success[s3] PASSED [
> 6%]
> tests/test_callback.py::test_callback_fail[s1] PASSED [
> 8%]
> tests/test_callback.py::test_callback_fail[s2] PASSED [
> 11%]
> tests/test_callback.py::test_callback_fail[s3] PASSED [
> 13%]
> tests/test_functional_workflow.py::test_functional_work_flow ERROR [
> 15%]
> tests/test_interruption_clean_up.py::test_interruption_cleanup ERROR [
> 17%]
> tests/test_interruption_clean_up.py::test_interruption_does_not_cleanup ERROR
> [ 20%]
> tests/test_process_initialization.py::test_servers_start[s1] PASSED [
> 22%]
> tests/test_process_initialization.py::test_servers_start[s2] PASSED [
> 24%]
> tests/test_process_initialization.py::test_servers_start[s3] PASSED [
> 26%]
> tests/test_process_initialization.py::test_ensure_not_restart[s1] PASSED [
> 28%]
> tests/test_process_initialization.py::test_ensure_not_restart[s2] PASSED [
> 31%]
> tests/test_process_initialization.py::test_ensure_not_restart[s3] PASSED [
> 33%]
> tests/test_process_initialization.py::test_startup_detection_max_read_lines[s1-started-20]
> PASSED [ 35%]
> tests/test_process_initialization.py::test_startup_detection_max_read_lines[s2-spam,
> bacon, eggs-30] PASSED [ 37%]
> tests/test_process_initialization.py::test_startup_detection_max_read_lines[s3-finally
> started-62] PASSED [ 40%]
> tests/test_process_initialization.py::test_runtime_error_on_start_fail[s1]
> PASSED [ 42%]
> tests/test_process_initialization.py::test_runtime_error_on_start_fail[s2]
> PASSED [ 44%]
> tests/test_process_initialization.py::test_runtime_error_on_start_fail[s3]
> PASSED [ 46%]
> tests/test_process_initialization.py::test_popen_kwargs[s1] PASSED [
> 48%]
> tests/test_process_initialization.py::test_popen_kwargs[s2] PASSED [
> 51%]
> tests/test_process_initialization.py::test_popen_kwargs[s3] PASSED [
> 53%]
> tests/test_process_termination.py::test_clean_shutdown[s1] PASSED [
> 55%]
> tests/test_process_termination.py::test_clean_shutdown[s2] PASSED [
> 57%]
> tests/test_process_termination.py::test_clean_shutdown[s3] PASSED [
> 60%]
> tests/test_process_termination.py::test_terminate_no_pid[s1] PASSED [
> 62%]
> tests/test_process_termination.py::test_terminate_no_pid[s2] PASSED [
> 64%]
> tests/test_process_termination.py::test_terminate_no_pid[s3] PASSED [
> 66%]
> tests/test_process_termination.py::test_terminate_only_parent[s1] PASSED [
> 68%]
> tests/test_process_termination.py::test_terminate_only_parent[s2] PASSED [
> 71%]
> tests/test_process_termination.py::test_terminate_only_parent[s3] PASSED [
> 73%]
> tests/test_process_termination.py::test_sigkill_after_failed_sigterm[s1]
> PASSED [ 75%]
> tests/test_process_termination.py::test_sigkill_after_failed_sigterm[s2]
> PASSED [ 77%]
> tests/test_process_termination.py::test_sigkill_after_failed_sigterm[s3]
> PASSED [ 80%]
> tests/test_process_termination.py::test_return_value_on_failure[s1] PASSED [
> 82%]
> tests/test_process_termination.py::test_return_value_on_failure[s2] PASSED [
> 84%]
> tests/test_process_termination.py::test_return_value_on_failure[s3] PASSED [
> 86%]
> tests/test_resource_cleanup.py::test_0 PASSED [
> 88%]
> tests/test_resource_cleanup.py::test_1 PASSED [
> 91%]
> tests/test_resource_cleanup.py::test_2 PASSED [
> 93%]
> tests/test_startup_timeout.py::test_timeout_raise_exception[s1] PASSED [
> 95%]
> tests/test_startup_timeout.py::test_timeout_raise_exception[s2] PASSED [
> 97%]
> tests/test_startup_timeout.py::test_timeout_raise_exception[s3] PASSED
> [100%]
>
> ==================================== ERRORS
> ====================================
> _________________ ERROR at setup of test_functional_work_flow
> __________________
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f93f6cbf6d0>
> when = 'setup'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @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]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result: Optional[TResult] = func()
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:311:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:255: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/runner.py:150: in pytest_runtest_setup
> item.session._setupstate.prepare(item)
> /usr/lib/python3/dist-packages/_pytest/runner.py:452: in prepare
> raise e
> /usr/lib/python3/dist-packages/_pytest/runner.py:449: in prepare
> col.setup()
> /usr/lib/python3/dist-packages/_pytest/python.py:1647: in setup
> self._request._fillfixtures()
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:568: in _fillfixtures
> item.funcargs[argname] = self.getfixturevalue(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:581: in getfixturevalue
> fixturedef = self._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1048: in execute
> fixturedef = request._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1072: in execute
> result = hook.pytest_fixture_setup(fixturedef=self, request=request)
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1126: in
> pytest_fixture_setup
> result = call_fixture_func(fixturefunc, request, kwargs)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:932: in call_fixture_func
> fixture_result = fixturefunc(**kwargs)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:458: in pytester
> return Pytester(request, tmp_path_factory, _ispytest=True)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:668: in __init__
> self._path: Path = tmp_path_factory.mktemp(name, numbered=True)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:91: in mktemp
> basename = self._ensure_relative_to_basetemp(basename)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:72: in
> _ensure_relative_to_basetemp
> if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = TempPathFactory(_given_basetemp=None,
> _trace=<pluggy._tracing.TagTracerSub object at 0x7f93f6e78100>,
> _basetemp=None)
>
> def getbasetemp(self) -> Path:
> """Return the base temporary directory, creating it if needed."""
> if self._basetemp is not None:
> return self._basetemp
>
> if self._given_basetemp is not None:
> basetemp = self._given_basetemp
> if basetemp.exists():
> rm_rf(basetemp)
> basetemp.mkdir(mode=0o700)
> basetemp = basetemp.resolve()
> else:
> from_env = os.environ.get("PYTEST_DEBUG_TEMPROOT")
> temproot = Path(from_env or tempfile.gettempdir()).resolve()
> user = get_user() or "unknown"
> # use a sub-directory in the temproot to speed-up
> # make_numbered_dir() call
> rootdir = temproot.joinpath(f"pytest-of-{user}")
> rootdir.mkdir(mode=0o700, exist_ok=True)
> # Because we use exist_ok=True with a predictable name, make sure
> # we are the owners, to prevent any funny business (on unix, where
> # temproot is usually shared).
> # Also, to keep things private, fixup any world-readable temp
> # rootdir's permissions. Historically 0o755 was used, so we can't
> # just error out on this, at least for a while.
> if sys.platform != "win32":
> uid = os.getuid()
> rootdir_stat = rootdir.stat()
> # getuid shouldn't fail, but cpython defines such a case.
> # Let's hope for the best.
> if uid != -1:
> if rootdir_stat.st_uid != uid:
> > raise OSError(
> f"The temporary directory {rootdir} is not owned
> by the current user. "
> "Fix this and try again."
> )
> E OSError: The temporary directory
> /tmp/pytest-of-user42 is not owned by the current user. Fix this and try
> again.
>
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:132: OSError
> _________________ ERROR at setup of test_interruption_cleanup
> __________________
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f93f6ac7520>
> when = 'setup'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @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]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result: Optional[TResult] = func()
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:311:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:255: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/runner.py:150: in pytest_runtest_setup
> item.session._setupstate.prepare(item)
> /usr/lib/python3/dist-packages/_pytest/runner.py:452: in prepare
> raise e
> /usr/lib/python3/dist-packages/_pytest/runner.py:449: in prepare
> col.setup()
> /usr/lib/python3/dist-packages/_pytest/python.py:1647: in setup
> self._request._fillfixtures()
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:568: in _fillfixtures
> item.funcargs[argname] = self.getfixturevalue(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:581: in getfixturevalue
> fixturedef = self._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1048: in execute
> fixturedef = request._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1072: in execute
> result = hook.pytest_fixture_setup(fixturedef=self, request=request)
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1126: in
> pytest_fixture_setup
> result = call_fixture_func(fixturefunc, request, kwargs)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:932: in call_fixture_func
> fixture_result = fixturefunc(**kwargs)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:458: in pytester
> return Pytester(request, tmp_path_factory, _ispytest=True)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:668: in __init__
> self._path: Path = tmp_path_factory.mktemp(name, numbered=True)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:91: in mktemp
> basename = self._ensure_relative_to_basetemp(basename)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:72: in
> _ensure_relative_to_basetemp
> if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = TempPathFactory(_given_basetemp=None,
> _trace=<pluggy._tracing.TagTracerSub object at 0x7f93f6e78100>,
> _basetemp=None)
>
> def getbasetemp(self) -> Path:
> """Return the base temporary directory, creating it if needed."""
> if self._basetemp is not None:
> return self._basetemp
>
> if self._given_basetemp is not None:
> basetemp = self._given_basetemp
> if basetemp.exists():
> rm_rf(basetemp)
> basetemp.mkdir(mode=0o700)
> basetemp = basetemp.resolve()
> else:
> from_env = os.environ.get("PYTEST_DEBUG_TEMPROOT")
> temproot = Path(from_env or tempfile.gettempdir()).resolve()
> user = get_user() or "unknown"
> # use a sub-directory in the temproot to speed-up
> # make_numbered_dir() call
> rootdir = temproot.joinpath(f"pytest-of-{user}")
> rootdir.mkdir(mode=0o700, exist_ok=True)
> # Because we use exist_ok=True with a predictable name, make sure
> # we are the owners, to prevent any funny business (on unix, where
> # temproot is usually shared).
> # Also, to keep things private, fixup any world-readable temp
> # rootdir's permissions. Historically 0o755 was used, so we can't
> # just error out on this, at least for a while.
> if sys.platform != "win32":
> uid = os.getuid()
> rootdir_stat = rootdir.stat()
> # getuid shouldn't fail, but cpython defines such a case.
> # Let's hope for the best.
> if uid != -1:
> if rootdir_stat.st_uid != uid:
> > raise OSError(
> f"The temporary directory {rootdir} is not owned
> by the current user. "
> "Fix this and try again."
> )
> E OSError: The temporary directory
> /tmp/pytest-of-user42 is not owned by the current user. Fix this and try
> again.
>
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:132: OSError
> _____________ ERROR at setup of test_interruption_does_not_cleanup
> _____________
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f93f6ac79a0>
> when = 'setup'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @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]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result: Optional[TResult] = func()
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:311:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:255: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/runner.py:150: in pytest_runtest_setup
> item.session._setupstate.prepare(item)
> /usr/lib/python3/dist-packages/_pytest/runner.py:452: in prepare
> raise e
> /usr/lib/python3/dist-packages/_pytest/runner.py:449: in prepare
> col.setup()
> /usr/lib/python3/dist-packages/_pytest/python.py:1647: in setup
> self._request._fillfixtures()
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:568: in _fillfixtures
> item.funcargs[argname] = self.getfixturevalue(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:581: in getfixturevalue
> fixturedef = self._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1048: in execute
> fixturedef = request._get_active_fixturedef(argname)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:601: in
> _get_active_fixturedef
> self._compute_fixture_value(fixturedef)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:687: in
> _compute_fixture_value
> fixturedef.execute(request=subrequest)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1072: in execute
> result = hook.pytest_fixture_setup(fixturedef=self, request=request)
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:1126: in
> pytest_fixture_setup
> result = call_fixture_func(fixturefunc, request, kwargs)
> /usr/lib/python3/dist-packages/_pytest/fixtures.py:932: in call_fixture_func
> fixture_result = fixturefunc(**kwargs)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:458: in pytester
> return Pytester(request, tmp_path_factory, _ispytest=True)
> /usr/lib/python3/dist-packages/_pytest/pytester.py:668: in __init__
> self._path: Path = tmp_path_factory.mktemp(name, numbered=True)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:91: in mktemp
> basename = self._ensure_relative_to_basetemp(basename)
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:72: in
> _ensure_relative_to_basetemp
> if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = TempPathFactory(_given_basetemp=None,
> _trace=<pluggy._tracing.TagTracerSub object at 0x7f93f6e78100>,
> _basetemp=None)
>
> def getbasetemp(self) -> Path:
> """Return the base temporary directory, creating it if needed."""
> if self._basetemp is not None:
> return self._basetemp
>
> if self._given_basetemp is not None:
> basetemp = self._given_basetemp
> if basetemp.exists():
> rm_rf(basetemp)
> basetemp.mkdir(mode=0o700)
> basetemp = basetemp.resolve()
> else:
> from_env = os.environ.get("PYTEST_DEBUG_TEMPROOT")
> temproot = Path(from_env or tempfile.gettempdir()).resolve()
> user = get_user() or "unknown"
> # use a sub-directory in the temproot to speed-up
> # make_numbered_dir() call
> rootdir = temproot.joinpath(f"pytest-of-{user}")
> rootdir.mkdir(mode=0o700, exist_ok=True)
> # Because we use exist_ok=True with a predictable name, make sure
> # we are the owners, to prevent any funny business (on unix, where
> # temproot is usually shared).
> # Also, to keep things private, fixup any world-readable temp
> # rootdir's permissions. Historically 0o755 was used, so we can't
> # just error out on this, at least for a while.
> if sys.platform != "win32":
> uid = os.getuid()
> rootdir_stat = rootdir.stat()
> # getuid shouldn't fail, but cpython defines such a case.
> # Let's hope for the best.
> if uid != -1:
> if rootdir_stat.st_uid != uid:
> > raise OSError(
> f"The temporary directory {rootdir} is not owned
> by the current user. "
> "Fix this and try again."
> )
> E OSError: The temporary directory
> /tmp/pytest-of-user42 is not owned by the current user. Fix this and try
> again.
>
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py:132: OSError
> =========================== short test summary info
> ============================
> ERROR tests/test_functional_workflow.py::test_functional_work_flow -
> OSError:...
> ERROR tests/test_interruption_clean_up.py::test_interruption_cleanup -
> OSErro...
> ERROR tests/test_interruption_clean_up.py::test_interruption_does_not_cleanup
> ======================== 42 passed, 3 errors in 35.73s
> =========================
> pytest-xprocess reminder::Be sure to terminate the started process by running
> 'pytest --xkill' if you have not explicitly done so in your fixture with
> 'xprocess.getinfo(<process_name>).terminate()'.
> make[1]: *** [debian/rules:21: override_dh_auto_install] Error 1
The full build log is available from:
http://qa-logs.debian.net/2021/12/20/python-pytest-xprocess_0.18.1-2_unstable.log
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.