2024-10-31 08:12.37: New job: test ocaml-multicore/eio https://github.com/ocaml-multicore/eio.git#refs/pull/772/head (554a815774e9394d60e9da2abb4ea0e0a5e205db) (linux-x86_64:fedora-40-5.2_opam-2.2) Base: ocaml/opam:fedora-40-ocaml-5.2@sha256:01f745e53b60b25db2d86c8d44164d5f234b2f531a029ff30fce71ee4bffd031 Opam project build To reproduce locally: git clone --recursive "https://github.com/ocaml-multicore/eio.git" && cd "eio" && git fetch origin "refs/pull/772/head" && git reset --hard 554a8157 cat > Dockerfile <<'END-OF-DOCKERFILE' FROM ocaml/opam:fedora-40-ocaml-5.2@sha256:01f745e53b60b25db2d86c8d44164d5f234b2f531a029ff30fce71ee4bffd031 # fedora-40-5.2_opam-2.2 USER 1000:1000 ENV CLICOLOR_FORCE="1" ENV OPAMCOLOR="always" WORKDIR /src RUN sudo dnf install -y findutils RUN sudo ln -f /usr/bin/opam-2.2 /usr/bin/opam RUN opam init --reinit -ni RUN uname -rs && opam exec -- ocaml -version && opam --version WORKDIR /src RUN sudo chown opam /src RUN cd ~/opam-repository && (git cat-file -e b876d7d37014df697368765c088aa86d24dc8b6b || git fetch origin master) && git reset -q --hard b876d7d37014df697368765c088aa86d24dc8b6b && git log --no-decorate -n1 --oneline && opam update -u COPY --chown=1000:1000 eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam ./ RUN opam pin add -yn eio_windows.dev './' && \ opam pin add -yn eio_posix.dev './' && \ opam pin add -yn eio_main.dev './' && \ opam pin add -yn eio_linux.dev './' && \ opam pin add -yn eio.dev './' ENV DEPS="afl-persistent.1.4 alcotest.1.8.0 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-bytes.base base-domains.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.1.3.0 containers.3.14 cppo.1.7.0 crowbar.0.2.1 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.16.0 dune-configurator.3.16.0 either.1.0.0 fmt.0.9.0 hmap.0.8.1 host-arch-x86_64.1 host-system-other.1 iomux.0.3 kcas.0.7.0 logs.0.7.0 lwt-dllist.1.0.1 mdx.2.4.1 mtime.2.1.0 multicore-magic.2.3.0 ocaml.5.2.0 ocaml-base-compiler.5.2.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.3.6.9 ocamlbuild.0.15.0 ocamlfind.1.9.6 ocplib-endian.1.2 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.12.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.0.7 tsort.2.1.0 uring.0.9 uutf.1.0.3 yojson.2.2.2" ENV CI="true" ENV OCAMLCI="true" RUN opam update --depexts && opam install --cli=2.2 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPS RUN opam install $DEPS COPY --chown=1000:1000 . /src RUN opam exec -- dune build @install @check @runtest && rm -rf _build END-OF-DOCKERFILE docker build . END-REPRO-BLOCK 2024-10-31 08:12.37: Using cache hint "ocaml-multicore/eio-ocaml/opam:fedora-40-ocaml-5.2@sha256:01f745e53b60b25db2d86c8d44164d5f234b2f531a029ff30fce71ee4bffd031-fedora-40-5.2_opam-2.2-6fe78b3be14f8858307ce0c1b92bd107" 2024-10-31 08:12.37: Using OBuilder spec: ((from ocaml/opam:fedora-40-ocaml-5.2@sha256:01f745e53b60b25db2d86c8d44164d5f234b2f531a029ff30fce71ee4bffd031) (comment fedora-40-5.2_opam-2.2) (user (uid 1000) (gid 1000)) (env CLICOLOR_FORCE 1) (env OPAMCOLOR always) (workdir /src) (run (network host) (shell "sudo dnf install -y findutils")) (run (shell "sudo ln -f /usr/bin/opam-2.2 /usr/bin/opam")) (run (shell "opam init --reinit -ni")) (run (shell "uname -rs && opam exec -- ocaml -version && opam --version")) (workdir /src) (run (shell "sudo chown opam /src")) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "cd ~/opam-repository && (git cat-file -e b876d7d37014df697368765c088aa86d24dc8b6b || git fetch origin master) && git reset -q --hard b876d7d37014df697368765c088aa86d24dc8b6b && git log --no-decorate -n1 --oneline && opam update -u")) (copy (src eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam) (dst ./)) (run (network host) (shell "opam pin add -yn eio_windows.dev './' && \ \nopam pin add -yn eio_posix.dev './' && \ \nopam pin add -yn eio_main.dev './' && \ \nopam pin add -yn eio_linux.dev './' && \ \nopam pin add -yn eio.dev './'")) (env DEPS "afl-persistent.1.4 alcotest.1.8.0 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-bytes.base base-domains.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.1.3.0 containers.3.14 cppo.1.7.0 crowbar.0.2.1 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.16.0 dune-configurator.3.16.0 either.1.0.0 fmt.0.9.0 hmap.0.8.1 host-arch-x86_64.1 host-system-other.1 iomux.0.3 kcas.0.7.0 logs.0.7.0 lwt-dllist.1.0.1 mdx.2.4.1 mtime.2.1.0 multicore-magic.2.3.0 ocaml.5.2.0 ocaml-base-compiler.5.2.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.3.6.9 ocamlbuild.0.15.0 ocamlfind.1.9.6 ocplib-endian.1.2 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.12.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.0.7 tsort.2.1.0 uring.0.9 uutf.1.0.3 yojson.2.2.2") (env CI true) (env OCAMLCI true) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam update --depexts && opam install --cli=2.2 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPS")) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam install $DEPS")) (copy (src .) (dst /src)) (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build")) ) 2024-10-31 08:12.37: Waiting for resource in pool OCluster 2024-10-31 08:12.37: Waiting for worker… 2024-10-31 08:13.49: Got resource from pool OCluster Building on x86-bm-c18.sw.ocaml.org HEAD is now at dc2a544 Switch test HEAD is now at 554a815 Update fs.ml (from ocaml/opam:fedora-40-ocaml-5.2@sha256:01f745e53b60b25db2d86c8d44164d5f234b2f531a029ff30fce71ee4bffd031) 2024-10-31 08:16.18 ---> saved as "f4df49011c48fca1e2906ca94725919ee88acf135892b91b4daf6d7aae07036a" /: (comment fedora-40-5.2_opam-2.2) /: (user (uid 1000) (gid 1000)) /: (env CLICOLOR_FORCE 1) /: (env OPAMCOLOR always) /: (workdir /src) /src: (run (network host) (shell "sudo dnf install -y findutils")) Fedora 40 - x86_64 250 kB/s | 28 kB 00:00 Fedora 40 openh264 (From Cisco) - x86_64 15 kB/s | 989 B 00:00 Fedora 40 - x86_64 - Updates 309 kB/s | 24 kB 00:00 Fedora 40 - x86_64 - Updates 6.2 MB/s | 6.7 MB 00:01 Package findutils-1:4.9.0-9.fc40.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! 2024-10-31 08:16.28 ---> saved as "d1c5ad150afabd374d7419b73240133d2af530b8ed4a5219d9cd461b93087961" /src: (run (shell "sudo ln -f /usr/bin/opam-2.2 /usr/bin/opam")) 2024-10-31 08:16.28 ---> saved as "2ae49618602e866e618b2c55d9f9292e999a3f30ee255ed59692b858966c6f99" /src: (run (shell "opam init --reinit -ni")) Configuring from /home/opam/.opamrc and then 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 development 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 39 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=39 --global Format upgrade done. <><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><> [default] synchronised from file:///home/opam/opam-repository 2024-10-31 08:17.53 ---> saved as "dad10fade351a2aaf19c0c4102334cb3bb0bf4c4b70d679d5877e0017486b2c1" /src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version")) Linux 5.15.0-122-generic The OCaml toplevel, version 5.2.0 2.2.1 2024-10-31 08:17.53 ---> saved as "48681c44578ad7d1ce114fa95ded8b5eab96195034c28a0b7dbe7840980ae566" /src: (workdir /src) /src: (run (shell "sudo chown opam /src")) 2024-10-31 08:17.54 ---> saved as "ad7620ed068f9ef7c0d14bc86c9e99ac8f1ea1a1b3bfe762c395b4af6be707b6" /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "cd ~/opam-repository && (git cat-file -e b876d7d37014df697368765c088aa86d24dc8b6b || git fetch origin master) && git reset -q --hard b876d7d37014df697368765c088aa86d24dc8b6b && git log --no-decorate -n1 --oneline && opam update -u")) From https://github.com/ocaml/opam-repository * branch master -> FETCH_HEAD 75006f8c5e..d872638bdf master -> origin/master b876d7d370 Merge pull request #26641 from polytypic/release-backoff-0.1.1 <><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> [default] synchronised from file:///home/opam/opam-repository Everything as up-to-date as possible (run with --verbose to show unavailable upgrades). However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages. Nothing to do. # Run eval $(opam env) to update the current shell environment 2024-10-31 08:18.59 ---> saved as "6a0ce4d381bf046c985832a47a7ecd611d1ecf87f91b1895cbaa3f98d9208bf3" /src: (copy (src eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam) (dst ./)) 2024-10-31 08:18.59 ---> saved as "6bb3949f33fa28e5060c51c33ec5dc4dcd0ccea7550af99b35e8062d5abef745" /src: (run (network host) (shell "opam pin add -yn eio_windows.dev './' && \ \nopam pin add -yn eio_posix.dev './' && \ \nopam pin add -yn eio_main.dev './' && \ \nopam pin add -yn eio_linux.dev './' && \ \nopam pin add -yn eio.dev './'")) [eio_windows.dev] synchronised (file:///src) eio_windows is now pinned to file:///src (version dev) [eio_posix.dev] synchronised (file:///src) eio_posix is now pinned to file:///src (version dev) [eio_main.dev] synchronised (file:///src) eio_main is now pinned to file:///src (version dev) [eio_linux.dev] synchronised (file:///src) eio_linux is now pinned to file:///src (version dev) [eio.dev] synchronised (file:///src) eio is now pinned to file:///src (version dev) 2024-10-31 08:19.06 ---> saved as "2e9f8a6cc702f3b8501cfbc24b3f1e4103d92210840aad78dbffbc556d2c7d3e" /src: (env DEPS "afl-persistent.1.4 alcotest.1.8.0 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-bytes.base base-domains.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.1.3.0 containers.3.14 cppo.1.7.0 crowbar.0.2.1 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.16.0 dune-configurator.3.16.0 either.1.0.0 fmt.0.9.0 hmap.0.8.1 host-arch-x86_64.1 host-system-other.1 iomux.0.3 kcas.0.7.0 logs.0.7.0 lwt-dllist.1.0.1 mdx.2.4.1 mtime.2.1.0 multicore-magic.2.3.0 ocaml.5.2.0 ocaml-base-compiler.5.2.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.3.6.9 ocamlbuild.0.15.0 ocamlfind.1.9.6 ocplib-endian.1.2 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.12.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.0.7 tsort.2.1.0 uring.0.9 uutf.1.0.3 yojson.2.2.2") /src: (env CI true) /src: (env OCAMLCI true) /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam update --depexts && opam install --cli=2.2 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPS")) + /usr/bin/sudo "yum" "makecache" - Fedora 40 - x86_64 252 kB/s | 28 kB 00:00 - Fedora 40 openh264 (From Cisco) - x86_64 15 kB/s | 989 B 00:00 - Fedora 40 - x86_64 - Updates 301 kB/s | 24 kB 00:00 - Metadata cache created. <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> [eio.dev] synchronised (no changes) [eio_linux.dev] synchronised (no changes) [eio_main.dev] synchronised (no changes) [eio_posix.dev] synchronised (no changes) [eio_windows.dev] synchronised (no changes) [NOTE] Package ocaml-options-vanilla is already installed (current version is 1). [NOTE] Package ocaml-config is already installed (current version is 3). [NOTE] Package ocaml-base-compiler is already installed (current version is 5.2.0). [NOTE] Package ocaml is already installed (current version is 5.2.0). [NOTE] Package host-system-other is already installed (current version is 1). [NOTE] Package host-arch-x86_64 is already installed (current version is 1). [NOTE] Package base-unix is already installed (current version is base). [NOTE] Package base-threads is already installed (current version is base). [NOTE] Package base-nnp is already installed (current version is base). [NOTE] Package base-domains is already installed (current version is base). [NOTE] Package base-bigarray is already installed (current version is base). 2024-10-31 08:19.29 ---> saved as "ec223b5e3e4032fed44cc493177cd7061733b8258d7345a408024644cba0c0f4" /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam install $DEPS")) [NOTE] Package ocaml-options-vanilla is already installed (current version is 1). [NOTE] Package ocaml-config is already installed (current version is 3). [NOTE] Package ocaml-base-compiler is already installed (current version is 5.2.0). [NOTE] Package ocaml is already installed (current version is 5.2.0). [NOTE] Package host-system-other is already installed (current version is 1). [NOTE] Package host-arch-x86_64 is already installed (current version is 1). [NOTE] Package base-unix is already installed (current version is base). [NOTE] Package base-threads is already installed (current version is base). [NOTE] Package base-nnp is already installed (current version is base). [NOTE] Package base-domains is already installed (current version is base). [NOTE] Package base-bigarray is already installed (current version is base). The following actions will be performed: === install 46 packages - install afl-persistent 1.4 - install alcotest 1.8.0 - install astring 0.8.5 - install backoff 0.1.1 - install base-bytes base - install bigstringaf 0.10.0 - install camlp-streams 5.0.1 - install cmdliner 1.3.0 - install containers 3.14 - install cppo 1.7.0 - install crowbar 0.2.1 - install csexp 1.5.2 - install cstruct 6.2.0 - install domain-local-await 1.0.1 - install domain-local-timeout 1.0.1 - install dscheck 0.5.0 - install dune 3.16.0 - install dune-configurator 3.16.0 - install either 1.0.0 - install fmt 0.9.0 - install hmap 0.8.1 - install iomux 0.3 - install kcas 0.7.0 - install logs 0.7.0 - install lwt-dllist 1.0.1 - install mdx 2.4.1 - install mtime 2.1.0 - install multicore-magic 2.3.0 - install ocaml-syntax-shims 1.0.0 - install ocaml-version 3.6.9 - install ocamlbuild 0.15.0 - install ocamlfind 1.9.6 - install ocplib-endian 1.2 - install optint 0.3.0 - install oseq 0.5.1 - install psq 0.2.1 - install re 1.12.0 - install result 1.5 - install seq base - install stdlib-shims 0.3.0 - install thread-table 1.0.0 - install topkg 1.0.7 - install tsort 2.1.0 - install uring 0.9 - install uutf 1.0.3 - install yojson 2.2.2 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> retrieved afl-persistent.1.4 (cached) -> retrieved backoff.0.1.1 (cached) -> retrieved astring.0.8.5 (cached) -> retrieved bigstringaf.0.10.0 (cached) -> retrieved camlp-streams.5.0.1 (cached) -> retrieved alcotest.1.8.0 (cached) -> retrieved cmdliner.1.3.0 (cached) -> retrieved containers.3.14 (cached) -> retrieved cppo.1.7.0 (cached) -> retrieved crowbar.0.2.1 (cached) -> retrieved csexp.1.5.2 (cached) -> retrieved domain-local-await.1.0.1 (cached) -> retrieved domain-local-timeout.1.0.1 (cached) -> retrieved cstruct.6.2.0 (cached) -> retrieved dscheck.0.5.0 (cached) -> retrieved either.1.0.0 (cached) -> retrieved fmt.0.9.0 (cached) -> retrieved hmap.0.8.1 (cached) -> retrieved iomux.0.3 (cached) -> retrieved kcas.0.7.0 (cached) -> retrieved logs.0.7.0 (cached) -> retrieved lwt-dllist.1.0.1 (cached) -> retrieved mdx.2.4.1 (cached) -> retrieved mtime.2.1.0 (cached) -> retrieved multicore-magic.2.3.0 (cached) -> retrieved ocaml-syntax-shims.1.0.0 (cached) -> retrieved ocaml-version.3.6.9 (cached) -> retrieved ocamlbuild.0.15.0 (cached) -> retrieved ocamlfind.1.9.6 (cached) -> retrieved ocplib-endian.1.2 (cached) -> retrieved optint.0.3.0 (cached) -> retrieved oseq.0.5.1 (cached) -> retrieved psq.0.2.1 (cached) -> retrieved dune.3.16.0, dune-configurator.3.16.0 (cached) -> retrieved seq.base (cached) -> installed seq.base -> retrieved re.1.12.0 (cached) -> retrieved result.1.5 (cached) -> retrieved stdlib-shims.0.3.0 (cached) -> retrieved thread-table.1.0.0 (cached) -> retrieved tsort.2.1.0 (cached) -> retrieved uutf.1.0.3 (cached) -> retrieved topkg.1.0.7 (cached) -> retrieved yojson.2.2.2 (cached) -> installed cmdliner.1.3.0 -> retrieved uring.0.9 (cached) -> installed ocamlbuild.0.15.0 -> installed ocamlfind.1.9.6 -> installed base-bytes.base -> installed topkg.1.0.7 -> installed hmap.0.8.1 -> installed fmt.0.9.0 -> installed mtime.2.1.0 -> installed uutf.1.0.3 -> installed astring.0.8.5 -> installed logs.0.7.0 -> installed dune.3.16.0 -> installed lwt-dllist.1.0.1 -> installed csexp.1.5.2 -> installed backoff.0.1.1 -> installed camlp-streams.5.0.1 -> installed cppo.1.7.0 -> installed cstruct.6.2.0 -> installed either.1.0.0 -> installed multicore-magic.2.3.0 -> installed ocaml-syntax-shims.1.0.0 -> installed ocaml-version.3.6.9 -> installed optint.0.3.0 -> installed oseq.0.5.1 -> installed psq.0.2.1 -> installed re.1.12.0 -> installed result.1.5 -> installed stdlib-shims.0.3.0 -> installed thread-table.1.0.0 -> installed tsort.2.1.0 -> installed ocplib-endian.1.2 -> installed afl-persistent.1.4 -> installed yojson.2.2.2 -> installed domain-local-timeout.1.0.1 -> installed domain-local-await.1.0.1 -> installed crowbar.0.2.1 -> installed kcas.0.7.0 -> installed alcotest.1.8.0 -> installed dune-configurator.3.16.0 -> installed mdx.2.4.1 -> installed bigstringaf.0.10.0 -> installed iomux.0.3 -> installed containers.3.14 -> installed uring.0.9 -> installed dscheck.0.5.0 Done. <><> afl-persistent.1.4 installed successfully ><><><><><><><><><><><><><><><><> => afl-persistent is installed, but since the current OCaml compiler does not enable AFL instrumentation by default, most packages will not be instrumented and fuzzing with afl-fuzz may not be effective. To globally enable AFL instrumentation, create an OCaml switch like: opam switch create 5.2.0+afl ocaml-variants.5.2.0+options ocaml-option-afl # Run eval $(opam env) to update the current shell environment 2024-10-31 08:20.33 ---> saved as "6499a65f684d322de4568f8ea2f7c402c5f4bd2d2b6b32375afe3256f14ac5c8" /src: (copy (src .) (dst /src)) 2024-10-31 08:20.33 ---> saved as "b746aee682177a3e600749046091d2459e9418ed25a07f9f79dcf1b3d94b87e8" /src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build")) (cd _build/default/fuzz && ./fuzz_inherit_fds.exe) inherit_fds: PASS (cd _build/default/fuzz && ./fuzz_buf_write.exe) random ops: PASS (cd _build/default/fuzz && ./fuzz_buf_read.exe) random ops: PASS (cd _build/default/lib_eio_linux/tests && ./test.exe) Testing `eio_linux'. This run has ID `OEDOU8HP'. [OK] io 0 copy. [OK] io 1 direct_copy. [OK] io 2 poll_add. [OK] io 3 poll_add_busy. [OK] io 4 iovec. [OK] io 5 no_sqe. [OK] io 6 read_exact. [OK] io 7 expose_backend. [OK] io 8 statx. [OK] io 9 signal_race. [OK] io 10 alloc-fixed-or-wait. Full test results in `/src/_build/default/lib_eio_linux/tests/_build/_tests/eio_linux'. Test Successful in 0.005s. 11 tests run. File "tests/fs.md", line 1, characters 0-0: /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/fs.md _build/default/tests/.mdx/fs.md.corrected diff --git a/_build/default/tests/fs.md b/_build/default/tests/.mdx/fs.md.corrected index 059bfd4..930dad9 100644 --- a/_build/default/tests/fs.md +++ b/_build/default/tests/.mdx/fs.md.corrected @@ -102,6 +102,11 @@ let try_chmod ~perm path = with ex -> Eio.Std.traceln "@[<h>%a@]" Eio.Exn.pp ex ``` +```mdx-error +Line 91, characters 7-32: +Warning 5 [ignored-partial-application]: this function application is partial, +maybe some arguments are missing. +``` # Basic test cases @@ -113,6 +118,7 @@ Creating a file and reading it back: Path.save ~create:(`Exclusive 0o666) (cwd / "test-file") "my-data"; traceln "Got %S" @@ Path.load (cwd / "test-file");; +Got "my-data" + - : unit = () ``` @@ -172,6 +178,7 @@ If-missing create succeeds if already exists: Path.save ~create:(`If_missing 0o666) test_file "2nd-write"; traceln "Got %S" @@ Path.load test_file;; +Got "2nd-write-original" + - : unit = () ``` @@ -185,6 +192,7 @@ Truncate create succeeds if already exists, and truncates: Path.save ~create:(`Or_truncate 0o666) test_file "2nd-write"; traceln "Got %S" @@ Path.load test_file;; +Got "2nd-write" + - : unit = () # Unix.unlink "test-file";; - : unit = () @@ -212,6 +220,7 @@ Appending to an existing file: Path.save ~create:`Never ~append:true test_file "2nd-write"; traceln "Got %S" @@ Path.load test_file;; +Got "1st-write-original2nd-write" + - : unit = () # Unix.unlink "test-file";; - : unit = () @@ -228,6 +237,7 @@ Appending to an existing file: ();; +mkdir <cwd:subdir> -> ok +mkdir <cwd:subdir/nested> -> ok + - : unit = () # Unix.unlink "subdir/nested/test-file"; Unix.rmdir "subdir/nested"; @@ -256,6 +266,7 @@ Creating directories with nesting, symlinks, etc: +Eio.Io Fs Permission_denied _, creating directory <cwd:../foo> +Eio.Io Fs Already_exists _, creating directory <cwd:to-subdir> +Eio.Io Fs Not_found _, creating directory <cwd:dangle/foo> + - : unit = () ``` @@ -322,6 +333,7 @@ Recursively creating directories with `mkdirs`. +mkdirs <cwd:subdir1/subdir2/subdir3/subdir4> -> ok +Eio.Io Fs Already_exists _, creating directory <cwd:subdir1/subdir2/subdir3/subdir4> +Eio.Io Fs Permission_denied _, examining <cwd:..>, creating directory <cwd:../outside> + - : unit = () ``` @@ -340,6 +352,7 @@ Some edge cases for `mkdirs`. +Eio.Io Fs Already_exists _, creating directory <cwd:././> +mkdirs <cwd:./test//////////////test> -> ok +Eio.Io Fs Permission_denied _, creating directory <cwd:..> + - : unit = () ``` @@ -373,6 +386,7 @@ You can remove a file using unlink: +write <cwd:subdir/file2> -> ok +unlink <cwd:to-subdir/file2> -> ok +Eio.Io Fs Not_found _, opening <cwd:subdir/file2> + - : unit = () ``` @@ -390,6 +404,7 @@ Removing something that doesn't exist or is out of scope: +Eio.Io Fs Permission_denied _, removing file <cwd:../foo> +Eio.Io Fs Not_found _, removing file <cwd:to-subdir/foo> +Eio.Io Fs Permission_denied _, removing file <cwd:to-root/foo> + - : unit = () ``` @@ -445,6 +460,7 @@ Reads and writes follow symlinks, but unlink operates on the symlink itself: +read <cwd:file1> -> "data1" +chdir ".." +read <cwd:file2> -> "data2" + - : unit = () ``` @@ -478,6 +494,7 @@ Similar to `unlink`, but works on directories: +mkdir <cwd:subdir/d3> -> ok +rmdir <cwd:to-subdir/d3> -> ok +Eio.Io Fs Not_found _, reading directory <cwd:subdir/d3> + - : unit = () ``` @@ -495,6 +512,7 @@ Removing something that doesn't exist or is out of scope: +Eio.Io Fs Permission_denied _, removing directory <cwd:../foo> +Eio.Io Fs Not_found _, removing directory <cwd:to-subdir/foo> +Eio.Io Fs Permission_denied _, removing directory <cwd:to-root/foo> + - : unit = () ``` @@ -520,6 +538,7 @@ Removing something that doesn't exist or is out of scope: +rmtree <cwd:foo> -> ok +But not without: +Eio.Io Fs Not_found _, removing file <cwd:foo> + - : unit = () ``` @@ -539,6 +558,7 @@ Create a sandbox, write a file with it, then read it from outside: +mkdir <cwd:sandbox> -> ok +Eio.Io Fs Permission_denied _, creating directory <sandbox:../new-sandbox> +Got "data" + - : unit = () ``` @@ -579,6 +599,7 @@ Create a sandbox, write a file with it, then read it from outside: +Eio.Io Fs Permission_denied _, opening directory <cwd:foo/up/../bar> +Eio.Io Fs Permission_denied _, opening directory <cwd:foo/root/..> +Eio.Io Fs Not_found _, opening directory <cwd:missing> + - : unit = () # Eio.Exn.Backend.show := false @@ -611,6 +632,7 @@ Using `cwd` we can't access the parent, but using `fs` we can: +mkdir <fs:../outside-cwd> -> ok +write <fs:../test-file> -> ok +chdir ".." + - : unit = () ``` @@ -639,6 +661,7 @@ Reading directory entries under `cwd` and outside of `cwd`. +Eio.Io Fs Permission_denied _, reading directory <readdir:..> +Eio.Io Fs Not_found _, reading directory <readdir:test-3> +read_dir <readdir:link-1> -> ["file"] + - : unit = () ``` @@ -652,6 +675,7 @@ An error from the underlying directory, not the sandbox: let cwd = Eio.Stdenv.cwd env in try_read_dir (cwd / "test-no-access");; +Eio.Io Fs Permission_denied _, reading directory <cwd:test-no-access> + - : unit = () # Unix.chmod "test-no-access" 0o700;; - : unit = () @@ -670,6 +694,7 @@ Can use `fs` to access absolute paths: Path.with_open_in (cwd / Filename.null) (fun flow -> Eio.Flow.copy flow (Eio.Flow.buffer_sink b));;; +Read "/dev/null" and got "" +Trying with cwd instead fails: + Exception: Eio.Io Fs Permission_denied _, opening <cwd:/dev/null> ``` @@ -694,6 +719,7 @@ Symlinking and sandboxing: +Eio.Io Fs Already_exists _, creating symlink <cwd:world.txt> -> hello.txt +symlink <cwd:root> -> "/" +Eio.Io Fs Permission_denied _, reading directory <cwd:root> + - : unit = () ``` @@ -709,6 +735,7 @@ Symlinking and sandboxing: +Line: one +Line: two +Line: three + - : unit = () ``` @@ -728,6 +755,7 @@ We can get the Unix FD from the flow and use it directly: traceln "Read %d bytes from null device" got );; +Read 0 bytes from null device + - : unit = () ``` @@ -744,6 +772,7 @@ In that case, `with_open_in` will no longer close it on exit: traceln "Read %d bytes from null device" got; Unix.close fd;; +Read 0 bytes from null device + - : unit = () ``` @@ -756,6 +785,7 @@ In that case, `with_open_in` will no longer close it on exit: failwith (Path.read_dir closed |> String.concat ",") with Invalid_argument _ -> traceln "Got Invalid_argument for closed FD";; +Got Invalid_argument for closed FD + - : unit = () ``` @@ -788,6 +818,7 @@ Confined: +rename <dir:bar> to <cwd:foo> -> ok +read <cwd:foo> -> "FOO" +Eio.Io Fs Permission_denied _, renaming <cwd:../foo> to <cwd:foo> + - : unit = () ``` @@ -803,6 +834,7 @@ Unconfined: +rename <dir:bar> to <fs:foo> -> ok +read <fs:foo> -> "FOO" +rename <fs:../foo> to <fs:foo> -> ok + - : unit = () ``` @@ -818,6 +850,7 @@ Unconfined: assert (Eio.Path.is_file (cwd / "stat_reg")); +mkdir <cwd:stat_subdir> -> ok +write <cwd:stat_reg> -> ok + - : unit = () ``` @@ -848,6 +881,7 @@ Unconfined: +<cwd:stat_subdir2/..> -> directory +<cwd:parent-symlink> -> symbolic link / Fs Permission_denied _ +<cwd:missing1/missing2> -> Fs Not_found _ + - : unit = () ``` @@ -870,6 +904,7 @@ Unconfined: +write <cwd:file> -> ok +Eio.Io _, reading target of symlink <cwd:file> +Eio.Io Fs Permission_denied _, reading target of symlink <cwd:../unknown> + - : unit = () ``` @@ -889,6 +924,7 @@ Check reading and writing vectors at arbitrary offsets: Eio.File.pread_exact file ~file_offset:(Int63.of_int 1) [buf1; buf2]; traceln" %S/%S" (Cstruct.to_string buf1) (Cstruct.to_string buf2);; + "-ab"/"c123" + - : unit = () ``` @@ -910,6 +946,7 @@ Reading at the end of a file: traceln "End-of-file";; +Read "abc" +End-of-file + - : unit = () ``` @@ -971,6 +1008,7 @@ Exception: Failure "Simulated error". +<native-sub:.> -> Some ./native-sub/. +<native-sub:..> -> Some ./native-sub/.. +<native-sub:/etc/passwd> -> Some /etc/passwd + - : unit = () ``` @@ -991,6 +1029,7 @@ Exception: Failure "Simulated error". +seek from start: 3 +relative seek: 5 +seek from end: 9 + - : unit = () ``` @@ -1017,6 +1056,7 @@ Exception: Failure "Simulated error". +"" / "" = "" +"" / "bar" = "bar" +"/" / "" = "/" + - : unit = () ``` "/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1 2024-10-31 08:20.49: Job failed: Failed: Build failed