(for PR #29582)
2026-03-25 13:15.21: New job: test testo.0.4.0 with ocaml-compiler.5.4.0~beta1, using opam dev
from https://github.com/ocaml/opam-repository.git#refs/pull/29582/head (fa5fb3a6a806e832e4c7791145889a6bbe8b64ef)
on debian-13-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/29582/head" && git reset --hard fa5fb3a6
git fetch origin master
git merge --no-edit 2f93e9d4614d6376ed929fc2cee7c59cb9d5833b
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
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 ocaml-compiler.5.4.0~beta1 5.4.0~beta1
RUN opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1; \
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 "\"debian-13\""; then \
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
fi; \
test "$pkg" != 'ocaml-compiler.5.4.0~beta1' && partial_fails="$partial_fails $pkg"; \
done; \
test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
exit 1
RUN opam reinstall testo.0.4.0; \
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 "\"debian-13\""; then \
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
fi; \
test "$pkg" != 'testo.0.4.0' && 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 testo.0.4.0) || true
RUN opam reinstall --with-test --verbose testo.0.4.0; \
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 "\"debian-13\""; then \
echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
fi; \
test "$pkg" != 'testo.0.4.0' && 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-03-25 13:15.21: Using cache hint "ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6-ocaml-compiler.5.4.0~beta1-testo.0.4.0-fa5fb3a6a806e832e4c7791145889a6bbe8b64ef"
2026-03-25 13:15.21: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
(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 ocaml-compiler.5.4.0~beta1 5.4.0~beta1"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'ocaml-compiler.5.4.0~beta1' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall testo.0.4.0;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'testo.0.4.0' && 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 testo.0.4.0) || true"))
(run (shell "opam reinstall --with-test --verbose testo.0.4.0;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'testo.0.4.0' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
)
2026-03-25 13:15.21: Waiting for resource in pool OCluster
2026-03-25 22:10.25: Waiting for worker…
2026-03-25 22:12.37: Got resource from pool OCluster
Building on clete.caelum.ci.dev
All commits already cached
Updating files: 68% (12627/18520)
Updating files: 69% (12779/18520)
Updating files: 70% (12964/18520)
Updating files: 71% (13150/18520)
Updating files: 72% (13335/18520)
Updating files: 73% (13520/18520)
Updating files: 74% (13705/18520)
Updating files: 75% (13890/18520)
Updating files: 76% (14076/18520)
Updating files: 77% (14261/18520)
Updating files: 78% (14446/18520)
Updating files: 79% (14631/18520)
Updating files: 80% (14816/18520)
Updating files: 81% (15002/18520)
Updating files: 82% (15187/18520)
Updating files: 83% (15372/18520)
Updating files: 84% (15557/18520)
Updating files: 85% (15742/18520)
Updating files: 86% (15928/18520)
Updating files: 87% (16113/18520)
Updating files: 88% (16298/18520)
Updating files: 89% (16483/18520)
Updating files: 90% (16668/18520)
Updating files: 91% (16854/18520)
Updating files: 92% (17039/18520)
Updating files: 93% (17224/18520)
Updating files: 94% (17409/18520)
Updating files: 95% (17594/18520)
Updating files: 96% (17780/18520)
Updating files: 97% (17965/18520)
Updating files: 98% (18150/18520)
Updating files: 99% (18335/18520)
Updating files: 100% (18520/18520)
Updating files: 100% (18520/18520), done.
HEAD is now at 2f93e9d461 Merge pull request #29592 from dinosaure/release-miou-v0.5.5
Merge made by the 'ort' strategy.
packages/ocaml-compiler/ocaml-compiler.5.3.0/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.3/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.4.0/opam | 5 ++++-
.../ocaml-compiler/ocaml-compiler.5.4.0~alpha1/opam | 5 ++++-
.../ocaml-compiler/ocaml-compiler.5.4.0~beta1/opam | 5 ++++-
.../ocaml-compiler/ocaml-compiler.5.4.0~beta2/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.4.0~rc1/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.4.1/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.4/opam | 5 ++++-
.../ocaml-compiler/ocaml-compiler.5.5.0~alpha1/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.5/opam | 5 ++++-
packages/ocaml-compiler/ocaml-compiler.5.6/opam | 5 ++++-
packages/ocaml-option-llvm/ocaml-option-llvm.1/opam | 18 ++++++++++++++++++
.../ocaml-options-vanilla/ocaml-options-vanilla.1/opam | 1 +
packages/ocaml-variants/ocaml-variants.5.2.0+msvc/opam | 2 ++
15 files changed, 69 insertions(+), 12 deletions(-)
create mode 100644 packages/ocaml-option-llvm/ocaml-option-llvm.1/opam
(from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
2026-03-25 22:12.57 ---> using "41eea30e3f639c18d8cf57c309ec76919ec7b2398036f7e41744cbce59a133d3" 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-03-25 22:12.57 ---> using "4ad7f430d684c40cedc651267e0edf890c044fe4e624255de377c471b4526bac" 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.
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.
Continue? [Y/n] y
Format upgrade done.
<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-03-25 22:12.57 ---> using "71fa58e52457bf6a7eac317c6a6ef1e2bdf53e533a1e4fd04b90c9349347e038" 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=debian os-version=13
# 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-03-25 22:12.57 ---> using "ed86081cb38ca125a920162bfe6a4bb7b1c27c6973c917551687c83cf44dbfdf" 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-03-25 22:12.57 ---> using "04a48515eea40c32b96da0c71328b4bba0edb66eed83d4f78554b39097cf1f25" from cache
/home/opam: (copy (src .) (dst opam-repository/))
2026-03-25 22:12.59 ---> using "034191995d824300f355cbba1072d6e5fe6d815701f24eb84d82c75009d73829" from cache
/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-25 22:12.59 ---> using "8232259ea36ea8848dc29ae49703acf145fd27b40f3ebd8fb785db7f8da1b9d4" from cache
/home/opam: (run (network host)
(shell "opam update --depexts || true"))
+ /usr/bin/sudo "apt-get" "update"
- Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]
- Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
- Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
- Get:4 http://deb.debian.org/debian trixie/main amd64 Packages [9671 kB]
- Get:5 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [114 kB]
- Fetched 10.0 MB in 1s (6734 kB/s)
- Reading package lists...
-
2026-03-25 22:12.59 ---> using "a75782a571df4fc8f8933e94c681af881015ee87cdd4c652f8ae9af1d8cfad37" from cache
/home/opam: (run (shell "opam pin add -k version -yn ocaml-compiler.5.4.0~beta1 5.4.0~beta1"))
ocaml-compiler is now pinned to version 5.4.0~beta1
2026-03-25 22:12.59 ---> using "2099603933b4d6fefa06b285478a2e8fb05b82034e4d51f2aa158c2f8142ec7f" from cache
/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall --update-invariant ocaml-compiler.5.4.0~beta1;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'ocaml-compiler.5.4.0~beta1' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
ocaml-compiler.5.4.0~beta1 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== remove 1 package
- remove ocaml-base-compiler 5.4.0 (pinned) [conflicts with ocaml-compiler]
=== downgrade 1 package
- downgrade ocaml-compiler 5.4.0 to 5.4.0~beta1 (pinned)
=== recompile 6 packages
- recompile base-domains base [uses ocaml]
- recompile base-effects base [uses ocaml]
- recompile base-nnp base [uses base-domains]
- recompile ocaml 5.4.0 [uses ocaml-base-compiler]
- recompile ocaml-config 3 [uses ocaml-base-compiler]
- recompile opam-depext 1.2.3 [uses ocaml]
=== install 1 package
- install ocaml-variants 5.4.0~beta1+options [required by ocaml]
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-compiler.5.4.0~beta1 (cached)
-> retrieved ocaml-config.3 (cached)
-> retrieved opam-depext.1.2.3 (cached)
-> removed base-effects.base
-> removed base-nnp.base
-> removed base-domains.base
-> removed opam-depext.1.2.3
-> removed ocaml.5.4.0
-> removed ocaml-config.3
-> removed ocaml-base-compiler.5.4.0
-> removed ocaml-compiler.5.4.0
-> installed ocaml-compiler.5.4.0~beta1
-> installed ocaml-variants.5.4.0~beta1+options
-> installed ocaml-config.3
-> installed ocaml.5.4.0
-> installed base-domains.base
-> installed base-effects.base
-> installed base-nnp.base
-> installed opam-depext.1.2.3
[NOTE] Switch invariant was updated to ["ocaml-variants" {= "5.4.0~beta1+options"}]
Use `opam switch set-invariant' to change it.
Done.
<><> opam-depext.1.2.3 installed successfully <><><><><><><><><><><><><><><><><>
=> opam-depext is unnecessary when used with opam >= 2.1. Please use opam install directly instead
# To update the current shell environment, run: eval $(opam env)
2026-03-25 22:12.59 ---> using "4ade08db1d862fcbe952182c248248cadec1de72f3de330b8d46a223b59c02fd" from cache
/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam reinstall testo.0.4.0;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'testo.0.4.0' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
testo.0.4.0 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 18 packages
- install astring 0.8.5 [required by fpath]
- install cmdliner 2.1.0 [required by testo]
- install cppo 1.8.0 [required by ppx_deriving]
- install dune 3.22.0 [required by testo]
- install fpath 0.7.3 [required by testo]
- install ocaml-compiler-libs v0.17.0 [required by ppxlib]
- install ocamlbuild 0.16.1 [required by fpath]
- install ocamlfind 1.9.8 [required by fpath]
- install ppx_derivers 1.2.1 [required by ppx_deriving]
- install ppx_deriving 6.1.1 [required by testo-util]
- install ppxlib 0.37.0 [required by ppx_deriving]
- install re 1.14.0 [required by testo]
- install sexplib0 v0.17.0 [required by ppxlib]
- install stdlib-shims 0.3.0 [required by ppxlib]
- install testo 0.4.0
- install testo-diff 0.4.0 [required by testo-util]
- install testo-util 0.4.0 [required by testo]
- install topkg 1.1.1 [required by fpath]
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved astring.0.8.5 (cached)
-> retrieved cmdliner.2.1.0 (cached)
-> retrieved cppo.1.8.0 (cached)
-> retrieved dune.3.22.0 (cached)
-> retrieved fpath.0.7.3 (cached)
-> retrieved ocaml-compiler-libs.v0.17.0 (cached)
-> retrieved ocamlbuild.0.16.1 (cached)
-> retrieved ocamlfind.1.9.8 (cached)
-> retrieved ppx_derivers.1.2.1 (cached)
-> retrieved ppx_deriving.6.1.1 (cached)
-> retrieved ppxlib.0.37.0 (cached)
-> retrieved re.1.14.0 (cached)
-> retrieved sexplib0.v0.17.0 (cached)
-> retrieved stdlib-shims.0.3.0 (cached)
-> retrieved testo.0.4.0, testo-diff.0.4.0, testo-util.0.4.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 astring.0.8.5
-> installed fpath.0.7.3
-> installed dune.3.22.0
-> installed ppx_derivers.1.2.1
-> installed stdlib-shims.0.3.0
-> installed sexplib0.v0.17.0
-> installed cppo.1.8.0
-> installed re.1.14.0
-> installed ocaml-compiler-libs.v0.17.0
-> installed ppxlib.0.37.0
-> installed ppx_deriving.6.1.1
-> installed testo-diff.0.4.0
-> installed testo-util.0.4.0
-> installed testo.0.4.0
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 22:15.34 ---> saved as "2ae8ebc3dce0d54de7f5a9ab8a01d65e6da9bac93880bc84e7976a123198e070"
/home/opam: (run (network host)
(shell "(opam reinstall --with-test testo.0.4.0) || true"))
The following actions will be performed:
=== recompile 1 package
- recompile testo 0.4.0
=== install 4 packages
- install alcotest 1.9.1 [required by testo]
- install fmt 0.11.0 [required by alcotest]
- install ocaml-syntax-shims 1.0.0 [required by alcotest]
- install uutf 1.0.4 [required by alcotest]
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved alcotest.1.9.1 (https://opam.ocaml.org/cache)
-> retrieved fmt.0.11.0 (https://opam.ocaml.org/cache)
-> retrieved ocaml-syntax-shims.1.0.0 (https://opam.ocaml.org/cache)
-> retrieved testo.0.4.0 (https://opam.ocaml.org/cache)
-> retrieved uutf.1.0.4 (https://opam.ocaml.org/cache)
-> installed ocaml-syntax-shims.1.0.0
-> installed fmt.0.11.0
-> removed testo.0.4.0
-> installed uutf.1.0.4
-> installed alcotest.1.9.1
-> installed testo.0.4.0
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 22:15.58 ---> saved as "aebef4a7d1a35e19bf5de1208f532409ffa6c7ec052a9bb4fcfb785249849a39"
/home/opam: (run (shell "opam reinstall --with-test --verbose testo.0.4.0;\
\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 \"\\\"debian-13\\\"\"; then\
\n echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
\n fi;\
\n test \"$pkg\" != 'testo.0.4.0' && partial_fails=\"$partial_fails $pkg\";\
\n done;\
\n test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
\n exit 1"))
The following actions will be performed:
=== recompile 1 package
- recompile testo 0.4.0
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing 1/4: [testo.0.4.0: extract]
-> retrieved testo.0.4.0 (cached)
Processing 2/4: [testo: dune build]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "build" "-p" "testo" "-j" "71" "@install" "@runtest" (CWD=/home/opam/.opam/5.4/.opam-switch/build/testo.0.4.0)
- (cd _build/default/tests && ./test_alcotest.exe -C ../../..)
- Legend:
- • [PASS]: a successful test that was expected to succeed (good);
- • [FAIL]: a failing test that was expected to succeed (needs fixing);
- • [XFAIL]: a failing test that was expected to fail (tolerated failure);
- • [XPASS]: a successful test that was expected to fail (progress?).
- • [MISS]: a test that never ran;
- • [SKIP]: a test that is always skipped but kept around for some reason;
- • [xxxx*]: a new test for which there's no expected output yet.
- In this case, you should review the test output and run the 'approve'
- subcommand once you're satisfied with the output.
- Try '--help' for options. Use '--expert' to hide this legend.
- [RUN] f17aaabc20bf basic
- [RUN] 85349a4a9157 xfail
- [RUN] d1a055429711 capture stdout
- [RUN] bf36d37e7d10 check stdout (ignored by alcotest)
- [PASS] bf36d37e7d10 check stdout (ignored by alcotest)
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/test-alcotest/bf36d37e7d10/stdout
- • Path to captured stdout: _build/testo/status/test-alcotest/bf36d37e7d10/stdout
- • Path to captured log: _build/testo/status/test-alcotest/bf36d37e7d10/log
- [PASS] d1a055429711 capture stdout
- • Path to captured log: _build/testo/status/test-alcotest/d1a055429711/log
- [XFAIL] 85349a4a9157 xfail
- • Expected to fail: the test function raises an exception
- • Path to captured log: _build/testo/status/test-alcotest/85349a4a9157/log
- [PASS] f17aaabc20bf basic
- • Path to captured log: _build/testo/status/test-alcotest/f17aaabc20bf/log
- 4/4 selected tests:
- 4 successful (3 pass, 1 xfail)
- 0 unsuccessful (0 fail, 0 xpass)
- overall status: success
- Testo exit code: 0
- Testing `test-alcotest'.
- This run has ID `I3XOC1KE'.
-
- [OK] f17aaabc20bf basic 0 ...
- [OK] 85349a4a9157 [xfail] xfail 0 ...
- [OK] d1a055429711 capture stdout 0 ...
- [OK] bf36d37e7d10 check stdout (ignored by alcotest) 0 ...
-
- Full test results in `~/.opam/5.4/.opam-switch/build/testo.0.4.0/_build/_tests/test-alcotest'.
- Test Successful in 0.001s. 4 tests run.
- (cd _build/default/tests && ./test.exe -C ../../..)
- Legend:
- • [PASS]: a successful test that was expected to succeed (good);
- • [FAIL]: a failing test that was expected to succeed (needs fixing);
- • [XFAIL]: a failing test that was expected to fail (tolerated failure);
- • [XPASS]: a successful test that was expected to fail (progress?).
- • [MISS]: a test that never ran;
- • [SKIP]: a test that is always skipped but kept around for some reason;
- • [xxxx*]: a new test for which there's no expected output yet.
- In this case, you should review the test output and run the 'approve'
- subcommand once you're satisfied with the output.
- Try '--help' for options. Use '--expert' to hide this legend.
- [RUN SOLO: testing] 9213dcc500f4 solo 1/2
- [PASS] 9213dcc500f4 solo 1/2
- • This is a solo test, set to not run concurrently with other tests. Reason: testing
- • Path to captured log: _build/testo/status/testo_tests/9213dcc500f4/log
- [RUN SOLO: testing] b10dcbd5d4b9 solo 2/2
- [PASS] b10dcbd5d4b9 solo 2/2
- • This is a solo test, set to not run concurrently with other tests. Reason: testing
- • Path to captured log: _build/testo/status/testo_tests/b10dcbd5d4b9/log
- [RUN SOLO: run in same process so as to share context] 2e4063b681b3 shared context merged output 1
- [PASS] 2e4063b681b3 shared context merged output 1
- • This is a solo test, set to not run concurrently with other tests. Reason: run in same process so as to share context
- • Path to captured log: _build/testo/status/testo_tests/2e4063b681b3/log
- [RUN SOLO: run in same process so as to share context] 1ca04c6d775f shared context merged output 2
- [PASS] 1ca04c6d775f shared context merged output 2
- • This is a solo test, set to not run concurrently with other tests. Reason: run in same process so as to share context
- • Path to captured log: _build/testo/status/testo_tests/1ca04c6d775f/log
- [RUN SOLO: run in same process so as to share context] bf55db9dc3f0 shared context split output 1
- [PASS] bf55db9dc3f0 shared context split output 1
- • This is a solo test, set to not run concurrently with other tests. Reason: run in same process so as to share context
- • Path to captured log: _build/testo/status/testo_tests/bf55db9dc3f0/log
- [RUN SOLO: run in same process so as to share context] cb28cacab289 shared context split output 2
- [PASS] cb28cacab289 shared context split output 2
- • This is a solo test, set to not run concurrently with other tests. Reason: run in same process so as to share context
- • Path to captured log: _build/testo/status/testo_tests/cb28cacab289/log
- [RUN] 8dbdda48fb87 simple
- [RUN] bd1c5167dc34 category > subcategory > category
- [RUN] a885dcf169da checked output file names
- [RUN] c97a5036c7e6 string list fail if DEMO is set
- [RUN] 0c2f56ef73e6 text fail if DEMO is set
- [RUN] 2c57c8917bfb unchecked stdout
- [RUN] 68358d78cb0b unchecked stderr
- [RUN] d0fb18eaf104 capture one file
- [RUN] 894b5f5931fd fail to capture one file
- [RUN] c86c9fc3ac85 show exception on xfail
- [RUN] 0ac34585feff auto show exception on xfail
- [RUN] d01c1bdbafaa don't show exception on xfail
- [RUN] 85349a4a9157 xfail
- [RUN] e52e279299e9 skipped
- [RUN] a55170a13733 tracking URL
- [RUN] 91a3c9030236 chdir
- [RUN] c10b96c9a177 with environment variables ok
- [RUN] df3dde6aa501 with environment variables bad
- [RUN] a3e1a604f579 masked
- [RUN] 3b24997d50c8 mask_pcre_pattern
- [RUN] e8a3ba3cf9b4 mask_temp_paths
- [RUN] cb1a0033f274 mask exotic temp paths
- [RUN] 59046838dc2d contains substring
- [RUN] 130a6f0e870f contains pcre pattern
- [RUN] df76b0fc2d37 filter_map_lines
- [RUN] d07f2170491b remove matching lines
- [RUN] 2f713596bc5a keep matching lines
- [RUN] d5b0041ea8f4 check for substring in stdout
- [RUN] 99746f633129 check words in stdout
- [RUN] 7e7e7c09bfff check for substrings in stdout
- [RUN] 0c9b830b2217 error formatting
- [RUN] 4afe6ca04afb error formatting text
- [RUN] 10daafb2d3e3 error formatting multiline quoted string
- [RUN] c960c2c6dd09 error formatting short list
- [RUN] de010ee95914 error formatting long list
- [RUN] 8ffa228d38e7 error formatting long tuple
- [RUN] afc104393bac temporary files
- [RUN] 1f85f39d5e9a user output capture
- [RUN] bf116ef3934b diff > hello
- [RUN] c0c423c0300c diff > six-lines
- [RUN] 8e08941de3ba diff > leading-context
- [RUN] 7d073a531ccf diff > leading-context-short
- [RUN] 1cf5a6371f59 diff > trailing-context
- [RUN] 8ae0ad03ce59 diff > joined-context
- [RUN] 360c4b690be4 diff > gap-in-context
- [RUN] e9a14b7e5dd9 (unix_only) diff > lf-crlf-only
- [RUN] 8f4b9e56ac4d (unix_only) diff > crlf-lf-only
- [RUN] 8339c60608b4 (unix_only) diff > lf-crlf
- [RUN] ee1aad685657 (unix_only) diff > crlf-lf
- [RUN] b23196a133ca diff > missing-eol-only
- [RUN] af675587c5e7 (windows_only) roundtrip lf from text channel
- [RUN] 6f04dbd84794 roundtrip crlf from binary channel
- [RUN] ca552d6359ef diff > missing-eol
- [RUN] 08e4221951ee current test
- [RUN] e06ba5b7f0ea write/read/map file
- [RUN] 76465929ce2f write/read/map file in place
- [RUN] 33a93d234d01 biohazard > fruit > apple
- [RUN] ec7514c8554d biohazard > fruit > kiwi
- [RUN] b8cd199f2e62 biohazard > animal > banana slug
- [RUN] 4a0adc56173a Slice > empty 1/1
- [RUN] 2ae5c882730e Slice > empty 1/5
- [RUN] 5290cda648b1 Slice > empty 5/5
- [RUN] 69942982f070 Slice > short 1/5
- [RUN] c7e9d9cc5ced Slice > short 3/5
- [RUN] 880486950fd4 Slice > short 4/5
- [RUN] c7cf03355e3e Slice > short 5/5
- [RUN] c248034012cb Slice > even 1/3
- [RUN] b0f035899167 Slice > even 2/3
- [RUN] 89fe151186d4 Slice > even 3/3
- [RUN] 5a01ad65d512 Slice > long 1/3
- [RUN] 913605e2d932 Slice > long 2/3
- [RUN] 6adba8fe4ac9 Slice > long 3/3
- [PASS] c960c2c6dd09 error formatting short list
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/c960c2c6dd09/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/c960c2c6dd09/stderr
- • Path to captured log: _build/testo/status/testo_tests/c960c2c6dd09/log
- [RUN] 8a4a3d95651b Slice > chained 1/3 2/2
- [PASS] c248034012cb Slice > even 1/3
- • Path to captured log: _build/testo/status/testo_tests/c248034012cb/log
- [RUN] a8cc405c1f92 Slice > chained 2/3 1/2
- [PASS] 5290cda648b1 Slice > empty 5/5
- • Path to captured log: _build/testo/status/testo_tests/5290cda648b1/log
- [RUN] 74333515fe26 Slice > chained 2/3 2/2
- [PASS] ec7514c8554d biohazard > fruit > kiwi
- • Path to captured log: _build/testo/status/testo_tests/ec7514c8554d/log
- [RUN] f53b982bad4a tag selection > simple in
- [PASS] a8cc405c1f92 Slice > chained 2/3 1/2
- • Path to captured log: _build/testo/status/testo_tests/a8cc405c1f92/log
- [RUN] fede921dbdf2 tag selection > simple out
- [SKIP: This test does not make sense on Unix] af675587c5e7 (windows_only) roundtrip lf from text channel
- [RUN] 76f34458096c tag selection > complex in
- [PASS] 8a4a3d95651b Slice > chained 1/3 2/2
- • Path to captured log: _build/testo/status/testo_tests/8a4a3d95651b/log
- [RUN] b347f3932e7d tag selection > complex out
- [PASS] 6adba8fe4ac9 Slice > long 3/3
- • Path to captured log: _build/testo/status/testo_tests/6adba8fe4ac9/log
- [RUN] 0e636dc9c20f tag selection > not
- [PASS] 5a01ad65d512 Slice > long 1/3
- • Path to captured log: _build/testo/status/testo_tests/5a01ad65d512/log
- [RUN] 45f32faa1917 tag selection > all
- [PASS] 89fe151186d4 Slice > even 3/3
- • Path to captured log: _build/testo/status/testo_tests/89fe151186d4/log
- [RUN] f81bfc072e53 tag selection > none
- [PASS] b0f035899167 Slice > even 2/3
- • Path to captured log: _build/testo/status/testo_tests/b0f035899167/log
- [PASS] 0e636dc9c20f tag selection > not
- • Path to captured log: _build/testo/status/testo_tests/0e636dc9c20f/log
- [PASS] 45f32faa1917 tag selection > all
- • Path to captured log: _build/testo/status/testo_tests/45f32faa1917/log
- [PASS] f81bfc072e53 tag selection > none
- • Path to captured log: _build/testo/status/testo_tests/f81bfc072e53/log
- [PASS] fede921dbdf2 tag selection > simple out
- • Path to captured log: _build/testo/status/testo_tests/fede921dbdf2/log
- [PASS] c7cf03355e3e Slice > short 5/5
- • Path to captured log: _build/testo/status/testo_tests/c7cf03355e3e/log
- [PASS] 880486950fd4 Slice > short 4/5
- • Path to captured log: _build/testo/status/testo_tests/880486950fd4/log
- [PASS] c7e9d9cc5ced Slice > short 3/5
- • Path to captured log: _build/testo/status/testo_tests/c7e9d9cc5ced/log
- [PASS] 913605e2d932 Slice > long 2/3
- • Path to captured log: _build/testo/status/testo_tests/913605e2d932/log
- [PASS] 69942982f070 Slice > short 1/5
- • Path to captured log: _build/testo/status/testo_tests/69942982f070/log
- [PASS] 74333515fe26 Slice > chained 2/3 2/2
- • Path to captured log: _build/testo/status/testo_tests/74333515fe26/log
- [PASS] 2ae5c882730e Slice > empty 1/5
- • Path to captured log: _build/testo/status/testo_tests/2ae5c882730e/log
- [PASS] 4a0adc56173a Slice > empty 1/1
- • Path to captured log: _build/testo/status/testo_tests/4a0adc56173a/log
- [PASS] b8cd199f2e62 biohazard > animal > banana slug
- • Path to captured log: _build/testo/status/testo_tests/b8cd199f2e62/log
- [PASS] f53b982bad4a tag selection > simple in
- • Path to captured log: _build/testo/status/testo_tests/f53b982bad4a/log
- [PASS] 33a93d234d01 biohazard > fruit > apple
- • Path to captured log: _build/testo/status/testo_tests/33a93d234d01/log
- [PASS] 76465929ce2f write/read/map file in place
- • Path to captured log: _build/testo/status/testo_tests/76465929ce2f/log
- [PASS] e06ba5b7f0ea write/read/map file
- • Path to captured log: _build/testo/status/testo_tests/e06ba5b7f0ea/log
- [PASS] 08e4221951ee current test
- • Path to captured log: _build/testo/status/testo_tests/08e4221951ee/log
- [PASS] ca552d6359ef diff > missing-eol
- • Checked output: stdout
- • Path to expected missing-eol.diff: tests/diff-data/missing-eol.diff
- • Path to captured missing-eol.diff: _build/testo/status/testo_tests/ca552d6359ef/stdout
- • Path to captured log: _build/testo/status/testo_tests/ca552d6359ef/log
- [PASS] 6f04dbd84794 roundtrip crlf from binary channel
- • Path to captured log: _build/testo/status/testo_tests/6f04dbd84794/log
- [PASS] 76f34458096c tag selection > complex in
- • Path to captured log: _build/testo/status/testo_tests/76f34458096c/log
- [PASS] b23196a133ca diff > missing-eol-only
- • Checked output: stdout
- • Path to expected missing-eol-only.diff: tests/diff-data/missing-eol-only.diff
- • Path to captured missing-eol-only.diff: _build/testo/status/testo_tests/b23196a133ca/stdout
- • Path to captured log: _build/testo/status/testo_tests/b23196a133ca/log
- [PASS] ee1aad685657 (unix_only) diff > crlf-lf
- • Checked output: stdout
- • Path to expected crlf-lf.diff: tests/diff-data/crlf-lf.diff
- • Path to captured crlf-lf.diff: _build/testo/status/testo_tests/ee1aad685657/stdout
- • Path to captured log: _build/testo/status/testo_tests/ee1aad685657/log
- [PASS] 8339c60608b4 (unix_only) diff > lf-crlf
- • Checked output: stdout
- • Path to expected lf-crlf.diff: tests/diff-data/lf-crlf.diff
- • Path to captured lf-crlf.diff: _build/testo/status/testo_tests/8339c60608b4/stdout
- • Path to captured log: _build/testo/status/testo_tests/8339c60608b4/log
- [PASS] 8f4b9e56ac4d (unix_only) diff > crlf-lf-only
- • Checked output: stdout
- • Path to expected crlf-lf-only.diff: tests/diff-data/crlf-lf-only.diff
- • Path to captured crlf-lf-only.diff: _build/testo/status/testo_tests/8f4b9e56ac4d/stdout
- • Path to captured log: _build/testo/status/testo_tests/8f4b9e56ac4d/log
- [PASS] e9a14b7e5dd9 (unix_only) diff > lf-crlf-only
- • Checked output: stdout
- • Path to expected lf-crlf-only.diff: tests/diff-data/lf-crlf-only.diff
- • Path to captured lf-crlf-only.diff: _build/testo/status/testo_tests/e9a14b7e5dd9/stdout
- • Path to captured log: _build/testo/status/testo_tests/e9a14b7e5dd9/log
- [PASS] 360c4b690be4 diff > gap-in-context
- • Checked output: stdout
- • Path to expected gap-in-context.diff: tests/diff-data/gap-in-context.diff
- • Path to captured gap-in-context.diff: _build/testo/status/testo_tests/360c4b690be4/stdout
- • Path to captured log: _build/testo/status/testo_tests/360c4b690be4/log
- [PASS] 8ae0ad03ce59 diff > joined-context
- • Checked output: stdout
- • Path to expected joined-context.diff: tests/diff-data/joined-context.diff
- • Path to captured joined-context.diff: _build/testo/status/testo_tests/8ae0ad03ce59/stdout
- • Path to captured log: _build/testo/status/testo_tests/8ae0ad03ce59/log
- [PASS] 1cf5a6371f59 diff > trailing-context
- • Checked output: stdout
- • Path to expected trailing-context.diff: tests/diff-data/trailing-context.diff
- • Path to captured trailing-context.diff: _build/testo/status/testo_tests/1cf5a6371f59/stdout
- • Path to captured log: _build/testo/status/testo_tests/1cf5a6371f59/log
- [PASS] 7d073a531ccf diff > leading-context-short
- • Checked output: stdout
- • Path to expected leading-context-short.diff: tests/diff-data/leading-context-short.diff
- • Path to captured leading-context-short.diff: _build/testo/status/testo_tests/7d073a531ccf/stdout
- • Path to captured log: _build/testo/status/testo_tests/7d073a531ccf/log
- [PASS] 8e08941de3ba diff > leading-context
- • Checked output: stdout
- • Path to expected leading-context.diff: tests/diff-data/leading-context.diff
- • Path to captured leading-context.diff: _build/testo/status/testo_tests/8e08941de3ba/stdout
- • Path to captured log: _build/testo/status/testo_tests/8e08941de3ba/log
- [PASS] c0c423c0300c diff > six-lines
- • Checked output: stdout
- • Path to expected six-lines.diff: tests/diff-data/six-lines.diff
- • Path to captured six-lines.diff: _build/testo/status/testo_tests/c0c423c0300c/stdout
- • Path to captured log: _build/testo/status/testo_tests/c0c423c0300c/log
- [PASS] bf116ef3934b diff > hello
- • Checked output: stdout
- • Path to expected hello.diff: tests/diff-data/hello.diff
- • Path to captured hello.diff: _build/testo/status/testo_tests/bf116ef3934b/stdout
- • Path to captured log: _build/testo/status/testo_tests/bf116ef3934b/log
- [PASS] 1f85f39d5e9a user output capture
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_tests/1f85f39d5e9a/stdout
- • Path to captured stdout: _build/testo/status/testo_tests/1f85f39d5e9a/stdout
- • Path to captured log: _build/testo/status/testo_tests/1f85f39d5e9a/log
- [PASS] afc104393bac temporary files
- • Path to captured log: _build/testo/status/testo_tests/afc104393bac/log
- [PASS] 8ffa228d38e7 error formatting long tuple
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/8ffa228d38e7/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/8ffa228d38e7/stderr
- • Path to captured log: _build/testo/status/testo_tests/8ffa228d38e7/log
- [PASS] de010ee95914 error formatting long list
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/de010ee95914/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/de010ee95914/stderr
- • Path to captured log: _build/testo/status/testo_tests/de010ee95914/log
- [PASS] b347f3932e7d tag selection > complex out
- • Path to captured log: _build/testo/status/testo_tests/b347f3932e7d/log
- [PASS] 10daafb2d3e3 error formatting multiline quoted string
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/10daafb2d3e3/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/10daafb2d3e3/stderr
- • Path to captured log: _build/testo/status/testo_tests/10daafb2d3e3/log
- [PASS] 4afe6ca04afb error formatting text
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/4afe6ca04afb/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/4afe6ca04afb/stderr
- • Path to captured log: _build/testo/status/testo_tests/4afe6ca04afb/log
- [PASS] 0c9b830b2217 error formatting
- • Checked output: stderr
- • Path to expected stderr: tests/snapshots/testo_tests/0c9b830b2217/stderr
- • Path to captured stderr: _build/testo/status/testo_tests/0c9b830b2217/stderr
- • Path to captured log: _build/testo/status/testo_tests/0c9b830b2217/log
- [PASS] 7e7e7c09bfff check for substrings in stdout
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_tests/7e7e7c09bfff/stdout
- • Path to captured stdout: _build/testo/status/testo_tests/7e7e7c09bfff/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_tests/7e7e7c09bfff/log
- [PASS] 99746f633129 check words in stdout
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_tests/99746f633129/stdout
- • Path to captured stdout: _build/testo/status/testo_tests/99746f633129/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_tests/99746f633129/log
- [PASS] d5b0041ea8f4 check for substring in stdout
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_tests/d5b0041ea8f4/stdout
- • Path to captured stdout: _build/testo/status/testo_tests/d5b0041ea8f4/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_tests/d5b0041ea8f4/log
- [PASS] 2f713596bc5a keep matching lines
- • Path to captured log: _build/testo/status/testo_tests/2f713596bc5a/log
- [PASS] d07f2170491b remove matching lines
- • Path to captured log: _build/testo/status/testo_tests/d07f2170491b/log
- [PASS] df76b0fc2d37 filter_map_lines
- • Path to captured log: _build/testo/status/testo_tests/df76b0fc2d37/log
- [PASS] 130a6f0e870f contains pcre pattern
- • Path to captured log: _build/testo/status/testo_tests/130a6f0e870f/log
- [PASS] 59046838dc2d contains substring
- • Path to captured log: _build/testo/status/testo_tests/59046838dc2d/log
- [PASS] cb1a0033f274 mask exotic temp paths
- • Path to captured log: _build/testo/status/testo_tests/cb1a0033f274/log
- [PASS] e8a3ba3cf9b4 mask_temp_paths
- • Path to captured log: _build/testo/status/testo_tests/e8a3ba3cf9b4/log
- [PASS] 3b24997d50c8 mask_pcre_pattern
- • Path to captured log: _build/testo/status/testo_tests/3b24997d50c8/log
- [PASS] a3e1a604f579 masked
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_tests/a3e1a604f579/stdout
- • Path to captured stdout: _build/testo/status/testo_tests/a3e1a604f579/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_tests/a3e1a604f579/log
- [XFAIL] df3dde6aa501 with environment variables bad
- • Expected to fail: fail to restore environment variable
- • Path to captured log: _build/testo/status/testo_tests/df3dde6aa501/log
- [PASS] c10b96c9a177 with environment variables ok
- • Path to captured log: _build/testo/status/testo_tests/c10b96c9a177/log
- [PASS] 91a3c9030236 chdir
- • Path to captured log: _build/testo/status/testo_tests/91a3c9030236/log
- [PASS] a55170a13733 tracking URL
- • Tracking URL: https://example.com/issue/1234
- • Path to captured log: _build/testo/status/testo_tests/a55170a13733/log
- [SKIP: some reason] e52e279299e9 skipped
- [XFAIL] 85349a4a9157 xfail
- • Expected to fail: raises exception on purpose
- • Path to captured log: _build/testo/status/testo_tests/85349a4a9157/log
- [XFAIL] d01c1bdbafaa don't show exception on xfail
- • Expected to fail: raises Failure exception on purpose
- • Path to captured log: _build/testo/status/testo_tests/d01c1bdbafaa/log
- [XFAIL] 0ac34585feff auto show exception on xfail
- • Expected to fail: raises Failure exception on purpose
- • Path to captured log: _build/testo/status/testo_tests/0ac34585feff/log
- [XFAIL] c86c9fc3ac85 show exception on xfail
- • Expected to fail: raises Failure exception on purpose
- • Path to captured log: _build/testo/status/testo_tests/c86c9fc3ac85/log
- • Log (stdout, stderr) is empty.
- • Exception raised by the test:
- Failure("This exception was raised on purpose")
- Raised at Stdlib.failwith in file "stdlib.ml", line 29, characters 17-33
- Called from Testo__Promise.protect.(fun) in file "core/Promise.ml", line 31, characters 6-13
- Called from Testo__Monad.catch in file "core/Monad.ml", line 14, characters 6-13
- Re-raised at Testo__Promise.protect.(fun) in file "core/Promise.ml", line 34, characters 36-75
- Called from Testo__Promise.protect.(fun) in file "core/Promise.ml", line 31, characters 6-13
- ... (for the full stack backtrace, use --stack-backtrace, -v, or --verbose)
- [XFAIL*] 894b5f5931fd fail to capture one file
- • Expected to fail: must raise exception
- • Checked output file: results.txt
- • Missing captured output file: _build/testo/status/testo_tests/894b5f5931fd/file-results.txt [cwd: /home/opam/.opam/5.4/.opam-switch/build/testo.0.4.0]
- • If you ran the test already, you may have forgotten to call 'Testo.stash_output_file' in the test function.
- • Missing file containing the expected output: tests/snapshots/testo_tests/894b5f5931fd/file-results.txt [cwd: /home/opam/.opam/5.4/.opam-switch/build/testo.0.4.0]
- • Path to captured log: _build/testo/status/testo_tests/894b5f5931fd/log
- • Path to expected results.txt: tests/snapshots/testo_tests/894b5f5931fd/file-results.txt
- • Path to captured results.txt: _build/testo/status/testo_tests/894b5f5931fd/file-results.txt
- [PASS] d0fb18eaf104 capture one file
- • Checked output file: results.txt
- • Path to captured log: _build/testo/status/testo_tests/d0fb18eaf104/log
- • Path to expected results.txt: tests/snapshots/testo_tests/d0fb18eaf104/file-results.txt
- • Path to captured results.txt: _build/testo/status/testo_tests/d0fb18eaf104/file-results.txt
- [PASS] 68358d78cb0b unchecked stderr
- • Path to captured log: _build/testo/status/testo_tests/68358d78cb0b/log
- [PASS] 2c57c8917bfb unchecked stdout
- • Path to captured log: _build/testo/status/testo_tests/2c57c8917bfb/log
- [PASS] 0c2f56ef73e6 text fail if DEMO is set
- • Path to captured log: _build/testo/status/testo_tests/0c2f56ef73e6/log
- [PASS] c97a5036c7e6 string list fail if DEMO is set
- • Path to captured log: _build/testo/status/testo_tests/c97a5036c7e6/log
- [PASS] a885dcf169da checked output file names
- • Path to captured log: _build/testo/status/testo_tests/a885dcf169da/log
- [PASS] bd1c5167dc34 category > subcategory > category
- • Path to captured log: _build/testo/status/testo_tests/bd1c5167dc34/log
- [PASS] 8dbdda48fb87 simple
- • Path to captured log: _build/testo/status/testo_tests/8dbdda48fb87/log
- 88/88 selected tests:
- 2 skipped
- 86 successful (80 pass, 6 xfail)
- 0 unsuccessful (0 fail, 0 xpass)
- overall status: success
- (cd _build/default/tests && ./meta_test.exe -C ../../..)
- Legend:
- • [PASS]: a successful test that was expected to succeed (good);
- • [FAIL]: a failing test that was expected to succeed (needs fixing);
- • [XFAIL]: a failing test that was expected to fail (tolerated failure);
- • [XPASS]: a successful test that was expected to fail (progress?).
- • [MISS]: a test that never ran;
- • [SKIP]: a test that is always skipped but kept around for some reason;
- • [xxxx*]: a new test for which there's no expected output yet.
- In this case, you should review the test output and run the 'approve'
- subcommand once you're satisfied with the output.
- Try '--help' for options. Use '--expert' to hide this legend.
- [RUN] fccf02a5c37e standard flow
- [PASS] fccf02a5c37e standard flow
- • Checked output: merged stdout and stderr
- • Path to expected stdxxx: tests/snapshots/testo_meta_tests/fccf02a5c37e/stdxxx
- • Path to captured stdxxx: _build/testo/status/testo_meta_tests/fccf02a5c37e/stdxxx [.orig]
- [RUN] a1982e6b3f31 fewer workers than tests
- [PASS] a1982e6b3f31 fewer workers than tests
- • Checked output: merged stdout and stderr
- • Path to expected stdxxx: tests/snapshots/testo_meta_tests/a1982e6b3f31/stdxxx
- • Path to captured stdxxx: _build/testo/status/testo_meta_tests/a1982e6b3f31/stdxxx [.orig]
- [RUN] f69772f11d92 more workers than tests
- [PASS] f69772f11d92 more workers than tests
- • Checked output: merged stdout and stderr
- • Path to expected stdxxx: tests/snapshots/testo_meta_tests/f69772f11d92/stdxxx
- • Path to captured stdxxx: _build/testo/status/testo_meta_tests/f69772f11d92/stdxxx [.orig]
- [RUN] e08f1a2376cc failing flow run
- [XFAIL] e08f1a2376cc failing flow run
- • Expected to fail: the invoked test suite is designed to fail
- • Path to captured log: _build/testo/status/testo_meta_tests/e08f1a2376cc/log
- [RUN] aab772337325 failing flow status
- [XFAIL] aab772337325 failing flow status
- • Expected to fail: the invoked test suite is designed to fail
- • Path to captured log: _build/testo/status/testo_meta_tests/aab772337325/log
- [RUN] 596c793ae5e2 timeout flow run
- [PASS] 596c793ae5e2 timeout flow run
- • Path to captured log: _build/testo/status/testo_meta_tests/596c793ae5e2/log
- [RUN] 7f655ecdf1f2 timeout flow status
- [PASS] 7f655ecdf1f2 timeout flow status
- • Checked output: merged stdout and stderr
- • Path to expected stdxxx: tests/snapshots/testo_meta_tests/7f655ecdf1f2/stdxxx
- • Path to captured stdxxx: _build/testo/status/testo_meta_tests/7f655ecdf1f2/stdxxx [.orig]
- [RUN] 293e6233c5a2 output masking for failing tests
- [XFAIL] 293e6233c5a2 output masking for failing tests
- • Expected to fail: expected to fail
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_meta_tests/293e6233c5a2/stdout
- • Path to captured stdout: _build/testo/status/testo_meta_tests/293e6233c5a2/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_meta_tests/293e6233c5a2/log
- [RUN] 14c5e5fd13eb approve xfail
- [PASS] 14c5e5fd13eb approve xfail
- • Checked output: merged stdout and stderr
- • Path to expected stdxxx: tests/snapshots/testo_meta_tests/14c5e5fd13eb/stdxxx
- • Path to captured stdxxx: _build/testo/status/testo_meta_tests/14c5e5fd13eb/stdxxx
- [RUN] 1915e1b1e032 multi selection
- [PASS] 1915e1b1e032 multi selection
- • Path to captured log: _build/testo/status/testo_meta_tests/1915e1b1e032/log
- [RUN] c381881a6f9a new output file capture
- [PASS] c381881a6f9a new output file capture
- • Path to captured log: _build/testo/status/testo_meta_tests/c381881a6f9a/log
- [RUN] dab7f8a516ce updated output file capture
- [PASS] dab7f8a516ce updated output file capture
- • Path to captured log: _build/testo/status/testo_meta_tests/dab7f8a516ce/log
- [RUN] 09a1af4a20b0 max inline log size
- [PASS] 09a1af4a20b0 max inline log size
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_meta_tests/09a1af4a20b0/stdout
- • Path to captured stdout: _build/testo/status/testo_meta_tests/09a1af4a20b0/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_meta_tests/09a1af4a20b0/log
- [RUN] b44050392a05 no max inline log size
- [PASS] b44050392a05 no max inline log size
- • Checked output: stdout
- • Path to expected stdout: tests/snapshots/testo_meta_tests/b44050392a05/stdout
- • Path to captured stdout: _build/testo/status/testo_meta_tests/b44050392a05/stdout [.orig]
- • Path to captured log: _build/testo/status/testo_meta_tests/b44050392a05/log
- 1 folder no longer belongs to the test suite and can be removed manually or with '--autoclean':
- tests/snapshots/testo_meta_tests/a6f0e8152651 approve output that used to be incorrect but tolerated: XFAIL -> XPASS
- 14/14 selected tests:
- 14 successful (11 pass, 3 xfail)
- 0 unsuccessful (0 fail, 0 xpass)
- overall status: success
-> compiled testo.0.4.0
-> removed testo.0.4.0
-> installed testo.0.4.0
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 22:16.14 ---> saved as "751ad77243b9c1308dca7803312aaf1d953cf90cfc06a8578ecf8b6b93e51fdd"
Job succeeded
2026-03-25 22:16.49: Job succeeded