Your message dated Sat, 03 Dec 2022 15:40:49 +0000
with message-id <e1p1udf-00fbir...@fasolo.debian.org>
and subject line Bug#1022024: fixed in python-gitlab 1:3.12.0-1
has caused the Debian Bug report #1022024,
regarding python-gitlab FTBFS: test failures
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1022024: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022024
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: python-gitlab
Version: 1:3.10.0-1
Severity: serious
Tags: ftbfs

https://buildd.debian.org/status/fetch.php?pkg=python-gitlab&arch=all&ver=1%3A3.10.0-1&stamp=1666104723&raw=0

...
=================================== FAILURES ===================================
________________ test_from_helper_subprocess_error_raises_error ________________

m_open = <MagicMock name='open' id='140012539063808'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f57355c8b50>

    @mock.patch("builtins.open")
    @pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported 
on Windows")
    def test_from_helper_subprocess_error_raises_error(m_open, monkeypatch):
        # using /usr/bin/false here to force a non-zero return code
        fd = io.StringIO(
            dedent(
                """\
                [global]
                default = helper
    
                [helper]
                url = https://helper.url
                oauth_token = helper: /usr/bin/false
                """
            )
        )
    
        fd.close = mock.Mock(return_value=None)
        m_open.return_value = fd
        with monkeypatch.context() as m:
            m.setattr(Path, "resolve", _mock_existent_file)
            with pytest.raises(config.GitlabConfigHelperError) as e:
>               config.GitlabConfigParser(gitlab_id="helper")

tests/unit/test_config.py:327: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
gitlab/config.py:114: in __init__
    self._parse_config()
gitlab/config.py:198: in _parse_config
    self._get_values_from_helper()
gitlab/config.py:266: in _get_values_from_helper
    subprocess.check_output(commmand, stderr=subprocess.PIPE)
/usr/lib/python3.10/subprocess.py:420: in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
/usr/lib/python3.10/subprocess.py:501: in run
    with Popen(*popenargs, **kwargs) as process:
/usr/lib/python3.10/subprocess.py:969: in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Popen: returncode: 255 args: ['/usr/bin/false']>
args = ['/usr/bin/false'], executable = b'/usr/bin/false', preexec_fn = None
close_fds = True, pass_fds = (), cwd = None, env = None, startupinfo = None
creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = 11
c2pwrite = 12, errread = 13, errwrite = 14, restore_signals = True, gid = None
gids = None, uid = None, umask = -1, start_new_session = False

    def _execute_child(self, args, executable, preexec_fn, close_fds,
                       pass_fds, cwd, env,
                       startupinfo, creationflags, shell,
                       p2cread, p2cwrite,
                       c2pread, c2pwrite,
                       errread, errwrite,
                       restore_signals,
                       gid, gids, uid, umask,
                       start_new_session):
        """Execute program (POSIX version)"""
    
        if isinstance(args, (str, bytes)):
            args = [args]
        elif isinstance(args, os.PathLike):
            if shell:
                raise TypeError('path-like args is not allowed when '
                                'shell is true')
            args = [args]
        else:
            args = list(args)
    
        if shell:
            # On Android the default shell is at '/system/bin/sh'.
            unix_shell = ('/system/bin/sh' if
                      hasattr(sys, 'getandroidapilevel') else '/bin/sh')
            args = [unix_shell, "-c"] + args
            if executable:
                args[0] = executable
    
        if executable is None:
            executable = args[0]
    
        sys.audit("subprocess.Popen", executable, args, cwd, env)
    
        if (_USE_POSIX_SPAWN
                and os.path.dirname(executable)
                and preexec_fn is None
                and not close_fds
                and not pass_fds
                and cwd is None
                and (p2cread == -1 or p2cread > 2)
                and (c2pwrite == -1 or c2pwrite > 2)
                and (errwrite == -1 or errwrite > 2)
                and not start_new_session
                and gid is None
                and gids is None
                and uid is None
                and umask < 0):
            self._posix_spawn(args, executable, env, restore_signals,
                              p2cread, p2cwrite,
                              c2pread, c2pwrite,
                              errread, errwrite)
            return
    
        orig_executable = executable
    
        # For transferring possible exec failure from child to parent.
        # Data format: "exception name:hex errno:description"
        # Pickle is not used; it is complex and involves memory allocation.
        errpipe_read, errpipe_write = os.pipe()
        # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
        low_fds_to_close = []
        while errpipe_write < 3:
            low_fds_to_close.append(errpipe_write)
            errpipe_write = os.dup(errpipe_write)
        for low_fd in low_fds_to_close:
            os.close(low_fd)
        try:
            try:
                # We must avoid complex work that could involve
                # malloc or free in the child process to avoid
                # potential deadlocks, thus we do all this here.
                # and pass it to fork_exec()
    
                if env is not None:
                    env_list = []
                    for k, v in env.items():
                        k = os.fsencode(k)
                        if b'=' in k:
                            raise ValueError("illegal environment variable 
name")
                        env_list.append(k + b'=' + os.fsencode(v))
                else:
                    env_list = None  # Use execv instead of execve.
                executable = os.fsencode(executable)
                if os.path.dirname(executable):
                    executable_list = (executable,)
                else:
                    # This matches the behavior of os._execvpe().
                    executable_list = tuple(
                        os.path.join(os.fsencode(dir), executable)
                        for dir in os.get_exec_path(env))
                fds_to_keep = set(pass_fds)
                fds_to_keep.add(errpipe_write)
                self.pid = _posixsubprocess.fork_exec(
                        args, executable_list,
                        close_fds, tuple(sorted(map(int, fds_to_keep))),
                        cwd, env_list,
                        p2cread, p2cwrite, c2pread, c2pwrite,
                        errread, errwrite,
                        errpipe_read, errpipe_write,
                        restore_signals, start_new_session,
                        gid, gids, uid, umask,
                        preexec_fn)
                self._child_created = True
            finally:
                # be sure the FD is closed no matter what
                os.close(errpipe_write)
    
            self._close_pipe_fds(p2cread, p2cwrite,
                                 c2pread, c2pwrite,
                                 errread, errwrite)
    
            # Wait for exec to fail or succeed; possibly raising an
            # exception (limited in size)
            errpipe_data = bytearray()
            while True:
                part = os.read(errpipe_read, 50000)
                errpipe_data += part
                if not part or len(errpipe_data) > 50000:
                    break
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_read)
    
        if errpipe_data:
            try:
                pid, sts = os.waitpid(self.pid, 0)
                if pid == self.pid:
                    self._handle_exitstatus(sts)
                else:
                    self.returncode = sys.maxsize
            except ChildProcessError:
                pass
    
            try:
                exception_name, hex_errno, err_msg = (
                        errpipe_data.split(b':', 2))
                # The encoding here should match the encoding
                # written in by the subprocess implementations
                # like _posixsubprocess
                err_msg = err_msg.decode()
            except ValueError:
                exception_name = b'SubprocessError'
                hex_errno = b'0'
                err_msg = 'Bad exception data from child: {!r}'.format(
                              bytes(errpipe_data))
            child_exception_type = getattr(
                    builtins, exception_name.decode('ascii'),
                    SubprocessError)
            if issubclass(child_exception_type, OSError) and hex_errno:
                errno_num = int(hex_errno, 16)
                child_exec_never_called = (err_msg == "noexec")
                if child_exec_never_called:
                    err_msg = ""
                    # The error must be from chdir(cwd).
                    err_filename = cwd
                else:
                    err_filename = orig_executable
                if errno_num != 0:
                    err_msg = os.strerror(errno_num)
>               raise child_exception_type(errno_num, err_msg, err_filename)
E               FileNotFoundError: [Errno 2] No such file or directory: 
'/usr/bin/false'

/usr/lib/python3.10/subprocess.py:1845: FileNotFoundError
=========================== short test summary info ============================
FAILED tests/unit/test_config.py::test_from_helper_subprocess_error_raises_error
=================== 1 failed, 509 passed, 3 skipped in 5.91s ===================
make[1]: *** [debian/rules:27: override_dh_auto_test] Error 1

--- End Message ---
--- Begin Message ---
Source: python-gitlab
Source-Version: 1:3.12.0-1
Done: Federico Ceratto <feder...@debian.org>

We believe that the bug you reported is fixed in the latest version of
python-gitlab, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1022...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Federico Ceratto <feder...@debian.org> (supplier of updated python-gitlab 
package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sat, 03 Dec 2022 15:01:16 +0000
Source: python-gitlab
Architecture: source
Version: 1:3.12.0-1
Distribution: unstable
Urgency: medium
Maintainer: Federico Ceratto <feder...@debian.org>
Changed-By: Federico Ceratto <feder...@debian.org>
Closes: 1022024
Changes:
 python-gitlab (1:3.12.0-1) unstable; urgency=medium
 .
   * New upstream release
   * Use false instead of /usr/bin/false (Closes: #1022024)
     Thanks to Andrey Skvortsov
Checksums-Sha1:
 b1627f8ea497723f4c6182d080f7020ad9218030 2298 python-gitlab_3.12.0-1.dsc
 17e6c44e906722dc5c391861904b5a4ad1d27f97 259322 
python-gitlab_3.12.0.orig.tar.gz
 f65ba98537c7d6dd400384d4791d22cbe1476234 5156 
python-gitlab_3.12.0-1.debian.tar.xz
 f72f1615e1fbdb4685599fb155a8858c038be6f4 9021 
python-gitlab_3.12.0-1_amd64.buildinfo
Checksums-Sha256:
 4f662a0b32bf19e919ddfd7dfaca1e74014e10e818cbcdc9207605ef50ed6e1f 2298 
python-gitlab_3.12.0-1.dsc
 7ccbf2731bd206e8258b9fef208fd82b21f8771d268a17771b51f66eb3a36f2b 259322 
python-gitlab_3.12.0.orig.tar.gz
 0a02c93fb04fa2856557d037bc1d5d7690fa4bcf36df4ebfe0bbcdeb498421f5 5156 
python-gitlab_3.12.0-1.debian.tar.xz
 d619b50921bd0b07aeb84d8bedae46f8c45394ff15136402460034cbd694f987 9021 
python-gitlab_3.12.0-1_amd64.buildinfo
Files:
 ecaaa48313cf46902afd43a83e158e72 2298 python optional 
python-gitlab_3.12.0-1.dsc
 9e091f6a71bed47f6cbcf5e2a0253f89 259322 python optional 
python-gitlab_3.12.0.orig.tar.gz
 2374c12a1c003ec41f6d633ac26bca4a 5156 python optional 
python-gitlab_3.12.0-1.debian.tar.xz
 e971e53d490995c68874ed25757ac396 9021 python optional 
python-gitlab_3.12.0-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfKfd+zM5IUCMbyuWbzG8RPUXfaoFAmOLZg8ACgkQbzG8RPUX
farIcQ/+N9uXOSGtkrjVmQUKgLHR3Cp+PNcnxNji3ICB+iblv36ni71ywAyI5Do/
Z/v46h+rY2TtzKms9b8aZJhoFme5Xg5S/YW045eZc1GLgw8/8T6+oz00NghsR4tq
AiNgeTPw7XySynez+D3Pip9K8mkaPE75OYJdp5XzArJGmlqOqWoxPnLkvLdIC8Rg
/BfcLN9jxtyzDTvIdngdaQ8CyuXWXyjvnA8LwiuSXacOD77EN0my0tYcm1JP8hKB
SYEzkQKtu9ZwVl07ZwHZbkeoQwvnirhdobhnOnhYOHjQ+gbL+JFuTX8yDj1vOwpF
ERIJsM3I6uYk4p37XEYZWpbIV0lcwKfQQeiJME1Yhy+ugtCafuj0ZqN/v0WStwlu
7LYl79W3luY9hHELtve3YayDWM/g0SbipgQ4Yp5ELzcDp9cKeQkDys0f20s44lAC
MGSo/ouY0JN0R50cg7R4ETXNcZq68DMGxv3ZKZhH2RrE/7qRSasTSZOchQt2+E54
XzhfuTL/xT/jjDO8cqPVe+MuHfYXZA4KyV08QP2jW+v8wYaQMrQVi3/TEWQ02fja
BomDHiI0rDTelVXpeEsbBLUc/du2umuH8wwlwWShUm3T30Eu46UIpf5fskvpaGgH
nxGA1AQWgWhObtGNpdmGDarrRG7r9aDfFPRn/1y6OsX3tfay/Ss=
=9Dcf
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to