(for PR #29582)

2026-03-25 13:14.40: New job: test testo.0.3.4 with ocaml-compiler.5.4.0, 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 5.4.0
RUN opam reinstall --update-invariant ocaml-compiler.5.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" != 'ocaml-compiler.5.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 testo.0.3.4; \
    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.3.4' && 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.3.4) || true
RUN opam reinstall --with-test --verbose testo.0.3.4; \
    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.3.4' && 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:14.40: Using cache hint "ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6-ocaml-compiler.5.4.0-testo.0.3.4-fa5fb3a6a806e832e4c7791145889a6bbe8b64ef"
2026-03-25 13:14.40: 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 5.4.0"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall --update-invariant ocaml-compiler.5.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\" != 'ocaml-compiler.5.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 (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall testo.0.3.4;\
             \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.3.4' && 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.3.4) || true"))
 (run (shell  "opam reinstall --with-test --verbose testo.0.3.4;\
             \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.3.4' && 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:14.40: Waiting for resource in pool OCluster
2026-03-25 18:10.38: Waiting for worker…
2026-03-25 18:13.42: Got resource from pool OCluster
Building on odawa.caelum.ci.dev
All commits already cached
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 18:13.50 ---> 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 18:13.50 ---> 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
[NOTE] The 'jobs' option was reset, its value was 71 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
           opam option jobs=71 --global
Format upgrade done.

<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-03-25 18:13.50 ---> 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                 255
# 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 18:13.50 ---> 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 18:13.50 ---> using "04a48515eea40c32b96da0c71328b4bba0edb66eed83d4f78554b39097cf1f25" from cache

/home/opam: (copy (src .) (dst opam-repository/))
2026-03-25 18:13.50 ---> using "034191995d824300f355cbba1072d6e5fe6d815701f24eb84d82c75009d73829" from cache

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-25 18:13.50 ---> 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 (10.7 MB/s)
- Reading package lists...
- 
2026-03-25 18:13.50 ---> using "a75782a571df4fc8f8933e94c681af881015ee87cdd4c652f8ae9af1d8cfad37" from cache

/home/opam: (run (shell "opam pin add -k version -yn ocaml-compiler.5.4.0 5.4.0"))
ocaml-compiler is now pinned to version 5.4.0
2026-03-25 18:13.50 ---> using "60e129f7398974b5fa5afc8f56ec09bd24a9182f5e9834464bfc959db1aa6b14" 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;\
                        \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' && 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 8 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-base-compiler 5.4.0 (pinned) [uses ocaml-compiler]
  - recompile ocaml-compiler      5.4.0 (pinned)
  - recompile ocaml-config        3              [uses ocaml-base-compiler]
  - recompile opam-depext         1.2.3          [uses ocaml]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-compiler.5.4.0  (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
-> installed ocaml-base-compiler.5.4.0
-> 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
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 18:13.50 ---> using "efbc92fc0c607605c8bb33f9e4c8fe340a48c67e14d2f61592db8a4edc5c0b15" from cache

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall testo.0.3.4;\
                        \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.3.4' && 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.3.4 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.3.4
  - install testo-diff          0.3.4   [required by testo-util]
  - install testo-util          0.3.4   [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)
-> installed cmdliner.2.1.0
-> retrieved testo.0.3.4, testo-diff.0.3.4, testo-util.0.3.4  (cached)
-> retrieved topkg.1.1.1  (cached)
-> 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 re.1.14.0
-> installed cppo.1.8.0
-> installed ocaml-compiler-libs.v0.17.0
-> installed ppxlib.0.37.0
-> installed ppx_deriving.6.1.1
-> installed testo-diff.0.3.4
-> installed testo-util.0.3.4
-> installed testo.0.3.4
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 18:14.35 ---> saved as "c6de243c568d7de2d1bf5c7cd70c2ec5e53b581283a1fa4d7c4c6c02248a6c5f"

/home/opam: (run (network host)
                 (shell "(opam reinstall --with-test testo.0.3.4) || true"))
The following actions will be performed:
=== recompile 1 package
  - recompile testo              0.3.4
=== 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.3.4  (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.3.4
-> installed uutf.1.0.4
-> installed alcotest.1.9.1
-> installed testo.0.3.4
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 18:14.44 ---> saved as "da9d7f84011f229acfda2b8073b749f39efaa9f69661f57c42d54e0c0d9a69bb"

/home/opam: (run (shell  "opam reinstall --with-test --verbose testo.0.3.4;\
                        \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.3.4' && 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.3.4

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/4: [testo.0.3.4: extract]
-> retrieved testo.0.3.4  (cached)
Processing  2/4: [testo: dune build]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "dune" "build" "-p" "testo" "-j" "255" "@install" "@runtest" (CWD=/home/opam/.opam/5.4/.opam-switch/build/testo.0.3.4)
- (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.
- [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 `BVT2O73N'.
- 
-   [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.3.4/_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.
- [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]   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]   ca552d6359ef diff > missing-eol
- [RUN]   08e4221951ee current test
- [RUN]   e06ba5b7f0ea write/read/map file
- [RUN]   76465929ce2f write/read/map file in place
- [RUN]   c97a5036c7e6 string list fail if DEMO is set
- [RUN]   0c2f56ef73e6 text fail if DEMO is set
- [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
- [RUN]   8a4a3d95651b Slice > chained 1/3 2/2
- [RUN]   a8cc405c1f92 Slice > chained 2/3 1/2
- [RUN]   74333515fe26 Slice > chained 2/3 2/2
- [RUN]   f53b982bad4a tag selection > simple in
- [RUN]   fede921dbdf2 tag selection > simple out
- [RUN]   76f34458096c tag selection > complex in
- [RUN]   b347f3932e7d tag selection > complex out
- [RUN]   0e636dc9c20f tag selection > not
- [RUN]   45f32faa1917 tag selection > all
- [RUN]   f81bfc072e53 tag selection > none
- [PASS]  f81bfc072e53 tag selection > none
- • Path to captured log: _build/testo/status/testo_tests/f81bfc072e53/log
- [PASS]  45f32faa1917 tag selection > all
- • Path to captured log: _build/testo/status/testo_tests/45f32faa1917/log
- [PASS]  0e636dc9c20f tag selection > not
- • Path to captured log: _build/testo/status/testo_tests/0e636dc9c20f/log
- [PASS]  b347f3932e7d tag selection > complex out
- • Path to captured log: _build/testo/status/testo_tests/b347f3932e7d/log
- [PASS]  76f34458096c tag selection > complex in
- • Path to captured log: _build/testo/status/testo_tests/76f34458096c/log
- [PASS]  fede921dbdf2 tag selection > simple out
- • Path to captured log: _build/testo/status/testo_tests/fede921dbdf2/log
- [PASS]  f53b982bad4a tag selection > simple in
- • Path to captured log: _build/testo/status/testo_tests/f53b982bad4a/log
- [PASS]  74333515fe26 Slice > chained 2/3 2/2
- • Path to captured log: _build/testo/status/testo_tests/74333515fe26/log
- [PASS]  a8cc405c1f92 Slice > chained 2/3 1/2
- • Path to captured log: _build/testo/status/testo_tests/a8cc405c1f92/log
- [PASS]  8a4a3d95651b Slice > chained 1/3 2/2
- • Path to captured log: _build/testo/status/testo_tests/8a4a3d95651b/log
- [PASS]  6adba8fe4ac9 Slice > long 3/3
- • Path to captured log: _build/testo/status/testo_tests/6adba8fe4ac9/log
- [PASS]  913605e2d932 Slice > long 2/3
- • Path to captured log: _build/testo/status/testo_tests/913605e2d932/log
- [PASS]  5a01ad65d512 Slice > long 1/3
- • Path to captured log: _build/testo/status/testo_tests/5a01ad65d512/log
- [PASS]  89fe151186d4 Slice > even 3/3
- • Path to captured log: _build/testo/status/testo_tests/89fe151186d4/log
- [PASS]  b0f035899167 Slice > even 2/3
- • Path to captured log: _build/testo/status/testo_tests/b0f035899167/log
- [PASS]  c248034012cb Slice > even 1/3
- • Path to captured log: _build/testo/status/testo_tests/c248034012cb/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]  69942982f070 Slice > short 1/5
- • Path to captured log: _build/testo/status/testo_tests/69942982f070/log
- [PASS]  5290cda648b1 Slice > empty 5/5
- • Path to captured log: _build/testo/status/testo_tests/5290cda648b1/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]  ec7514c8554d biohazard > fruit > kiwi
- • Path to captured log: _build/testo/status/testo_tests/ec7514c8554d/log
- [PASS]  33a93d234d01 biohazard > fruit > apple
- • Path to captured log: _build/testo/status/testo_tests/33a93d234d01/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]  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]  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]  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
- [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
-  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
-  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
-  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
-  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__Store.with_completion_status_capture.(fun) in file "core/Store.ml", line 680, characters 6-13
-  Called from Testo__Monad.catch in file "core/Monad.ml", line 14, characters 6-13
-  Re-raised at Testo__Store.with_completion_status_capture.(fun) in file "core/Store.ml", line 685, characters 7-44
-  Called from Testo__Run.catch_user_exception.(fun) in file "core/Run.ml", line 394, characters 6-13
-  Called from Testo__Monad.catch in file "core/Monad.ml", line 14, characters 6-13
-  
- [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.3.4]
- • 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.3.4]
- • 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]  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
- 86/86 selected tests:
-   1 skipped
-   85 successful (79 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.
- [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.3.4
-> removed   testo.0.3.4
-> installed testo.0.3.4
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 18:14.50 ---> saved as "a56356970c5caf270a758a68015fc80ef73314ad76c30ef848bb1a376c23eafb"
Job succeeded
2026-03-25 18:14.57: Job succeeded