Source: python-pytest-xprocess
Version: 0.18.1-2
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
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.

Reply via email to