Source: ostree-push
Version: 1.1.0-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20240313 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> =========================== short test summary info 
> ============================
> ERROR tests/test_full.py::test_no_commits - tests.util.OTPushTestError: 
> Could...
> ERROR tests/test_full.py::test_basic - tests.util.OTPushTestError: Could not 
> ...
> ERROR tests/test_full.py::test_dry_run - tests.util.OTPushTestError: Could 
> no...
> ERROR tests/test_full.py::test_scp_dest - tests.util.OTPushTestError: Could 
> n...
> ERROR tests/test_full.py::test_command_abspath - tests.util.OTPushTestError: 
> ...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_socket_exists - 
> tests.util...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_master_non_context - 
> tests...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_master_context - 
> tests.uti...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_forward_port - 
> tests.util....
> ERROR tests/test_push.py::TestSSHMultiplexer::test_run - 
> tests.util.OTPushTes...
> ERROR tests/test_push.py::TestPushRefs::test_no_refs - 
> tests.util.OTPushTestE...
> ERROR tests/test_push.py::TestPushRefs::test_refs - 
> tests.util.OTPushTestErro...
> ERROR tests/test_push.py::TestPushRefs::test_missing_ref - 
> tests.util.OTPushT...
> ERROR tests/test_push.py::TestPushRefs::test_summary - 
> tests.util.OTPushTestE...
> ERROR tests/test_push.py::TestPushRefs::test_dry_run - 
> tests.util.OTPushTestE...
> ERROR tests/test_sshd.py::test_basic - tests.util.OTPushTestError: Could not 
> ...
> ============ 74 passed, 4 skipped, 19 warnings, 16 errors in 5.91s 
> =============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ostree-push/build; python3.12 -m 
> pytest tests
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build; python3.11 -m 
> pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.8, pytest-8.0.2, pluggy-1.4.0 -- 
> /usr/bin/python3.11
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>
> configfile: pytest.ini
> collecting ... collected 94 items
> 
> tests/test_full.py::test_no_commits ERROR                                [  
> 1%]
> tests/test_full.py::test_basic ERROR                                     [  
> 2%]
> tests/test_full.py::test_dry_run ERROR                                   [  
> 3%]
> tests/test_full.py::test_scp_dest ERROR                                  [  
> 4%]
> tests/test_full.py::test_command_abspath ERROR                           [  
> 5%]
> tests/test_push.py::TestRepoServer::test_missing PASSED                  [  
> 6%]
> tests/test_push.py::TestRepoServer::test_non_context PASSED              [  
> 7%]
> tests/test_push.py::TestRepoServer::test_context PASSED                  [  
> 8%]
> tests/test_push.py::TestRepoServer::test_pull PASSED                     [  
> 9%]
> tests/test_push.py::TestSSHMultiplexer::test_socket_exists ERROR         [ 
> 10%]
> tests/test_push.py::TestSSHMultiplexer::test_master_non_context ERROR    [ 
> 11%]
> tests/test_push.py::TestSSHMultiplexer::test_master_context ERROR        [ 
> 12%]
> tests/test_push.py::TestSSHMultiplexer::test_forward_port ERROR          [ 
> 13%]
> tests/test_push.py::TestSSHMultiplexer::test_run ERROR                   [ 
> 14%]
> tests/test_push.py::TestPushRefs::test_no_refs ERROR                     [ 
> 15%]
> tests/test_push.py::TestPushRefs::test_refs ERROR                        [ 
> 17%]
> tests/test_push.py::TestPushRefs::test_missing_ref ERROR                 [ 
> 18%]
> tests/test_push.py::TestPushRefs::test_summary ERROR                     [ 
> 19%]
> tests/test_push.py::TestPushRefs::test_dry_run ERROR                     [ 
> 20%]
> tests/test_push.py::TestParseDest::test_bad_scheme PASSED                [ 
> 21%]
> tests/test_push.py::TestParseDest::test_missing_repo PASSED              [ 
> 22%]
> tests/test_push.py::TestParseDest::test_empty_dest PASSED                [ 
> 23%]
> tests/test_push.py::TestParseDest::test_missing_host PASSED              [ 
> 24%]
> tests/test_push.py::TestParseDest::test_invalid_host PASSED              [ 
> 25%]
> tests/test_push.py::TestParseDest::test_invalid_port PASSED              [ 
> 26%]
> tests/test_push.py::TestParseDest::test_good_dest PASSED                 [ 
> 27%]
> tests/test_push.py::TestArgParser::test_no_dest PASSED                   [ 
> 28%]
> tests/test_push.py::TestArgParser::test_defaults PASSED                  [ 
> 29%]
> tests/test_push.py::TestArgParser::test_dest PASSED                      [ 
> 30%]
> tests/test_push.py::TestArgParser::test_refs PASSED                      [ 
> 31%]
> tests/test_push.py::TestArgParser::test_port PASSED                      [ 
> 32%]
> tests/test_push.py::TestArgParser::test_port_and_dest_port PASSED        [ 
> 34%]
> tests/test_push.py::TestArgParser::test_dry_run PASSED                   [ 
> 35%]
> tests/test_push.py::TestArgParser::test_log_level PASSED                 [ 
> 36%]
> tests/test_push.py::TestArgParser::test_repo PASSED                      [ 
> 37%]
> tests/test_push.py::TestArgParser::test_command PASSED                   [ 
> 38%]
> tests/test_push.py::TestArgParser::test_ssh_options PASSED               [ 
> 39%]
> tests/test_receive.py::TestReceiveRepo::test_cleanup PASSED              [ 
> 40%]
> tests/test_receive.py::TestReceiveRepo::test_missing_repo PASSED         [ 
> 41%]
> tests/test_receive.py::TestReceiveRepo::test_get_commit_timestamp PASSED [ 
> 42%]
> tests/test_receive.py::TestReceiveRepo::test_is_flatpak_repo PASSED      [ 
> 43%]
> tests/test_receive.py::TestReceiveRepo::test_pull_commits PASSED         [ 
> 44%]
> tests/test_receive.py::TestReceiveRepo::test_copy_commit PASSED          [ 
> 45%]
> tests/test_receive.py::TestReceiveRepo::test_receive PASSED              [ 
> 46%]
> tests/test_receive.py::TestReceiveRepo::test_receive_update PASSED       [ 
> 47%]
> tests/test_receive.py::TestReceiveRepo::test_receive_update_hook PASSED  [ 
> 48%]
> tests/test_receive.py::TestReceiveRepo::test_receive_gpg_sign PASSED     [ 
> 50%]
> tests/test_receive.py::TestReceiveRepo::test_receive_gpg_verify PASSED   [ 
> 51%]
> tests/test_receive.py::TestReceiveRepo::test_receive_ed25519_sign SKIPPED [ 
> 52%]
> tests/test_receive.py::TestReceiveRepo::test_receive_ed25519_verify SKIPPED [ 
> 53%]
> tests/test_receive.py::TestReceiveRepo::test_update_repo_metadata PASSED [ 
> 54%]
> tests/test_receive.py::TestReceiveRepo::test_update_repo_metadata_flatpak 
> PASSED [ 55%]
> tests/test_receive.py::TestReceiveRepo::test_update_repo_metadata_gpg_sign 
> PASSED [ 56%]
> tests/test_receive.py::TestReceiveRepo::test_update_repo_metadata_ed25519_sign
>  SKIPPED [ 57%]
> tests/test_receive.py::TestReceiveRepo::test_update_repo_hook PASSED     [ 
> 58%]
> tests/test_receive.py::TestReceiveRepo::test_receive_missing PASSED      [ 
> 59%]
> tests/test_receive.py::TestReceiveRepo::test_receive_specific PASSED     [ 
> 60%]
> tests/test_receive.py::TestReceiveRepo::test_receive_all PASSED          [ 
> 61%]
> tests/test_receive.py::TestReceiveRepo::test_receive_dry_run PASSED      [ 
> 62%]
> tests/test_receive.py::TestReceiveRepo::test_receive_force PASSED        [ 
> 63%]
> tests/test_receive.py::TestReceiver::test_default_config PASSED          [ 
> 64%]
> tests/test_receive.py::TestReceiver::test_receive PASSED                 [ 
> 65%]
> tests/test_receive.py::TestRepoConfig::test_defaults PASSED              [ 
> 67%]
> tests/test_receive.py::TestRepoConfig::test_required PASSED              [ 
> 68%]
> tests/test_receive.py::TestConfig::test_defaults PASSED                  [ 
> 69%]
> tests/test_receive.py::TestConfig::test_invalid PASSED                   [ 
> 70%]
> tests/test_receive.py::TestConfig::test_default_paths PASSED             [ 
> 71%]
> tests/test_receive.py::TestConfig::test_load_valid PASSED                [ 
> 72%]
> tests/test_receive.py::TestConfig::test_load_none PASSED                 [ 
> 73%]
> tests/test_receive.py::TestConfig::test_load_empty PASSED                [ 
> 74%]
> tests/test_receive.py::TestConfig::test_load_missing PASSED              [ 
> 75%]
> tests/test_receive.py::TestConfig::test_load_multiple PASSED             [ 
> 76%]
> tests/test_receive.py::TestConfig::test_load_unknown PASSED              [ 
> 77%]
> tests/test_receive.py::TestConfig::test_load_invalid PASSED              [ 
> 78%]
> tests/test_receive.py::TestConfig::test_load_env PASSED                  [ 
> 79%]
> tests/test_receive.py::TestConfig::test_load_args PASSED                 [ 
> 80%]
> tests/test_receive.py::TestConfig::test_load_args_invalid PASSED         [ 
> 81%]
> tests/test_receive.py::TestConfig::test_load_conf_and_args PASSED        [ 
> 82%]
> tests/test_receive.py::TestConfig::test_repo_config PASSED               [ 
> 84%]
> tests/test_receive.py::TestArgParser::test_no_repo PASSED                [ 
> 85%]
> tests/test_receive.py::TestArgParser::test_no_url PASSED                 [ 
> 86%]
> tests/test_receive.py::TestArgParser::test_defaults PASSED               [ 
> 87%]
> tests/test_receive.py::TestArgParser::test_refs PASSED                   [ 
> 88%]
> tests/test_receive.py::TestArgParser::test_update PASSED                 [ 
> 89%]
> tests/test_receive.py::TestArgParser::test_dry_run PASSED                [ 
> 90%]
> tests/test_receive.py::TestArgParser::test_force PASSED                  [ 
> 91%]
> tests/test_receive.py::TestArgParser::test_log_level PASSED              [ 
> 92%]
> tests/test_receive_shell.py::test_command_args PASSED                    [ 
> 93%]
> tests/test_receive_shell.py::test_auto_path PASSED                       [ 
> 94%]
> tests/test_receive_shell.py::test_no_interactive PASSED                  [ 
> 95%]
> tests/test_receive_shell.py::test_wrong_args PASSED                      [ 
> 96%]
> tests/test_receive_shell.py::test_bad_command PASSED                     [ 
> 97%]
> tests/test_receive_shell.py::test_exec_errors SKIPPED (cannot test c...) [ 
> 98%]
> tests/test_sshd.py::test_basic ERROR                                     
> [100%]
> 
> ==================================== ERRORS 
> ====================================
> ______________________ ERROR at setup of test_no_commits 
> _______________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ---------------------------- Captured stderr setup 
> -----------------------------
> Server listening on 127.0.0.1 port 32912.
> 
> Server listening on 127.0.0.1 port 45749.
> 
> ------------------------------ Captured log setup 
> ------------------------------
> DEBUG    tests.util:util.py:200 Found sshd /usr/sbin/sshd
> DEBUG    tests.util:util.py:231 sshd version line: OpenSSH_9.6p1 Debian-5, 
> OpenSSL 3.1.5 30 Jan 2024
> DEBUG    tests.util:util.py:259 Detected OpenSSH sshd version 9.6
> DEBUG    tests.util:util.py:336 SSH server args: /usr/sbin/sshd -D -e -f 
> /tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config -h 
> /tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key -o 
> AuthorizedKeysFile=/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub -o 
> AllowUsers=user42 -o PermitRootLogin=yes -o 
> SetEnv=PATH="/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/scripts:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ostree-push/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
>  
> PYTHONPATH="/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build:/<<PKGBUILDDIR>>/debian/python3-ostree-push/usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build"
> DEBUG    tests.util:util.py:345 Starting /usr/sbin/sshd with port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:286 Could not connect to port 32912
> DEBUG    tests.util:util.py:289 Could not connect in 5 attempts
> DEBUG    tests.util:util.py:345 Starting /usr/sbin/sshd with port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:286 Could not connect to port 45749
> DEBUG    tests.util:util.py:289 Could not connect in 5 attempts
> DEBUG    tests.util:util.py:345 Starting /usr/sbin/sshd with port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:286 Could not connect to port 40901
> DEBUG    tests.util:util.py:289 Could not connect in 5 attempts
> DEBUG    tests.util:util.py:345 Starting /usr/sbin/sshd with port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:286 Could not connect to port 35963
> DEBUG    tests.util:util.py:289 Could not connect in 5 attempts
> DEBUG    tests.util:util.py:345 Starting /usr/sbin/sshd with port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:286 Could not connect to port 43709
> DEBUG    tests.util:util.py:289 Could not connect in 5 attempts
> DEBUG    tests.util:util.py:357 Stopping sshd process 357317
> _________________________ ERROR at setup of test_basic 
> _________________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ________________________ ERROR at setup of test_dry_run 
> ________________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _______________________ ERROR at setup of test_scp_dest 
> ________________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ____________________ ERROR at setup of test_command_abspath 
> ____________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ___________ ERROR at setup of TestSSHMultiplexer.test_socket_exists 
> ____________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _________ ERROR at setup of TestSSHMultiplexer.test_master_non_context 
> _________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ___________ ERROR at setup of TestSSHMultiplexer.test_master_context 
> ___________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ____________ ERROR at setup of TestSSHMultiplexer.test_forward_port 
> ____________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ________________ ERROR at setup of TestSSHMultiplexer.test_run 
> _________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _________________ ERROR at setup of TestPushRefs.test_no_refs 
> __________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> ___________________ ERROR at setup of TestPushRefs.test_refs 
> ___________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _______________ ERROR at setup of TestPushRefs.test_missing_ref 
> ________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _________________ ERROR at setup of TestPushRefs.test_summary 
> __________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _________________ ERROR at setup of TestPushRefs.test_dry_run 
> __________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> _________________________ ERROR at setup of test_basic 
> _________________________
> 
> ssh_datadir = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0')
> cli_env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @pytest.fixture(scope='session')
>     def sshd(ssh_datadir, cli_env_vars):
>         sshd_config = ssh_datadir / 'sshd_config'
>         host_key = ssh_datadir / 'host_rsa_key'
>         authorized_keys = ssh_datadir / 'id_rsa.pub'
> >       with ssh_server(sshd_config, host_key, authorized_keys, cli_env_vars) 
> > \
>              as server_info:
> 
> tests/conftest.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3.11/contextlib.py:137: in __enter__
>     return next(self.gen)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sshd_config = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/sshd_config')
> host_key = PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/host_rsa_key')
> authorized_keys = 
> PosixPath('/tmp/pytest-of-user42/pytest-5/ssh-data0/id_rsa.pub')
> env_vars = {'PATH': 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build/tests:/build/ostree-pus...usr/lib/python3.11/dist-packages:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build'}
> 
>     @contextmanager
>     def ssh_server(sshd_config, host_key, authorized_keys, env_vars=None):
>         # Running sshd requires an absolute path
>         sshd = get_sshd()
>         if not sshd:
>             raise OTPushTestError('Could not find sshd')
>         if not have_required_sshd(sshd):
>             raise OTPushTestError(f'{sshd} is not the required version')
>     
>         # Build a SetEnv option value from the provided environment variables.
>         env_vars = env_vars or {}
>         setenv = ' '.join([
>             f'{var}="{value}"'
>             for var, value in env_vars.items()
>         ])
>     
>         cmd = [
>             sshd,
>             # Don't fork
>             '-D',
>             # Write logs to stderr
>             '-e',
>             # Config file
>             '-f', str(sshd_config),
>             # Host key file
>             '-h', str(host_key),
>             # Authorized keys file
>             '-o', f'AuthorizedKeysFile={authorized_keys}',
>             # Only allow running user
>             '-o', f'AllowUsers={getpass.getuser()}',
>             # Allow root login
>             '-o', 'PermitRootLogin=yes',
>             # Set environment variables for the process
>             '-o', f'SetEnv={setenv}',
>         ]
>         logger.debug('SSH server args: %s', ' '.join(cmd))
>     
>         # Loop a few times trying to find an open ephemeral port
>         with open('/proc/sys/net/ipv4/ip_local_port_range') as f:
>             start_port, stop_port = map(int, f.readline().split())
>         proc = None
>         try:
>             for _ in range(5):
>                 port = random.randrange(start_port, stop_port)
>                 logger.debug('Starting %s with port %d', sshd, port)
>                 proc = subprocess.Popen(cmd + ['-p', str(port)])
>                 server_id = get_ssh_server_id(('127.0.0.1', port))
>                 if server_id.startswith('SSH-2.0-'):
>                     logger.info('%s started on port %d', sshd, port)
>                     break
>             else:
> >               raise OTPushTestError(f'Could not start {sshd}')
> E               tests.util.OTPushTestError: Could not start /usr/sbin/sshd
> 
> tests/util.py:352: OTPushTestError
> =========================== short test summary info 
> ============================
> ERROR tests/test_full.py::test_no_commits - tests.util.OTPushTestError: 
> Could...
> ERROR tests/test_full.py::test_basic - tests.util.OTPushTestError: Could not 
> ...
> ERROR tests/test_full.py::test_dry_run - tests.util.OTPushTestError: Could 
> no...
> ERROR tests/test_full.py::test_scp_dest - tests.util.OTPushTestError: Could 
> n...
> ERROR tests/test_full.py::test_command_abspath - tests.util.OTPushTestError: 
> ...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_socket_exists - 
> tests.util...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_master_non_context - 
> tests...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_master_context - 
> tests.uti...
> ERROR tests/test_push.py::TestSSHMultiplexer::test_forward_port - 
> tests.util....
> ERROR tests/test_push.py::TestSSHMultiplexer::test_run - 
> tests.util.OTPushTes...
> ERROR tests/test_push.py::TestPushRefs::test_no_refs - 
> tests.util.OTPushTestE...
> ERROR tests/test_push.py::TestPushRefs::test_refs - 
> tests.util.OTPushTestErro...
> ERROR tests/test_push.py::TestPushRefs::test_missing_ref - 
> tests.util.OTPushT...
> ERROR tests/test_push.py::TestPushRefs::test_summary - 
> tests.util.OTPushTestE...
> ERROR tests/test_push.py::TestPushRefs::test_dry_run - 
> tests.util.OTPushTestE...
> ERROR tests/test_sshd.py::test_basic - tests.util.OTPushTestError: Could not 
> ...
> =================== 74 passed, 4 skipped, 16 errors in 5.53s 
> ===================
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ostree-push/build; python3.11 -m 
> pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 
> 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2024/03/13/ostree-push_1.1.0-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240313;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240313&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

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 mark 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