==> Building on mausholdiv ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/b4 ./ .SRCINFO 959 100% 0.00kB/s 0:00:00 959 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8) .nvchecker.toml 108 100% 105.47kB/s 0:00:00 108 100% 105.47kB/s 0:00:00 (xfr#2, to-chk=5/8) PKGBUILD 1,670 100% 1.59MB/s 0:00:00 1,670 100% 1.59MB/s 0:00:00 (xfr#3, to-chk=4/8) b4-0.14.2-2.log 486 100% 474.61kB/s 0:00:00 486 100% 474.61kB/s 0:00:00 (xfr#4, to-chk=3/8) keys/ keys/pgp/ keys/pgp/DE0E66E32F1FDD0902666B96E63EDCA9329DD07E.asc 23,995 100% 22.88MB/s 0:00:00 23,995 100% 22.88MB/s 0:00:00 (xfr#5, to-chk=0/8) sent 19,653 bytes received 160 bytes 39,626.00 bytes/sec total size is 26,929 speedup is 1.36 ==> Ensuring required PGP keys are present...  -> Checking for DE0E66E32F1FDD0902666B96E63EDCA9329DD07E... ==> Running extra-riscv64-build -- -d /home/felix/packages/riscv64-pkg-cache:/var/cache/pacman/pkg -l root1 on remote host... ]2;🔵 Container arch-nspawn-1609170 on mausholdiv.felixc.at[?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [root1]...done ==> Making package: b4 0.14.2-2 (Wed Dec 25 14:53:50 2024) ==> Retrieving sources...  -> Downloading b4-0.14.2.tar.xz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 221k 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 14 221k 14 32768 0 0 7435 0 0:00:30 0:00:04 0:00:26 7435 36 221k 36 81902 0 0 15250 0 0:00:14 0:00:05 0:00:09 16269 100 221k 100 221k 0 0 40379 0 0:00:05 0:00:05 --:--:-- 57148  -> Downloading b4-0.14.2.tar.sign... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 381 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 381 100 381 0 0 493 0 --:--:-- --:--:-- --:--:-- 493 ==> Validating source files with sha256sums... b4-0.14.2.tar.xz ... Passed b4-0.14.2.tar.sign ... Skipped ==> Verifying source file signatures with gpg... b4-0.14.2.tar ... Passed ]2;🔵 Container arch-nspawn-1610307 on mausholdiv.felixc.at==> Making package: b4 0.14.2-2 (Wed Dec 25 14:54:16 2024) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (14) New Version Net Change Download Size extra/git 2.47.1-1 27.20 MiB extra/libsodium 1.0.20-1 0.44 MiB 0.16 MiB extra/perl-error 0.17029-7 0.04 MiB extra/perl-mailtools 2.22-1 0.10 MiB extra/perl-timedate 2.33-7 0.08 MiB extra/python-cffi 1.17.1-2 1.35 MiB extra/python-charset-normalizer 3.4.0-5 0.44 MiB 0.09 MiB extra/python-idna 3.10-2 0.88 MiB 0.10 MiB extra/python-pycparser 2.22-3 1.69 MiB extra/python-pynacl 1.5.0-3 0.80 MiB 0.10 MiB extra/python-urllib3 1.26.20-4 1.27 MiB 0.24 MiB extra/git-filter-repo 2.47.0-2 0.77 MiB 0.17 MiB extra/patatt 0.6.3-4 0.14 MiB 0.05 MiB extra/python-requests 2.32.3-4 0.60 MiB 0.12 MiB Total Download Size: 1.03 MiB Total Installed Size: 35.81 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-urllib3-1.26.20-4-any downloading... git-filter-repo-2.47.0-2-any downloading... libsodium-1.0.20-1-riscv64 downloading... python-requests-2.32.3-4-any downloading... python-pynacl-1.5.0-3-riscv64 downloading... python-idna-3.10-2-any downloading... python-charset-normalizer-3.4.0-5-any downloading... patatt-0.6.3-4-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-charset-normalizer... installing python-idna... installing python-urllib3... Optional dependencies for python-urllib3 python-brotli: Brotli support python-certifi: security support python-cryptography: security support python-idna: security support [installed] python-pyopenssl: security support python-pysocks: SOCKS support installing python-requests... Optional dependencies for python-requests python-chardet: alternative character encoding library python-pysocks: SOCKS proxy support installing perl-error... installing perl-timedate... installing perl-mailtools... installing git... Optional dependencies for git tk: gitk and git gui openssh: ssh transport and crypto perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-mediawiki-api: git mediawiki support perl-datetime-format-iso8601: git mediawiki support perl-lwp-protocol-https: git mediawiki https support perl-cgi: gitweb (web interface) support python: git svn & git p4 [installed] subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] installing git-filter-repo... installing libsodium... installing python-pycparser... installing python-cffi... Optional dependencies for python-cffi python-setuptools: "limited api" version checking in cffi.setuptools_ext installing python-pynacl... installing patatt... :: Running post-transaction hooks... (1/4) Creating system user accounts... Creating group 'git' with GID 972. Creating user 'git' (git daemon user) with UID 972 and GID 972. (2/4) Reloading system manager configuration... Skipped: Current root is not booted. (3/4) Arming ConditionNeedsUpdate... (4/4) Warn about old perl modules [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (18) New Version Net Change Download Size extra/python-autocommand 2.2.2-7 0.08 MiB extra/python-iniconfig 2.0.0-6 0.04 MiB extra/python-jaraco.collections 5.0.1-2 0.10 MiB extra/python-jaraco.context 5.3.0-3 0.04 MiB extra/python-jaraco.functools 4.1.0-1 0.07 MiB extra/python-jaraco.text 4.0.0-2 0.08 MiB extra/python-more-itertools 10.5.0-1 0.64 MiB extra/python-packaging 24.2-3 0.66 MiB extra/python-platformdirs 4.3.6-2 0.24 MiB extra/python-pluggy 1.5.0-3 0.20 MiB extra/python-pyproject-hooks 1.2.0-3 0.10 MiB extra/python-build 1.2.2-3 0.20 MiB extra/python-docutils 1:0.21.2-3 5.68 MiB 0.90 MiB extra/python-installer 0.7.0-10 0.17 MiB extra/python-pytest 1:8.3.4-1 3.92 MiB extra/python-setuptools 1:75.2.0-4 8.05 MiB extra/python-shtab 1.7.1-3 0.13 MiB 0.03 MiB extra/python-wheel 0.45.0-3 0.28 MiB Total Download Size: 0.93 MiB Total Installed Size: 20.70 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-docutils-1:0.21.2-3-any downloading... python-shtab-1.7.1-3-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-more-itertools... installing python-jaraco.functools... installing python-jaraco.context... installing python-autocommand... installing python-jaraco.text... Optional dependencies for python-jaraco.text python-inflect: for show-newlines script installing python-jaraco.collections... installing python-packaging... installing python-platformdirs... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures python-setuptools: for legacy bdist_wheel subcommand [pending] installing python-setuptools... installing python-pyproject-hooks... installing python-build... Optional dependencies for python-build python-pip: to use as the Python package installer (default) python-uv: to use as the Python package installer python-virtualenv: to use virtualenv for build isolation installing python-installer... installing python-docutils... Optional dependencies for python-docutils python-myst-parser: to parse input in "Markdown" (CommonMark) format python-pillow: for some image manipulation operations python-pygments: for syntax highlighting of code directives and roles installing python-shtab... installing python-iniconfig... installing python-pluggy... installing python-pytest... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... [?25h==> Retrieving sources...  -> Found b4-0.14.2.tar.xz  -> Found b4-0.14.2.tar.sign ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Extracting b4-0.14.2.tar.xz with bsdtar ==> Starting build()... * Getting build dependencies for wheel... running egg_info creating src/b4.egg-info writing src/b4.egg-info/PKG-INFO writing dependency_links to src/b4.egg-info/dependency_links.txt writing entry points to src/b4.egg-info/entry_points.txt writing requirements to src/b4.egg-info/requires.txt writing top-level names to src/b4.egg-info/top_level.txt writing manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'src/tests' adding license file 'COPYING' writing manifest file 'src/b4.egg-info/SOURCES.txt' * Building wheel... running bdist_wheel running build running build_py creating build/lib/b4 copying src/b4/ty.py -> build/lib/b4 copying src/b4/diff.py -> build/lib/b4 copying src/b4/kr.py -> build/lib/b4 copying src/b4/__init__.py -> build/lib/b4 copying src/b4/ez.py -> build/lib/b4 copying src/b4/mbox.py -> build/lib/b4 copying src/b4/command.py -> build/lib/b4 copying src/b4/pr.py -> build/lib/b4 running egg_info writing src/b4.egg-info/PKG-INFO writing dependency_links to src/b4.egg-info/dependency_links.txt writing entry points to src/b4.egg-info/entry_points.txt writing requirements to src/b4.egg-info/requires.txt writing top-level names to src/b4.egg-info/top_level.txt reading manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'src/tests' adding license file 'COPYING' writing manifest file 'src/b4.egg-info/SOURCES.txt' creating build/lib/b4/templates copying src/b4/templates/shazam-merge-template.example -> build/lib/b4/templates copying src/b4/templates/thanks-am-template.example -> build/lib/b4/templates copying src/b4/templates/thanks-pr-template.example -> build/lib/b4/templates creating build/lib/b4/man copying src/b4/man/b4.5.rst -> build/lib/b4/man installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/b4 copying build/lib/b4/ty.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/diff.py -> build/bdist.linux-riscv64/wheel/./b4 creating build/bdist.linux-riscv64/wheel/b4/templates copying build/lib/b4/templates/thanks-pr-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/templates/shazam-merge-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/templates/thanks-am-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/kr.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/__init__.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/ez.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/mbox.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/command.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/pr.py -> build/bdist.linux-riscv64/wheel/./b4 creating build/bdist.linux-riscv64/wheel/b4/man copying build/lib/b4/man/b4.5.rst -> build/bdist.linux-riscv64/wheel/./b4/man running install_egg_info Copying src/b4.egg-info to build/bdist.linux-riscv64/wheel/./b4-0.14.2-py3.13.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/b4-0.14.2.dist-info/WHEEL creating '/build/b4/src/b4-0.14.2/dist/.tmp-eeksyhni/b4-0.14.2-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'b4/__init__.py' adding 'b4/command.py' adding 'b4/diff.py' adding 'b4/ez.py' adding 'b4/kr.py' adding 'b4/mbox.py' adding 'b4/pr.py' adding 'b4/ty.py' adding 'b4/man/b4.5.rst' adding 'b4/templates/shazam-merge-template.example' adding 'b4/templates/thanks-am-template.example' adding 'b4/templates/thanks-pr-template.example' adding 'b4-0.14.2.dist-info/COPYING' adding 'b4-0.14.2.dist-info/METADATA' adding 'b4-0.14.2.dist-info/WHEEL' adding 'b4-0.14.2.dist-info/entry_points.txt' adding 'b4-0.14.2.dist-info/top_level.txt' adding 'b4-0.14.2.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built b4-0.14.2-py3-none-any.whl ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /build/b4/src/b4-0.14.2 configfile: pyproject.toml collected 81 items test___init__.py ....................................................... [ 67%] ................... [ 91%] test_ez.py FFFF [ 96%] test_mbox.py ... [100%] =================================== FAILURES =================================== _ test_trailers[trailers-thread-with-followups-None-None-trargs0-compareargs0-trailers-thread-with-followups-b4cfg0] _ sampledir = '/build/b4/src/b4-0.14.2/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_0/repo' mboxf = 'trailers-thread-with-followups', bundlef = None, rep = None trargs = [], compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4-0.14.2/src/b4/ez.py:2859: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/b4/ez.py:1217: in update_trailers frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1196 --- _ test_trailers[trailers-thread-with-cover-followup-None-None-trargs1-compareargs1-trailers-thread-with-cover-followup-b4cfg1] _ sampledir = '/build/b4/src/b4-0.14.2/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_1/repo' mboxf = 'trailers-thread-with-cover-followup', bundlef = None, rep = None trargs = [], compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-cover-followup' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4-0.14.2/src/b4/ez.py:2859: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/b4/ez.py:1217: in update_trailers frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1196 --- _ test_trailers[trailers-thread-with-followups-None-rep2-trargs2-compareargs2-trailers-thread-with-followups-b4cfg2] _ sampledir = '/build/b4/src/b4-0.14.2/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_2/repo' mboxf = 'trailers-thread-with-followups', bundlef = None rep = (b'vivendum', b'addendum'), trargs = [] compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4-0.14.2/src/b4/ez.py:2859: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/b4/ez.py:1217: in update_trailers frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1196 --- _ test_trailers[trailers-thread-with-followups-trailers-with-tripledash-None-trargs3-compareargs3-trailers-thread-with-followups-and-tripledash-None] _ sampledir = '/build/b4/src/b4-0.14.2/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_3/repo' mboxf = 'trailers-thread-with-followups', bundlef = 'trailers-with-tripledash' rep = None, trargs = [] compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups-and-tripledash', b4cfg = None @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4-0.14.2/src/b4/ez.py:2859: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4-0.14.2/src/b4/ez.py:1217: in update_trailers frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:ez.py:1196 --- =========================== short test summary info ============================ FAILED test_ez.py::test_trailers[trailers-thread-with-followups-None-None-trargs0-compareargs0-trailers-thread-with-followups-b4cfg0] FAILED test_ez.py::test_trailers[trailers-thread-with-cover-followup-None-None-trargs1-compareargs1-trailers-thread-with-cover-followup-b4cfg1] FAILED test_ez.py::test_trailers[trailers-thread-with-followups-None-rep2-trargs2-compareargs2-trailers-thread-with-followups-b4cfg2] FAILED test_ez.py::test_trailers[trailers-thread-with-followups-trailers-with-tripledash-None-trargs3-compareargs3-trailers-thread-with-followups-and-tripledash-None] ======================== 4 failed, 77 passed in 13.54s ========================= ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/root1/build [?25h[?25hreceiving incremental file list b4-0.14.2-2-riscv64-build.log b4-0.14.2-2-riscv64-check.log sent 62 bytes received 3,088 bytes 6,300.00 bytes/sec total size is 24,811 speedup is 7.88