Build:
- 0
2026-01-20 17:12.39: New job: test passage.0.3.2, using opam dev
from https://github.com/ocaml/opam-repository.git#refs/pull/29255/head (fc464c2a0efc928b9aa793eed3b45709d8fba45c)
on archlinux-ocaml-5.4/amd64
To reproduce locally:
cd $(mktemp -d)
git clone --recursive "https://github.com/ocaml/opam-repository.git" && cd "opam-repository" && git fetch origin "refs/pull/29255/head" && git reset --hard fc464c2a
git fetch origin master
git merge --no-edit 10a02a697b08f6d78a6c4c2cb9a76136afc7776d
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:archlinux-ocaml-5.4@sha256:ad1f8386879f2acfe6663d408c82f660e78353c2ef0d031cd36bd32127ec3cd0
USER 1000:1000
WORKDIR /home/opam
RUN sudo ln -f /usr/bin/opam-dev /usr/bin/opam
RUN opam init --reinit -ni
RUN opam option solver=builtin-0install && opam config report
ENV OPAMDOWNLOADJOBS="1"
ENV OPAMERRLOGLEN="0"
ENV OPAMPRECISETRACKING="1"
ENV CI="true"
ENV OPAM_REPO_CI="true"
RUN rm -rf opam-repository/
COPY --chown=1000:1000 . opam-repository/
RUN opam repository set-url --strict default opam-repository/
RUN opam update --depexts || true
RUN opam pin add -k version -yn passage.0.3.2 0.3.2
RUN opam reinstall passage.0.3.2; \
res=$?; \
test "$res" != 31 && exit "$res"; \
export OPAMCLI=2.0; \
build_dir=$(opam var prefix)/.opam-switch/build; \
failed=$(ls "$build_dir"); \
partial_fails=""; \
for pkg in $failed; do \
if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"archlinux\""; then \
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
fi; \
test "$pkg" != 'passage.0.3.2' && partial_fails="$partial_fails $pkg"; \
done; \
test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
exit 1
RUN (opam reinstall --with-test passage.0.3.2) || true
RUN opam reinstall --with-test --verbose passage.0.3.2; \
res=$?; \
test "$res" != 31 && exit "$res"; \
export OPAMCLI=2.0; \
build_dir=$(opam var prefix)/.opam-switch/build; \
failed=$(ls "$build_dir"); \
partial_fails=""; \
for pkg in $failed; do \
if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"archlinux\""; then \
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
fi; \
test "$pkg" != 'passage.0.3.2' && partial_fails="$partial_fails $pkg"; \
done; \
test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
exit 1
END-OF-DOCKERFILE
docker build -f ../Dockerfile .
2026-01-20 17:12.39: Using cache hint "ocaml/opam:archlinux-ocaml-5.4@sha256:ad1f8386879f2acfe6663d408c82f660e78353c2ef0d031cd36bd32127ec3cd0-passage.0.3.2-fc464c2a0efc928b9aa793eed3b45709d8fba45c"
2026-01-20 17:12.39: Using OBuilder spec:
((from ocaml/opam:archlinux-ocaml-5.4@sha256:ad1f8386879f2acfe6663d408c82f660e78353c2ef0d031cd36bd32127ec3cd0)
(user (uid 1000) (gid 1000))
(workdir /home/opam)
(run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
(run (network host)
(shell "opam init --reinit --config .opamrc-sandbox -ni"))
(run (shell "opam option solver=builtin-0install && opam config report"))
(env OPAMDOWNLOADJOBS 1)
(env OPAMERRLOGLEN 0)
(env OPAMPRECISETRACKING 1)
(env CI true)
(env OPAM_REPO_CI true)
(run (shell "rm -rf opam-repository/"))
(copy (src .) (dst opam-repository/))
(run (shell "opam repository set-url --strict default opam-repository/"))
(run (network host)
(shell "opam update --depexts || true"))
(run (shell "opam pin add -k version -yn passage.0.3.2 0.3.2"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall passage.0.3.2;\
\n res=$?;\
\n test \"$res\" != 31 && exit \"$res\";\
\n export OPAMCLI=2.0;\
\n build_dir=$(opam var prefix)/.opam-switch/build;\
\n failed=$(ls \"$build_dir\");\
\n partial_fails=\"\";\
\n for pkg in $failed; do\
\n if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"archlinux\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'passage.0.3.2' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
(run (network host)
(shell "(opam reinstall --with-test passage.0.3.2) || true"))
(run (shell "opam reinstall --with-test --verbose passage.0.3.2;\
\n res=$?;\
\n test \"$res\" != 31 && exit \"$res\";\
\n export OPAMCLI=2.0;\
\n build_dir=$(opam var prefix)/.opam-switch/build;\
\n failed=$(ls \"$build_dir\");\
\n partial_fails=\"\";\
\n for pkg in $failed; do\
\n if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"archlinux\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'passage.0.3.2' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
)
2026-01-20 17:12.39: Waiting for resource in pool OCluster
2026-01-20 17:12.40: Waiting for worker…
2026-01-20 17:12.41: Got resource from pool OCluster
Building on eumache
All commits already cached
HEAD is now at 10a02a697b Merge pull request #29249 from panglesd/release-slipshow-v0.8.0
Updating 10a02a697b..fc464c2a0e
Fast-forward
packages/passage/passage.0.3.2/opam | 62 +++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100644 packages/passage/passage.0.3.2/opam
(from ocaml/opam:archlinux-ocaml-5.4@sha256:ad1f8386879f2acfe6663d408c82f660e78353c2ef0d031cd36bd32127ec3cd0)
2026-01-20 17:15.09 ---> using "0a87388e12ec8a63f9b7ed34ff3a79f49b645907fede506a0536a88e6e753460" from cache
/: (user (uid 1000) (gid 1000))
/: (workdir /home/opam)
/home/opam: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2026-01-20 17:15.09 ---> using "5d11bc0849cd6b7eb1fa08a28e8523c2c675d3bb0b13383717ea0eb24c82198b" from cache
/home/opam: (run (network host)
(shell "opam init --reinit --config .opamrc-sandbox -ni"))
Configuring from /home/opam/.opamrc-sandbox, then /home/opam/.opamrc, and finally from built-in defaults.
Checking for available remotes: rsync and local, git.
- you won't be able to use mercurial repositories unless you install the hg command on your system.
- you won't be able to use darcs repositories unless you install the darcs command on your system.
Continue? [Y/n] y
This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted.
You may want to back it up before going further.
Format upgrade done.
<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-01-20 17:15.09 ---> using "9202eeccfe0ced1e844e4926846dfceb4cbbe990c92d1158f60b95243064538d" from cache
/home/opam: (run (shell "opam option solver=builtin-0install && opam config report"))
Set to 'builtin-0install' the field solver in global configuration
# opam config report
# opam-version 2.5.0
# self-upgrade no
# system arch=x86_64 os=linux os-distribution=arch os-version=20260111.0.480139
# solver builtin-0install
# install-criteria -changed,-count[avoid-version,solution]
# upgrade-criteria -count[avoid-version,solution]
# jobs 71
# repositories 1 (version-controlled)
# pinned 1 (version)
# current-switch 5.4
# invariant ["ocaml-base-compiler" {>= "5.4.0"}]
# compiler-packages ocaml-base-compiler.5.4.0, ocaml-compiler.5.4.0, ocaml-options-vanilla.1
# ocaml:native true
# ocaml:native-tools true
# ocaml:native-dynlink true
# ocaml:stubsdir /home/opam/.opam/5.4/lib/ocaml/stublibs:/home/opam/.opam/5.4/lib/ocaml
# ocaml:preinstalled false
# ocaml:compiler 5.4.0
2026-01-20 17:15.09 ---> using "8e024cc97817bcf16af8ce7118b9242cb518b0087226dd48ca7336ef1fd25d1e" from cache
/home/opam: (env OPAMDOWNLOADJOBS 1)
/home/opam: (env OPAMERRLOGLEN 0)
/home/opam: (env OPAMPRECISETRACKING 1)
/home/opam: (env CI true)
/home/opam: (env OPAM_REPO_CI true)
/home/opam: (run (shell "rm -rf opam-repository/"))
2026-01-20 17:15.09 ---> using "d946ab55620d3a765b17a5355f23ada2d9db2e67b01a99d25bc8fa575f80ba52" from cache
/home/opam: (copy (src .) (dst opam-repository/))
2026-01-20 17:15.10 ---> using "9aba57139ff8efb2aa70a7568441df43a9d641eeadc91685319ea374f0d9b4ca" from cache
/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-01-20 17:15.10 ---> using "af9554e2227277ac2d82b5b6ae0560b80feafa1044289b3f339c6967eb0338f4" from cache
/home/opam: (run (network host)
(shell "opam update --depexts || true"))
+ /usr/sbin/sudo "pacman" "-Sy"
- :: Synchronizing package databases...
- core downloading...
- extra downloading...
2026-01-20 17:15.10 ---> using "df0e97f13dbf5a1b5c65a4336abf609c81c9a20f8ed7bce0306220f3820dabb4" from cache
/home/opam: (run (shell "opam pin add -k version -yn passage.0.3.2 0.3.2"))
passage is now pinned to version 0.3.2
2026-01-20 17:15.10 ---> using "7f006fa52c9c636d2b345850961493f879a4cacc3ae0b0417f95f10544241d5d" from cache
/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall passage.0.3.2;\
\n res=$?;\
\n test \"$res\" != 31 && exit \"$res\";\
\n export OPAMCLI=2.0;\
\n build_dir=$(opam var prefix)/.opam-switch/build;\
\n failed=$(ls \"$build_dir\");\
\n partial_fails=\"\";\
\n for pkg in $failed; do\
\n if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"archlinux\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'passage.0.3.2' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
passage.0.3.2 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 28 packages
∗ astring 0.8.5 [required by bos]
∗ bos 0.2.1 [required by passage]
∗ cmdliner 2.1.0 [required by passage]
∗ conf-age 1 [required by passage]
∗ dune 3.21.0 [required by passage]
∗ fileutils 0.6.6 [required by passage]
∗ fmt 0.11.0 [required by bos]
∗ fpath 0.7.3 [required by passage]
∗ gen 1.1 [required by sedlex]
∗ logs 0.10.0 [required by bos]
∗ menhir 20250912 [required by passage]
∗ menhirCST 20250912 [required by menhir]
∗ menhirLib 20250912 [required by menhir]
∗ menhirSdk 20250912 [required by menhir]
∗ ocaml-compiler-libs v0.17.0 [required by ppxlib]
∗ ocamlbuild 0.16.1 [required by bos, qrc]
∗ ocamlfind 1.9.8 [required by bos, qrc]
∗ passage 0.3.2 (pinned)
∗ ppx_derivers 1.2.1 [required by ppxlib]
∗ ppxlib 0.37.0 [required by sedlex]
∗ qrc 0.2.0 [required by passage]
∗ re 1.14.0 [required by passage]
∗ rresult 0.7.0 [required by bos]
∗ sedlex 3.7 [required by passage]
∗ seq base [required by gen]
∗ sexplib0 v0.17.0 [required by ppxlib]
∗ stdlib-shims 0.3.0 [required by ppxlib]
∗ topkg 1.1.1 [required by bos, qrc]
The following system packages will first need to be installed:
age
<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>
opam believes some required external dependencies are missing. opam can:
> 1. Run pacman to install them (may need root/sudo access)
2. Display the recommended pacman command and wait while you run it manually (e.g. in another terminal)
3. Continue anyway, and, upon success, permanently register that this external dependency is present, but not detectable
4. Abort the installation
[1/2/3/4] 1
+ /usr/sbin/sudo "pacman" "-Su" "--noconfirm" "age"
- :: Starting full system upgrade...
- resolving dependencies...
- looking for conflicting packages...
-
- Package (4) Old Version New Version Net Change Download Size
-
- core/glibc 2.42+r47+ga1d3294a5bed-1 2.42+r51+gcbf39c26b258-1 0.00 MiB 10.15 MiB
- core/pacman 7.1.0.r7.gb9f7d4a-1 7.1.0.r9.g54d9411-1 0.00 MiB 0.94 MiB
- core/pacman-mirrorlist 20251021-1 20260105-1 -0.02 MiB 0.01 MiB
- extra/age 1.3.1-1 11.49 MiB 2.29 MiB
-
- Total Download Size: 13.38 MiB
- Total Installed Size: 66.23 MiB
- Net Upgrade Size: 11.47 MiB
-
- :: Proceed with installation? [Y/n]
- :: Retrieving packages...
- glibc-2.42+r51+gcbf39c26b258-1-x86_64 downloading...
- age-1.3.1-1-x86_64 downloading...
- pacman-7.1.0.r9.g54d9411-1-x86_64 downloading...
- pacman-mirrorlist-20260105-1-any downloading...
- checking keyring...
- checking package integrity...
- loading package files...
- checking for file conflicts...
- :: Processing package changes...
- upgrading glibc...
- Generating locales...
- Generation complete.
- installing age...
- upgrading pacman-mirrorlist...
- upgrading pacman...
- :: Running post-transaction hooks...
- (1/4) Creating system user accounts...
- (2/4) Reloading system manager configuration...
- Failed to check for chroot() environment: Permission denied
- Skipped: Current root is not booted.
- (3/4) Restarting marked services...
- Failed to check for chroot() environment: Permission denied
- Skipped: Current root is not booted.
- (4/4) Arming ConditionNeedsUpdate...
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved astring.0.8.5 (cached)
⬇ retrieved bos.0.2.1 (cached)
⬇ retrieved cmdliner.2.1.0 (cached)
∗ installed conf-age.1
⬇ retrieved dune.3.21.0 (cached)
⬇ retrieved fileutils.0.6.6 (cached)
⬇ retrieved fmt.0.11.0 (cached)
⬇ retrieved fpath.0.7.3 (cached)
⬇ retrieved gen.1.1 (cached)
⬇ retrieved logs.0.10.0 (cached)
⬇ retrieved menhir.20250912, menhirCST.20250912, menhirLib.20250912, menhirSdk.20250912 (cached)
⬇ retrieved ocaml-compiler-libs.v0.17.0 (cached)
⬇ retrieved ocamlbuild.0.16.1 (cached)
⬇ retrieved ocamlfind.1.9.8 (cached)
⬇ retrieved passage.0.3.2 (cached)
⬇ retrieved ppx_derivers.1.2.1 (cached)
⬇ retrieved ppxlib.0.37.0 (cached)
⬇ retrieved qrc.0.2.0 (cached)
⬇ retrieved re.1.14.0 (cached)
⬇ retrieved rresult.0.7.0 (cached)
⬇ retrieved sedlex.3.7 (cached)
⬇ retrieved seq.base (cached)
∗ installed seq.base
⬇ retrieved sexplib0.v0.17.0 (cached)
⬇ retrieved stdlib-shims.0.3.0 (cached)
⬇ retrieved topkg.1.1.1 (cached)
∗ installed cmdliner.2.1.0
∗ installed ocamlfind.1.9.8
∗ installed ocamlbuild.0.16.1
∗ installed topkg.1.1.1
∗ installed rresult.0.7.0
∗ installed qrc.0.2.0
∗ installed fmt.0.11.0
∗ installed astring.0.8.5
∗ installed logs.0.10.0
∗ installed fpath.0.7.3
∗ installed bos.0.2.1
∗ installed dune.3.21.0
∗ installed menhirCST.20250912
∗ installed ppx_derivers.1.2.1
∗ installed stdlib-shims.0.3.0
∗ installed menhirSdk.20250912
∗ installed fileutils.0.6.6
∗ installed gen.1.1
∗ installed sexplib0.v0.17.0
∗ installed menhirLib.20250912
∗ installed ocaml-compiler-libs.v0.17.0
∗ installed re.1.14.0
∗ installed menhir.20250912
∗ installed ppxlib.0.37.0
∗ installed sedlex.3.7
∗ installed passage.0.3.2
Done.
# To update the current shell environment, run: eval $(opam env)
2026-01-20 17:16.16 ---> saved as "d5ddc370764a50bd84c77b350de682ab9ef58b8dc1aeeb0ec1340e7b68382122"
/home/opam: (run (network host)
(shell "(opam reinstall --with-test passage.0.3.2) || true"))
The following actions will be performed:
=== recompile 1 package
↻ passage 0.3.2 (pinned)
=== install 21 packages
∗ base v0.17.3 [required by ppx_expect]
∗ csexp 1.5.2 [required by dune-configurator]
∗ dune-configurator 3.21.0 [required by base]
∗ jane-street-headers v0.17.0 [required by time_now]
∗ jst-config v0.17.0 [required by time_now]
∗ ocaml_intrinsics_kernel v0.17.1 [required by base]
∗ ppx_assert v0.17.0 [required by jst-config]
∗ ppx_base v0.17.0 [required by time_now]
∗ ppx_cold v0.17.0 [required by ppx_base]
∗ ppx_compare v0.17.0 [required by ppx_base]
∗ ppx_enumerate v0.17.0 [required by ppx_base]
∗ ppx_expect v0.17.3 [required by passage]
∗ ppx_globalize v0.17.2 [required by ppx_base]
∗ ppx_hash v0.17.0 [required by ppx_base]
∗ ppx_here v0.17.0 [required by ppx_expect]
∗ ppx_inline_test v0.17.1 [required by ppx_expect]
∗ ppx_optcomp v0.17.1 [required by time_now]
∗ ppx_sexp_conv v0.17.1 [required by ppx_base]
∗ ppxlib_jane v0.17.4 [required by ppx_globalize, ppx_enumerate, ppx_hash]
∗ stdio v0.17.0 [required by ppx_expect]
∗ time_now v0.17.0 [required by ppx_inline_test]
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved base.v0.17.3 (https://opam.ocaml.org/cache)
⬇ retrieved csexp.1.5.2 (https://opam.ocaml.org/cache)
∗ installed csexp.1.5.2
⬇ retrieved dune-configurator.3.21.0 (https://opam.ocaml.org/cache)
⬇ retrieved jane-street-headers.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved jst-config.v0.17.0 (https://opam.ocaml.org/cache)
∗ installed jane-street-headers.v0.17.0
⬇ retrieved ocaml_intrinsics_kernel.v0.17.1 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_assert.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_base.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_cold.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_compare.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_enumerate.v0.17.0 (https://opam.ocaml.org/cache)
∗ installed ocaml_intrinsics_kernel.v0.17.1
⬇ retrieved ppx_expect.v0.17.3 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_globalize.v0.17.2 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_hash.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_here.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_inline_test.v0.17.1 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_optcomp.v0.17.1 (https://opam.ocaml.org/cache)
⬇ retrieved ppx_sexp_conv.v0.17.1 (https://opam.ocaml.org/cache)
⬇ retrieved ppxlib_jane.v0.17.4 (https://opam.ocaml.org/cache)
⬇ retrieved stdio.v0.17.0 (https://opam.ocaml.org/cache)
⬇ retrieved time_now.v0.17.0 (https://opam.ocaml.org/cache)
∗ installed dune-configurator.3.21.0
⊘ removed passage.0.3.2
∗ installed ppxlib_jane.v0.17.4
∗ installed base.v0.17.3
∗ installed stdio.v0.17.0
∗ installed ppx_optcomp.v0.17.1
∗ installed ppx_cold.v0.17.0
∗ installed ppx_here.v0.17.0
∗ installed ppx_enumerate.v0.17.0
∗ installed ppx_globalize.v0.17.2
∗ installed ppx_compare.v0.17.0
∗ installed ppx_sexp_conv.v0.17.1
∗ installed ppx_hash.v0.17.0
∗ installed ppx_assert.v0.17.0
∗ installed ppx_base.v0.17.0
∗ installed jst-config.v0.17.0
∗ installed time_now.v0.17.0
∗ installed ppx_inline_test.v0.17.1
∗ installed ppx_expect.v0.17.3
[ERROR] The compilation of passage.0.3.2 failed at "dune build -p passage -j 71 @install @runtest".
#=== ERROR while compiling passage.0.3.2 ======================================#
# context 2.5.0 | linux/x86_64 | ocaml-base-compiler.5.4.0 | pinned(https://github.com/ahrefs/passage/releases/download/0.3.2/passage-0.3.2.tbz)
# path ~/.opam/5.4/.opam-switch/build/passage.0.3.2
# command ~/.opam/opam-init/hooks/sandbox.sh build dune build -p passage -j 71 @install @runtest
# exit-code 1
# env-file ~/.opam/log/passage-7-1efaaf.env
# output-file ~/.opam/log/passage-7-1efaaf.out
### output ###
# File "tests/replace_comment_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_comment_command.t _build/default/tests/replace_comment_command.t.corrected
# diff --git a/_build/default/tests/replace_comment_command.t b/_build/default/tests/replace_comment_command.t.corrected
# index c30dc85..07087bd 100644
# --- a/_build/default/tests/replace_comment_command.t
# +++ b/_build/default/tests/replace_comment_command.t.corrected
# @@ -29,34 +29,28 @@ Should succeed - replacing single-line comments with multiline comments
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - replaced again comments
# - line 2
# + replaced again comments\nline 2
#
# Should succeed - replacing multiline comments with multiline comments
# $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret1
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - new comments
# - line 2 of said new comments
# + new comments\nline 2 of said new comments
#
# Should succeed - replacing multiline comments with multiline comments - in multiline secret
# $ setup_multiline_secret_with_comments 00/secret2
# $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret2
# $ passage cat 00/secret2
#
# - new comments
# - line 2 of said new comments
# + new comments\nline 2 of said new comments
#
# (00/secret2) secret: line 1
# (00/secret2) secret: line 2
#
# Should fail - comments with empty lines in the middle
# $ echo "uno commento\n\ndos commentos" | passage replace-comment 00/secret1
# - E: empty lines are not allowed in the middle of the comments
# - [1]
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - new comments
# - line 2 of said new comments
# + uno commento\n\ndos commentos
# File "tests/add_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/add_who_command.t _build/default/tests/add_who_command.t.corrected
# diff --git a/_build/default/tests/add_who_command.t b/_build/default/tests/add_who_command.t.corrected
# index 0dc8e85..99c25e8 100644
# --- a/_build/default/tests/add_who_command.t
# +++ b/_build/default/tests/add_who_command.t.corrected
# @@ -43,6 +43,7 @@ Should succeed - add a group to a secret
# poppy.pop
# robby.rob
# $ passage add-who 02/secret1 @root
# + age: warning: duplicate recipient "age17wywpwacmjjf5pamz04tv0n8fpdkj562pq67dupdvfkwg5xaferqqeuddj"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: added 1 recipient
# $ passage who 02/secret1
# File "tests/rm_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/rm_who_command.t _build/default/tests/rm_who_command.t.corrected
# diff --git a/_build/default/tests/rm_who_command.t b/_build/default/tests/rm_who_command.t.corrected
# index 7afa067..2ba7ef0 100644
# --- a/_build/default/tests/rm_who_command.t
# +++ b/_build/default/tests/rm_who_command.t.corrected
# @@ -2,6 +2,7 @@
#
# Set up secrets with multiple recipients for testing removal based on edit state
# $ passage add-who 02/secret1 poppy.pop robby.rob @root
# + age: warning: duplicate recipient "age1wnjfymz6xue73068t3rz6696p7e5wz2rye0fha5x0lszm3n38cpsjzwm7n"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: added 3 recipients
# $ PASSAGE_IDENTITY=robby.rob.key passage add-who 01/00/secret1 host/a tommy.tom bobby.bob
# @@ -17,6 +18,7 @@ Should succeed - remove a single recipient from a secret
# poppy.pop
# robby.rob
# $ passage rm-who 02/secret1 poppy.pop
# + age: warning: duplicate recipient "age1wnjfymz6xue73068t3rz6696p7e5wz2rye0fha5x0lszm3n38cpsjzwm7n"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: removed 1 recipient
# $ passage who 02/secret1
# File "tests/edit_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_who_command.t _build/default/tests/edit_who_command.t.corrected
# diff --git a/_build/default/tests/edit_who_command.t b/_build/default/tests/edit_who_command.t.corrected
# index 011dfaf..8fc171b 100644
# --- a/_build/default/tests/edit_who_command.t
# +++ b/_build/default/tests/edit_who_command.t.corrected
# @@ -91,6 +91,7 @@ Should succeed - refresh after edits for groups - should work as expected
# $ PASSAGE_IDENTITY=robby.rob.key passage get 03/secret1
# (03/secret1) secret: single line
# $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$ROOT_AGAIN passage edit-who 03/secret1
# + age: warning: duplicate recipient "age13xc3p7vceflm88jmtc3uyx82dwdrpzpg0nd2edxcatsx0w3jl40qrws2nz"
# I: refreshed 1 secrets, skipped 0, failed 0
# $ passage who 03/secret1
# @root
# File "tests/everyone_group.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/everyone_group.t _build/default/tests/everyone_group.t.corrected
# diff --git a/_build/default/tests/everyone_group.t b/_build/default/tests/everyone_group.t.corrected
# index 5d346f8..b093323 100644
# --- a/_build/default/tests/everyone_group.t
# +++ b/_build/default/tests/everyone_group.t.corrected
# @@ -68,6 +68,7 @@ EDIT-WHO - should work as expected
# $ PASSAGE_IDENTITY=robby.rob.key passage get 04/secret1
# BYE
# $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$EVERYONE_AGAIN passage edit-who 04/secret1
# + age: warning: duplicate recipient "age10pre4wn0js8v68tvlzvsmppkm04ph538vsryw6r3pjg5rsce4uhq3fyuhk"
# I: refreshed 1 secrets, skipped 0, failed 0
# $ passage get 04/secret1
# BYE
# @@ -78,6 +79,7 @@ WHAT - works fine for @everyone
#
# REFRESH - works where @everyone is too
# $ PASSAGE_IDENTITY=poppy.pop.key passage refresh -v
# + age: warning: duplicate recipient "age10pre4wn0js8v68tvlzvsmppkm04ph538vsryw6r3pjg5rsce4uhq3fyuhk"
# I: skipped 00/.secret_starting_with_dot
# I: skipped 00/secret1
# I: refreshed 01/00/secret1
# File "tests/create_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/create_command.t _build/default/tests/create_command.t.corrected
# diff --git a/_build/default/tests/create_command.t b/_build/default/tests/create_command.t.corrected
# index c833699..3a4d249 100644
# --- a/_build/default/tests/create_command.t
# +++ b/_build/default/tests/create_command.t.corrected
# @@ -92,5 +92,3 @@ Should succeed - create multi-line secret with comment using --comment flag
#
# Should fail - trying to create a secret with comments on the secret text and the --comment flag
# $ echo "\ncomment\n\nsecret line 1\nsecret line 2" | passage create new/multi-comment --comment "Multi-line secret comment"
# - E: secret text already contains comments. Either use the secret text with comments or use the --comment flag.
# - [1]
# File "tests/edit_comments_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_comments_command.t _build/default/tests/edit_comments_command.t.corrected
# diff --git a/_build/default/tests/edit_comments_command.t b/_build/default/tests/edit_comments_command.t.corrected
# index 7837bd0..77e6c09 100644
# --- a/_build/default/tests/edit_comments_command.t
# +++ b/_build/default/tests/edit_comments_command.t.corrected
# @@ -28,8 +28,7 @@ Should succeed - edit multiline comments on a single-line secret
# $ passage cat 00/test_secret
# (00/test_secret) secret: single line
#
# - line 1 of comment
# - line 2 of comment
# + line 1 of comment\nline 2 of comment
#
# Should succeed - remove comments from single-line secret
# $ echo "" | passage edit-comments 00/test_secret
# @@ -58,8 +57,7 @@ Should succeed - edit comments on multiline secret with existing comments
# $ echo "updated multiline comment\nsecond line" | passage edit-comments 00/multiline_with_comments
# $ passage cat 00/multiline_with_comments
#
# - updated multiline comment
# - second line
# + updated multiline comment\nsecond line
#
# (00/multiline_with_comments) secret: line 1
# (00/multiline_with_comments) secret: line 2
# @@ -74,18 +72,15 @@ Should succeed - remove comments from multiline secret
#
# Should fail - comments with empty lines in the middle
# $ echo "first line\n\nsecond line" | passage edit-comments 00/test_secret
# - E: empty lines are not allowed in the middle of the comments
# - [1]
#
# Should verify secret content unchanged after failed comment edit
# $ passage cat 00/test_secret
# (00/test_secret) secret: single line
#
# - restored comment
# + first line\n\nsecond line
#
# Should fail - trying to set unchanged comments
# $ echo "restored comment" | passage edit-comments 00/test_secret
# - I: comments unchanged
#
# Should fail - edit comments when user is not a recipient
# $ UNAUTHORISED_USER="unauthorised"
# File "tests/replace_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_command.t _build/default/tests/replace_command.t.corrected
# diff --git a/_build/default/tests/replace_command.t b/_build/default/tests/replace_command.t.corrected
# index 7c7d8d8..1205bb8 100644
# --- a/_build/default/tests/replace_command.t
# +++ b/_build/default/tests/replace_command.t.corrected
# @@ -229,7 +229,7 @@ Should succeed - correctly handle inputs without newline termination
# $ printf "secret\n\nnew comments\nmultiple comments" | passage create 01/new_secret_singleline_with_comments_2
# $ echo "wuuut\c" | passage replace 01/new_secret_singleline_with_comments_2
# $ passage cat 01/new_secret_singleline_with_comments_2
# - wuuut
# + wuuut\c
#
# new comments
# multiple comments
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build passage 0.3.2
└─
┌─ The following changes have been performed
│ ⊘ remove passage 0.3.2
│ ∗ install base v0.17.3
│ ∗ install csexp 1.5.2
│ ∗ install dune-configurator 3.21.0
│ ∗ install jane-street-headers v0.17.0
│ ∗ install jst-config v0.17.0
│ ∗ install ocaml_intrinsics_kernel v0.17.1
│ ∗ install ppx_assert v0.17.0
│ ∗ install ppx_base v0.17.0
│ ∗ install ppx_cold v0.17.0
│ ∗ install ppx_compare v0.17.0
│ ∗ install ppx_enumerate v0.17.0
│ ∗ install ppx_expect v0.17.3
│ ∗ install ppx_globalize v0.17.2
│ ∗ install ppx_hash v0.17.0
│ ∗ install ppx_here v0.17.0
│ ∗ install ppx_inline_test v0.17.1
│ ∗ install ppx_optcomp v0.17.1
│ ∗ install ppx_sexp_conv v0.17.1
│ ∗ install ppxlib_jane v0.17.4
│ ∗ install stdio v0.17.0
│ ∗ install time_now v0.17.0
└─
# To update the current shell environment, run: eval $(opam env)
The former state can be restored with:
/usr/bin/opam switch import "/home/opam/.opam/5.4/.opam-switch/backup/state-20260120171617.export"
Or you can retry to install your package selection with:
/usr/bin/opam install --restore
2026-01-20 17:16.59 ---> saved as "250f0484516b237622add7f945bd25fc1fbd4cabc32e17748d4684f7c471b862"
/home/opam: (run (shell "opam reinstall --with-test --verbose passage.0.3.2;\
\n res=$?;\
\n test \"$res\" != 31 && exit \"$res\";\
\n export OPAMCLI=2.0;\
\n build_dir=$(opam var prefix)/.opam-switch/build;\
\n failed=$(ls \"$build_dir\");\
\n partial_fails=\"\";\
\n for pkg in $failed; do\
\n if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"archlinux\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'passage.0.3.2' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
passage.0.3.2 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 1 package
∗ passage 0.3.2 (pinned)
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing 2/3: [passage: dune build]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "build" "-p" "passage" "-j" "71" "@install" "@runtest" (CWD=/home/opam/.opam/5.4/.opam-switch/build/passage.0.3.2)
- File "tests/replace_comment_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_comment_command.t _build/default/tests/replace_comment_command.t.corrected
- diff --git a/_build/default/tests/replace_comment_command.t b/_build/default/tests/replace_comment_command.t.corrected
- index c30dc85..07087bd 100644
- --- a/_build/default/tests/replace_comment_command.t
- +++ b/_build/default/tests/replace_comment_command.t.corrected
- @@ -29,34 +29,28 @@ Should succeed - replacing single-line comments with multiline comments
- $ passage cat 00/secret1
- (00/secret1) secret: single line
-
- - replaced again comments
- - line 2
- + replaced again comments\nline 2
-
- Should succeed - replacing multiline comments with multiline comments
- $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret1
- $ passage cat 00/secret1
- (00/secret1) secret: single line
-
- - new comments
- - line 2 of said new comments
- + new comments\nline 2 of said new comments
-
- Should succeed - replacing multiline comments with multiline comments - in multiline secret
- $ setup_multiline_secret_with_comments 00/secret2
- $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret2
- $ passage cat 00/secret2
-
- - new comments
- - line 2 of said new comments
- + new comments\nline 2 of said new comments
-
- (00/secret2) secret: line 1
- (00/secret2) secret: line 2
-
- Should fail - comments with empty lines in the middle
- $ echo "uno commento\n\ndos commentos" | passage replace-comment 00/secret1
- - E: empty lines are not allowed in the middle of the comments
- - [1]
- $ passage cat 00/secret1
- (00/secret1) secret: single line
-
- - new comments
- - line 2 of said new comments
- + uno commento\n\ndos commentos
- File "tests/add_who_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/add_who_command.t _build/default/tests/add_who_command.t.corrected
- diff --git a/_build/default/tests/add_who_command.t b/_build/default/tests/add_who_command.t.corrected
- index 0dc8e85..b9654dd 100644
- --- a/_build/default/tests/add_who_command.t
- +++ b/_build/default/tests/add_who_command.t.corrected
- @@ -43,6 +43,7 @@ Should succeed - add a group to a secret
- poppy.pop
- robby.rob
- $ passage add-who 02/secret1 @root
- + age: warning: duplicate recipient "age1fz2eu8rmgqtkhdw2zwtdcaezk6w8zac7u8f8s44vl07udkykmarqmt6s6r"
- I: refreshed 1 secrets, skipped 0, failed 0
- I: added 1 recipient
- $ passage who 02/secret1
- File "tests/rm_who_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/rm_who_command.t _build/default/tests/rm_who_command.t.corrected
- diff --git a/_build/default/tests/rm_who_command.t b/_build/default/tests/rm_who_command.t.corrected
- index 7afa067..66d2dfc 100644
- --- a/_build/default/tests/rm_who_command.t
- +++ b/_build/default/tests/rm_who_command.t.corrected
- @@ -2,6 +2,7 @@
-
- Set up secrets with multiple recipients for testing removal based on edit state
- $ passage add-who 02/secret1 poppy.pop robby.rob @root
- + age: warning: duplicate recipient "age1ulq2hykk335hdyqvyyl3pzw9ej50cvtz9t4eekfqdhg5x354gesqf2wpy5"
- I: refreshed 1 secrets, skipped 0, failed 0
- I: added 3 recipients
- $ PASSAGE_IDENTITY=robby.rob.key passage add-who 01/00/secret1 host/a tommy.tom bobby.bob
- @@ -17,6 +18,7 @@ Should succeed - remove a single recipient from a secret
- poppy.pop
- robby.rob
- $ passage rm-who 02/secret1 poppy.pop
- + age: warning: duplicate recipient "age1ulq2hykk335hdyqvyyl3pzw9ej50cvtz9t4eekfqdhg5x354gesqf2wpy5"
- I: refreshed 1 secrets, skipped 0, failed 0
- I: removed 1 recipient
- $ passage who 02/secret1
- File "tests/edit_who_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_who_command.t _build/default/tests/edit_who_command.t.corrected
- diff --git a/_build/default/tests/edit_who_command.t b/_build/default/tests/edit_who_command.t.corrected
- index 011dfaf..554eb19 100644
- --- a/_build/default/tests/edit_who_command.t
- +++ b/_build/default/tests/edit_who_command.t.corrected
- @@ -91,6 +91,7 @@ Should succeed - refresh after edits for groups - should work as expected
- $ PASSAGE_IDENTITY=robby.rob.key passage get 03/secret1
- (03/secret1) secret: single line
- $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$ROOT_AGAIN passage edit-who 03/secret1
- + age: warning: duplicate recipient "age1sfg6gx9j6ewmzrv5dexwqpx7265v805p60a5pcjna5vdxzvtq33syzyp2k"
- I: refreshed 1 secrets, skipped 0, failed 0
- $ passage who 03/secret1
- @root
- File "tests/everyone_group.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/everyone_group.t _build/default/tests/everyone_group.t.corrected
- diff --git a/_build/default/tests/everyone_group.t b/_build/default/tests/everyone_group.t.corrected
- index 5d346f8..4099672 100644
- --- a/_build/default/tests/everyone_group.t
- +++ b/_build/default/tests/everyone_group.t.corrected
- @@ -68,6 +68,7 @@ EDIT-WHO - should work as expected
- $ PASSAGE_IDENTITY=robby.rob.key passage get 04/secret1
- BYE
- $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$EVERYONE_AGAIN passage edit-who 04/secret1
- + age: warning: duplicate recipient "age1hywv079przw7wmufgvmncgn8ejc2d24v40dywjx9ma97ckpld59s0vjwlr"
- I: refreshed 1 secrets, skipped 0, failed 0
- $ passage get 04/secret1
- BYE
- @@ -78,6 +79,7 @@ WHAT - works fine for @everyone
-
- REFRESH - works where @everyone is too
- $ PASSAGE_IDENTITY=poppy.pop.key passage refresh -v
- + age: warning: duplicate recipient "age1hywv079przw7wmufgvmncgn8ejc2d24v40dywjx9ma97ckpld59s0vjwlr"
- I: skipped 00/.secret_starting_with_dot
- I: skipped 00/secret1
- I: refreshed 01/00/secret1
- File "tests/create_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/create_command.t _build/default/tests/create_command.t.corrected
- diff --git a/_build/default/tests/create_command.t b/_build/default/tests/create_command.t.corrected
- index c833699..3a4d249 100644
- --- a/_build/default/tests/create_command.t
- +++ b/_build/default/tests/create_command.t.corrected
- @@ -92,5 +92,3 @@ Should succeed - create multi-line secret with comment using --comment flag
-
- Should fail - trying to create a secret with comments on the secret text and the --comment flag
- $ echo "\ncomment\n\nsecret line 1\nsecret line 2" | passage create new/multi-comment --comment "Multi-line secret comment"
- - E: secret text already contains comments. Either use the secret text with comments or use the --comment flag.
- - [1]
- File "tests/edit_comments_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_comments_command.t _build/default/tests/edit_comments_command.t.corrected
- diff --git a/_build/default/tests/edit_comments_command.t b/_build/default/tests/edit_comments_command.t.corrected
- index 7837bd0..77e6c09 100644
- --- a/_build/default/tests/edit_comments_command.t
- +++ b/_build/default/tests/edit_comments_command.t.corrected
- @@ -28,8 +28,7 @@ Should succeed - edit multiline comments on a single-line secret
- $ passage cat 00/test_secret
- (00/test_secret) secret: single line
-
- - line 1 of comment
- - line 2 of comment
- + line 1 of comment\nline 2 of comment
-
- Should succeed - remove comments from single-line secret
- $ echo "" | passage edit-comments 00/test_secret
- @@ -58,8 +57,7 @@ Should succeed - edit comments on multiline secret with existing comments
- $ echo "updated multiline comment\nsecond line" | passage edit-comments 00/multiline_with_comments
- $ passage cat 00/multiline_with_comments
-
- - updated multiline comment
- - second line
- + updated multiline comment\nsecond line
-
- (00/multiline_with_comments) secret: line 1
- (00/multiline_with_comments) secret: line 2
- @@ -74,18 +72,15 @@ Should succeed - remove comments from multiline secret
-
- Should fail - comments with empty lines in the middle
- $ echo "first line\n\nsecond line" | passage edit-comments 00/test_secret
- - E: empty lines are not allowed in the middle of the comments
- - [1]
-
- Should verify secret content unchanged after failed comment edit
- $ passage cat 00/test_secret
- (00/test_secret) secret: single line
-
- - restored comment
- + first line\n\nsecond line
-
- Should fail - trying to set unchanged comments
- $ echo "restored comment" | passage edit-comments 00/test_secret
- - I: comments unchanged
-
- Should fail - edit comments when user is not a recipient
- $ UNAUTHORISED_USER="unauthorised"
- File "tests/replace_command.t", line 1, characters 0-0:
- /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_command.t _build/default/tests/replace_command.t.corrected
- diff --git a/_build/default/tests/replace_command.t b/_build/default/tests/replace_command.t.corrected
- index 7c7d8d8..1205bb8 100644
- --- a/_build/default/tests/replace_command.t
- +++ b/_build/default/tests/replace_command.t.corrected
- @@ -229,7 +229,7 @@ Should succeed - correctly handle inputs without newline termination
- $ printf "secret\n\nnew comments\nmultiple comments" | passage create 01/new_secret_singleline_with_comments_2
- $ echo "wuuut\c" | passage replace 01/new_secret_singleline_with_comments_2
- $ passage cat 01/new_secret_singleline_with_comments_2
- - wuuut
- + wuuut\c
-
- new comments
- multiple comments
[ERROR] The compilation of passage.0.3.2 failed at "dune build -p passage -j 71 @install @runtest".
#=== ERROR while compiling passage.0.3.2 ======================================#
# context 2.5.0 | linux/x86_64 | ocaml-base-compiler.5.4.0 | pinned(https://github.com/ahrefs/passage/releases/download/0.3.2/passage-0.3.2.tbz)
# path ~/.opam/5.4/.opam-switch/build/passage.0.3.2
# command ~/.opam/opam-init/hooks/sandbox.sh build dune build -p passage -j 71 @install @runtest
# exit-code 1
# env-file ~/.opam/log/passage-7-b58bdb.env
# output-file ~/.opam/log/passage-7-b58bdb.out
### output ###
# File "tests/replace_comment_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_comment_command.t _build/default/tests/replace_comment_command.t.corrected
# diff --git a/_build/default/tests/replace_comment_command.t b/_build/default/tests/replace_comment_command.t.corrected
# index c30dc85..07087bd 100644
# --- a/_build/default/tests/replace_comment_command.t
# +++ b/_build/default/tests/replace_comment_command.t.corrected
# @@ -29,34 +29,28 @@ Should succeed - replacing single-line comments with multiline comments
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - replaced again comments
# - line 2
# + replaced again comments\nline 2
#
# Should succeed - replacing multiline comments with multiline comments
# $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret1
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - new comments
# - line 2 of said new comments
# + new comments\nline 2 of said new comments
#
# Should succeed - replacing multiline comments with multiline comments - in multiline secret
# $ setup_multiline_secret_with_comments 00/secret2
# $ echo "new comments\nline 2 of said new comments" | passage replace-comment 00/secret2
# $ passage cat 00/secret2
#
# - new comments
# - line 2 of said new comments
# + new comments\nline 2 of said new comments
#
# (00/secret2) secret: line 1
# (00/secret2) secret: line 2
#
# Should fail - comments with empty lines in the middle
# $ echo "uno commento\n\ndos commentos" | passage replace-comment 00/secret1
# - E: empty lines are not allowed in the middle of the comments
# - [1]
# $ passage cat 00/secret1
# (00/secret1) secret: single line
#
# - new comments
# - line 2 of said new comments
# + uno commento\n\ndos commentos
# File "tests/add_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/add_who_command.t _build/default/tests/add_who_command.t.corrected
# diff --git a/_build/default/tests/add_who_command.t b/_build/default/tests/add_who_command.t.corrected
# index 0dc8e85..b9654dd 100644
# --- a/_build/default/tests/add_who_command.t
# +++ b/_build/default/tests/add_who_command.t.corrected
# @@ -43,6 +43,7 @@ Should succeed - add a group to a secret
# poppy.pop
# robby.rob
# $ passage add-who 02/secret1 @root
# + age: warning: duplicate recipient "age1fz2eu8rmgqtkhdw2zwtdcaezk6w8zac7u8f8s44vl07udkykmarqmt6s6r"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: added 1 recipient
# $ passage who 02/secret1
# File "tests/rm_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/rm_who_command.t _build/default/tests/rm_who_command.t.corrected
# diff --git a/_build/default/tests/rm_who_command.t b/_build/default/tests/rm_who_command.t.corrected
# index 7afa067..66d2dfc 100644
# --- a/_build/default/tests/rm_who_command.t
# +++ b/_build/default/tests/rm_who_command.t.corrected
# @@ -2,6 +2,7 @@
#
# Set up secrets with multiple recipients for testing removal based on edit state
# $ passage add-who 02/secret1 poppy.pop robby.rob @root
# + age: warning: duplicate recipient "age1ulq2hykk335hdyqvyyl3pzw9ej50cvtz9t4eekfqdhg5x354gesqf2wpy5"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: added 3 recipients
# $ PASSAGE_IDENTITY=robby.rob.key passage add-who 01/00/secret1 host/a tommy.tom bobby.bob
# @@ -17,6 +18,7 @@ Should succeed - remove a single recipient from a secret
# poppy.pop
# robby.rob
# $ passage rm-who 02/secret1 poppy.pop
# + age: warning: duplicate recipient "age1ulq2hykk335hdyqvyyl3pzw9ej50cvtz9t4eekfqdhg5x354gesqf2wpy5"
# I: refreshed 1 secrets, skipped 0, failed 0
# I: removed 1 recipient
# $ passage who 02/secret1
# File "tests/edit_who_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_who_command.t _build/default/tests/edit_who_command.t.corrected
# diff --git a/_build/default/tests/edit_who_command.t b/_build/default/tests/edit_who_command.t.corrected
# index 011dfaf..554eb19 100644
# --- a/_build/default/tests/edit_who_command.t
# +++ b/_build/default/tests/edit_who_command.t.corrected
# @@ -91,6 +91,7 @@ Should succeed - refresh after edits for groups - should work as expected
# $ PASSAGE_IDENTITY=robby.rob.key passage get 03/secret1
# (03/secret1) secret: single line
# $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$ROOT_AGAIN passage edit-who 03/secret1
# + age: warning: duplicate recipient "age1sfg6gx9j6ewmzrv5dexwqpx7265v805p60a5pcjna5vdxzvtq33syzyp2k"
# I: refreshed 1 secrets, skipped 0, failed 0
# $ passage who 03/secret1
# @root
# File "tests/everyone_group.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/everyone_group.t _build/default/tests/everyone_group.t.corrected
# diff --git a/_build/default/tests/everyone_group.t b/_build/default/tests/everyone_group.t.corrected
# index 5d346f8..4099672 100644
# --- a/_build/default/tests/everyone_group.t
# +++ b/_build/default/tests/everyone_group.t.corrected
# @@ -68,6 +68,7 @@ EDIT-WHO - should work as expected
# $ PASSAGE_IDENTITY=robby.rob.key passage get 04/secret1
# BYE
# $ PASSAGE_IDENTITY=robby.rob.key EDITOR=$EVERYONE_AGAIN passage edit-who 04/secret1
# + age: warning: duplicate recipient "age1hywv079przw7wmufgvmncgn8ejc2d24v40dywjx9ma97ckpld59s0vjwlr"
# I: refreshed 1 secrets, skipped 0, failed 0
# $ passage get 04/secret1
# BYE
# @@ -78,6 +79,7 @@ WHAT - works fine for @everyone
#
# REFRESH - works where @everyone is too
# $ PASSAGE_IDENTITY=poppy.pop.key passage refresh -v
# + age: warning: duplicate recipient "age1hywv079przw7wmufgvmncgn8ejc2d24v40dywjx9ma97ckpld59s0vjwlr"
# I: skipped 00/.secret_starting_with_dot
# I: skipped 00/secret1
# I: refreshed 01/00/secret1
# File "tests/create_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/create_command.t _build/default/tests/create_command.t.corrected
# diff --git a/_build/default/tests/create_command.t b/_build/default/tests/create_command.t.corrected
# index c833699..3a4d249 100644
# --- a/_build/default/tests/create_command.t
# +++ b/_build/default/tests/create_command.t.corrected
# @@ -92,5 +92,3 @@ Should succeed - create multi-line secret with comment using --comment flag
#
# Should fail - trying to create a secret with comments on the secret text and the --comment flag
# $ echo "\ncomment\n\nsecret line 1\nsecret line 2" | passage create new/multi-comment --comment "Multi-line secret comment"
# - E: secret text already contains comments. Either use the secret text with comments or use the --comment flag.
# - [1]
# File "tests/edit_comments_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/edit_comments_command.t _build/default/tests/edit_comments_command.t.corrected
# diff --git a/_build/default/tests/edit_comments_command.t b/_build/default/tests/edit_comments_command.t.corrected
# index 7837bd0..77e6c09 100644
# --- a/_build/default/tests/edit_comments_command.t
# +++ b/_build/default/tests/edit_comments_command.t.corrected
# @@ -28,8 +28,7 @@ Should succeed - edit multiline comments on a single-line secret
# $ passage cat 00/test_secret
# (00/test_secret) secret: single line
#
# - line 1 of comment
# - line 2 of comment
# + line 1 of comment\nline 2 of comment
#
# Should succeed - remove comments from single-line secret
# $ echo "" | passage edit-comments 00/test_secret
# @@ -58,8 +57,7 @@ Should succeed - edit comments on multiline secret with existing comments
# $ echo "updated multiline comment\nsecond line" | passage edit-comments 00/multiline_with_comments
# $ passage cat 00/multiline_with_comments
#
# - updated multiline comment
# - second line
# + updated multiline comment\nsecond line
#
# (00/multiline_with_comments) secret: line 1
# (00/multiline_with_comments) secret: line 2
# @@ -74,18 +72,15 @@ Should succeed - remove comments from multiline secret
#
# Should fail - comments with empty lines in the middle
# $ echo "first line\n\nsecond line" | passage edit-comments 00/test_secret
# - E: empty lines are not allowed in the middle of the comments
# - [1]
#
# Should verify secret content unchanged after failed comment edit
# $ passage cat 00/test_secret
# (00/test_secret) secret: single line
#
# - restored comment
# + first line\n\nsecond line
#
# Should fail - trying to set unchanged comments
# $ echo "restored comment" | passage edit-comments 00/test_secret
# - I: comments unchanged
#
# Should fail - edit comments when user is not a recipient
# $ UNAUTHORISED_USER="unauthorised"
# File "tests/replace_command.t", line 1, characters 0-0:
# /usr/sbin/git --no-pager diff --no-index --color=always -u _build/default/tests/replace_command.t _build/default/tests/replace_command.t.corrected
# diff --git a/_build/default/tests/replace_command.t b/_build/default/tests/replace_command.t.corrected
# index 7c7d8d8..1205bb8 100644
# --- a/_build/default/tests/replace_command.t
# +++ b/_build/default/tests/replace_command.t.corrected
# @@ -229,7 +229,7 @@ Should succeed - correctly handle inputs without newline termination
# $ printf "secret\n\nnew comments\nmultiple comments" | passage create 01/new_secret_singleline_with_comments_2
# $ echo "wuuut\c" | passage replace 01/new_secret_singleline_with_comments_2
# $ passage cat 01/new_secret_singleline_with_comments_2
# - wuuut
# + wuuut\c
#
# new comments
# multiple comments
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build passage 0.3.2
└─
╶─ No changes have been performed
# To update the current shell environment, run: eval $(opam env)
'opam reinstall --with-test --verbose passage.0.3.2' failed.
[WARNING] OPAMCONFIRMLEVEL was ignored because CLI 2.0 was requested and it was introduced in 2.1.
[WARNING] OPAMCONFIRMLEVEL was ignored because CLI 2.0 was requested and it was introduced in 2.1.
A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.
"/usr/bin/env" "bash" "-c" "opam reinstall --with-test --verbose passage.0.3.2;
res=$?;
test "$res" != 31 && exit "$res";
export OPAMCLI=2.0;
build_dir=$(opam var prefix)/.opam-switch/build;
failed=$(ls "$build_dir");
partial_fails="";
for pkg in $failed; do
if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"archlinux\""; then
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.";
fi;
test "$pkg" != 'passage.0.3.2' && partial_fails="$partial_fails $pkg";
done;
test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}";
exit 1" failed with exit status 1
2026-01-20 17:17.14: Job failed: Failed: Build failed
2026-01-20 17:17.14: Log analysis:
2026-01-20 17:17.14: >>>
[ERROR] The compilation of passage.0.3.2 failed at "dune build -p passage -j 71 @install @runtest".
(score = 20)
2026-01-20 17:17.14: >>>
[ERROR] The compilation of passage.0.3.2 failed at "dune build -p passage -j 71 @install @runtest".
(score = 20)
2026-01-20 17:17.14: >>>
A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.
(score = 100)
2026-01-20 17:17.14: [SKIP] Failure ignored