diff --git a/otherlibs/cram/bin/dune b/otherlibs/cram/bin/dune index 5cb0b5db460..77357820cc2 100644 --- a/otherlibs/cram/bin/dune +++ b/otherlibs/cram/bin/dune @@ -1,7 +1,7 @@ (executable (name dune_cram) (libraries dune-private-libs.stdune dune-build-info cmdliner - build_path_prefix_map dune-private-libs.dune_re dune-configurator) + build_path_prefix_map dune-private-libs.dune_re) (preprocess (future_syntax))) (ocamllex cram_lexer) diff --git a/otherlibs/cram/bin/sanitize.ml b/otherlibs/cram/bin/sanitize.ml index 386d76fc450..789acb504dd 100644 --- a/otherlibs/cram/bin/sanitize.ml +++ b/otherlibs/cram/bin/sanitize.ml @@ -2,7 +2,6 @@ open Stdune open Cmdliner open Import.Let_syntax module Re = Dune_re -module Configurator = Configurator.V1 let rewrite_paths build_path_prefix_map = match Build_path_prefix_map.decode_map build_path_prefix_map with @@ -18,44 +17,9 @@ let rewrite_paths build_path_prefix_map = Re.replace abs_path_re s ~f:(fun g -> Build_path_prefix_map.rewrite map (Re.Group.get g 0)) -let make_ext_replace config = - let tbl = - List.filter_map [ "ext_exe"; "ext_dll"; "ext_asm"; "ext_lib"; "ext_obj" ] - ~f:(fun var -> - match Configurator.ocaml_config_var config var with - | Some "" -> None - | Some s -> Some (s, "$" ^ var) - | None -> ( - match (var, Configurator.ocaml_config_var config "system") with - | "ext_exe", Some "Win32" -> Some (".exe", var) - | _ -> None )) - in - let re = - Re.( - compile - (seq - [ diff any (char '/') - ; alt (List.map tbl ~f:(fun (s, _) -> str s)) - ; eow - ])) - in - let map = String.Map.of_list_reduce tbl ~f:(fun _ x -> x) in - fun s -> - Re.replace re s ~f:(fun g -> - let s = Re.Group.get g 0 in - sprintf "%c%s" s.[0] (String.Map.find_exn map (String.drop s 1))) - -let sanitizer = - let ext_replace = - if Option.is_some (Env.get Env.initial "INSIDE_DUNE") then - make_ext_replace (Configurator.create "sanitizer") - else - fun s -> - s - in - fun (command : Sanitizer.Command.t) -> - command.output |> Ansi_color.strip |> ext_replace - |> rewrite_paths command.build_path_prefix_map +let sanitizer (command : Sanitizer.Command.t) = + command.output |> Ansi_color.strip + |> rewrite_paths command.build_path_prefix_map let term = let+ () = Term.pure () in diff --git a/test/blackbox-tests/test-cases/block-strings.t/run.t b/test/blackbox-tests/test-cases/block-strings.t/run.t index 31be3a1e16d..ca8d9e6fd89 100644 --- a/test/blackbox-tests/test-cases/block-strings.t/run.t +++ b/test/blackbox-tests/test-cases/block-strings.t/run.t @@ -10,9 +10,9 @@ ARFLAGS="$ARFLAGS" \ CXX="$CXX" \ CXXFLAGS="$CXXFLAGS" \ - obj/libre2$ext_lib obj/so/libre2$ext_dll - cp libre2/obj/libre2$ext_lib libre2_c_stubs$ext_lib - cp libre2/obj/so/libre2$ext_dll dllre2_c_stubs$ext_dll + obj/libre2.a obj/so/libre2.so + cp libre2/obj/libre2.a libre2_c_stubs.a + cp libre2/obj/so/libre2.so dllre2_c_stubs.so ${.MAKE} -s -C libre2 clean $ dune build @new @@ -27,9 +27,9 @@ ARFLAGS="$ARFLAGS" \ CXX="$CXX" \ CXXFLAGS="$CXXFLAGS" \ - obj/libre2$ext_lib obj/so/libre2$ext_dll - cp libre2/obj/libre2$ext_lib libre2_c_stubs$ext_lib - cp libre2/obj/so/libre2$ext_dll dllre2_c_stubs$ext_dll + obj/libre2.a obj/so/libre2.so + cp libre2/obj/libre2.a libre2_c_stubs.a + cp libre2/obj/so/libre2.so dllre2_c_stubs.so ${.MAKE} -s -C libre2 clean $ dune build @quoting-test diff --git a/test/blackbox-tests/test-cases/cross-compilation.t/run.t b/test/blackbox-tests/test-cases/cross-compilation.t/run.t index bb1d9f67cf0..5cf7d22f8dd 100644 --- a/test/blackbox-tests/test-cases/cross-compilation.t/run.t +++ b/test/blackbox-tests/test-cases/cross-compilation.t/run.t @@ -23,7 +23,7 @@ 42 $ ls *.install p-foo.install - $ dune_cmd cat p-foo.install + $ dune_cmd cat p-foo.install | dune_cmd sanitize lib: [ "_build/install/default.foo/lib/p/META" {"../../foo-sysroot/lib/p/META"} "_build/install/default.foo/lib/p/dune-package" {"../../foo-sysroot/lib/p/dune-package"} diff --git a/test/blackbox-tests/test-cases/deprecated-library-name.t/run.t b/test/blackbox-tests/test-cases/deprecated-library-name.t/run.t index dbe64028124..c715c5d3928 100644 --- a/test/blackbox-tests/test-cases/deprecated-library-name.t/run.t +++ b/test/blackbox-tests/test-cases/deprecated-library-name.t/run.t @@ -64,7 +64,7 @@ deprecated library will be resolved in the installed world only. $ (cd b > dune build @install --root . - > dune install --prefix $PWD/../_install) + > dune install --prefix $PWD/../_install 2>&1 | dune_cmd sanitize) Installing $TESTCASE_ROOT/b/../_install/lib/b/META Installing $TESTCASE_ROOT/b/../_install/lib/b/b$ext_lib Installing $TESTCASE_ROOT/b/../_install/lib/b/b.cma diff --git a/test/blackbox-tests/test-cases/dune-package.t/run.t b/test/blackbox-tests/test-cases/dune-package.t/run.t index ecd605f4f00..2fde15732dc 100644 --- a/test/blackbox-tests/test-cases/dune-package.t/run.t +++ b/test/blackbox-tests/test-cases/dune-package.t/run.t @@ -1,5 +1,5 @@ $ dune build - $ dune_cmd cat _build/install/default/lib/a/dune-package | sed "s/(lang dune .*)/(lang dune )/" + $ dune_cmd cat _build/install/default/lib/a/dune-package | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize (lang dune ) (name a) (library diff --git a/test/blackbox-tests/test-cases/duplicate-c-cxx-obj.t/run.t b/test/blackbox-tests/test-cases/duplicate-c-cxx-obj.t/run.t index 5329b183ec7..65598f18ae2 100644 --- a/test/blackbox-tests/test-cases/duplicate-c-cxx-obj.t/run.t +++ b/test/blackbox-tests/test-cases/duplicate-c-cxx-obj.t/run.t @@ -7,7 +7,7 @@ stubs names, things are still broken if their .o files overlap: > (c_names foo sub/foo)) > EOF - $ dune build --root diff-stanza @all + $ dune build --root diff-stanza @all 2>&1 | dune_cmd sanitize Entering directory 'diff-stanza' File "dune", line 4, characters 10-13: 4 | (c_names foo)) @@ -16,7 +16,6 @@ stubs names, things are still broken if their .o files overlap: definition at dune:9. Hint: You can avoid the name clash by renaming one of the objects, or by placing it into a different directory. - [1] Another form of this bug is if the same source is present in different directories. In this case, the rules are fine, but this is probably not what the diff --git a/test/blackbox-tests/test-cases/duplicate-c-cxx.t/run.t b/test/blackbox-tests/test-cases/duplicate-c-cxx.t/run.t index 2f514863cd7..816753587d1 100644 --- a/test/blackbox-tests/test-cases/duplicate-c-cxx.t/run.t +++ b/test/blackbox-tests/test-cases/duplicate-c-cxx.t/run.t @@ -14,7 +14,7 @@ c_names and cxx_names with overlapping names in the same stanza [1] c_names with overlapping names in different stanzas - $ dune build --root diff-stanza @all + $ dune build --root diff-stanza @all 2>&1 | dune_cmd sanitize Entering directory 'diff-stanza' File "dune", line 4, characters 10-13: 4 | (c_names foo)) @@ -23,4 +23,3 @@ c_names with overlapping names in different stanzas definition at dune:9. Hint: You can avoid the name clash by renaming one of the objects, or by placing it into a different directory. - [1] diff --git a/test/blackbox-tests/test-cases/foreign-library.t/run.t b/test/blackbox-tests/test-cases/foreign-library.t/run.t index c25585105b3..d366d09f419 100644 --- a/test/blackbox-tests/test-cases/foreign-library.t/run.t +++ b/test/blackbox-tests/test-cases/foreign-library.t/run.t @@ -705,7 +705,7 @@ Testsuite for the (foreign_library ...) stanza. $ rm -rf _build $ touch external/external_library.opam - $ ( cd external && ../sdune build @install && ../sdune install --prefix install) + $ ( cd external && ../sdune build @install && ../sdune install --prefix install 2>&1 | dune_cmd sanitize ) Installing install/lib/external_library/META Installing install/lib/external_library/correction.h Installing install/lib/external_library/dune-package diff --git a/test/blackbox-tests/test-cases/foreign-stubs.t/run.t b/test/blackbox-tests/test-cases/foreign-stubs.t/run.t index 0963880a713..b7a2a01a69e 100644 --- a/test/blackbox-tests/test-cases/foreign-stubs.t/run.t +++ b/test/blackbox-tests/test-cases/foreign-stubs.t/run.t @@ -116,10 +116,9 @@ Testsuite for the (foreign_stubs ...) field. > value foo(value unit) { return Val_int(9); } > EOF - $ ./sdune build + $ ./sdune build 2>&1 | dune_cmd sanitize File "dune", line 1, characters 0-0: Error: No rule found for libbar$ext_lib - [1] ---------------------------------------------------------------------------------- * Build succeeds when a self-built archive exists. @@ -476,7 +475,7 @@ setting [disable_dynamically_linked_foreign_archives] is [true] in the workspace * Make sure no rules are generated for foreign dynamically linked archives $ ./sdune build _build/default/dlltime.so - Error: Don't know how to build _build/default/dlltime$ext_dll + Error: Don't know how to build _build/default/dlltime.so [1] ---------------------------------------------------------------------------------- @@ -527,7 +526,7 @@ setting [disable_dynamically_linked_foreign_archives] is [true] in the workspace 3 | (name clock) 4 | (modules clock) 5 | (self_build_stubs_archive (time))) - Error: No rule found for dlltime_stubs$ext_dll + Error: No rule found for dlltime_stubs.so [1] ---------------------------------------------------------------------------------- diff --git a/test/blackbox-tests/test-cases/gen-opam-install-file.t/run.t b/test/blackbox-tests/test-cases/gen-opam-install-file.t/run.t index 42b7e9e0d82..b97b93fd1fa 100644 --- a/test/blackbox-tests/test-cases/gen-opam-install-file.t/run.t +++ b/test/blackbox-tests/test-cases/gen-opam-install-file.t/run.t @@ -1,6 +1,6 @@ stubs and js files installed - $ dune build --root stubs + $ dune build --root stubs | dune_cmd sanitize Entering directory 'stubs' lib: [ "_build/install/default/lib/foo/META" @@ -64,7 +64,7 @@ mld files are installed unwrapped libraries have the correct artifacts - $ dune build --root lib-unwrapped + $ dune build --root lib-unwrapped | dune_cmd sanitize Entering directory 'lib-unwrapped' lib: [ "_build/install/default/lib/foo/META" @@ -84,7 +84,7 @@ unwrapped libraries have the correct artifacts wrapped lib with lib interface module - $ dune build --root lib-wrapped-alias + $ dune build --root lib-wrapped-alias | dune_cmd sanitize Entering directory 'lib-wrapped-alias' lib: [ "_build/install/default/lib/foo/META" @@ -112,7 +112,7 @@ wrapped lib with lib interface module wrapped lib without lib interface module - $ dune build --root lib-wrapped-no-alias + $ dune build --root lib-wrapped-no-alias | dune_cmd sanitize Entering directory 'lib-wrapped-no-alias' lib: [ "_build/install/default/lib/foo/META" diff --git a/test/blackbox-tests/test-cases/github1549.t/run.t b/test/blackbox-tests/test-cases/github1549.t/run.t index 1b69b9b1b14..5ed076671af 100644 --- a/test/blackbox-tests/test-cases/github1549.t/run.t +++ b/test/blackbox-tests/test-cases/github1549.t/run.t @@ -3,7 +3,7 @@ Reproduction case for #1549: too many parentheses in installed .dune files $ dune build @install --root backend Entering directory 'backend' - $ dune_cmd cat backend/_build/install/default/lib/dune_inline_tests/dune-package | sed "s/(lang dune .*)/(lang dune )/" + $ dune_cmd cat backend/_build/install/default/lib/dune_inline_tests/dune-package | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize (lang dune ) (name dune_inline_tests) (library diff --git a/test/blackbox-tests/test-cases/glob-deps.t/run.t b/test/blackbox-tests/test-cases/glob-deps.t/run.t index a399617eca8..8577438597b 100644 --- a/test/blackbox-tests/test-cases/glob-deps.t/run.t +++ b/test/blackbox-tests/test-cases/glob-deps.t/run.t @@ -1,2 +1,2 @@ - $ dune build @glob + $ dune build @glob | dune_cmd sanitize foo/dune foo/foo$ext_lib foo/foo.cma foo/foo.cmxa foo/foo.cmxs foo/foo.ml diff --git a/test/blackbox-tests/test-cases/inline_tests.t/run.t b/test/blackbox-tests/test-cases/inline_tests.t/run.t index 6ad2006476f..e8225a75392 100644 --- a/test/blackbox-tests/test-cases/inline_tests.t/run.t +++ b/test/blackbox-tests/test-cases/inline_tests.t/run.t @@ -37,7 +37,7 @@ The expected behavior for the following three tests is to output nothing: the te run alias many-backends-choose/runtest backend_mbc1 - $ dune runtest dune-file | sed "s/(lang dune .*)/(lang dune )/" + $ dune runtest dune-file | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize run alias dune-file/runtest 414243 (lang dune ) @@ -77,10 +77,10 @@ The expected behavior for the following three tests is to output nothing: the te (echo "\n") (echo "let () = print_int 43;;"))))) - $ dune build dune-file/foo.install && dune install foo --prefix install + $ dune build dune-file/foo.install && dune install foo --prefix install | dune_cmd sanitize Installing install/lib/foo/META Installing install/lib/foo/dune-package - Installing install/lib/foo/foo$ext_lib + Installing install/lib/foo/foo.a Installing install/lib/foo/foo.cma Installing install/lib/foo/foo.cmi Installing install/lib/foo/foo.cmt diff --git a/test/blackbox-tests/test-cases/install-dry-run.t/run.t b/test/blackbox-tests/test-cases/install-dry-run.t/run.t index f09869bd5bd..b581ad1c7d1 100644 --- a/test/blackbox-tests/test-cases/install-dry-run.t/run.t +++ b/test/blackbox-tests/test-cases/install-dry-run.t/run.t @@ -1,5 +1,5 @@ $ dune build @install - $ dune install --dry-run 2>&1 | sed 's#'$(opam config var prefix)'#OPAM_PREFIX#' + $ dune install --dry-run 2>&1 | sed 's#'$(opam config var prefix)'#OPAM_PREFIX#' | dune_cmd sanitize Installing OPAM_PREFIX/lib/mylib/META Installing OPAM_PREFIX/lib/mylib/dune-package Installing OPAM_PREFIX/lib/mylib/mylib$ext_lib @@ -45,7 +45,7 @@ Creating directory OPAM_PREFIX/lib/mylib Copying _build/install/default/lib/mylib/opam to OPAM_PREFIX/lib/mylib/opam (executable: false) - $ dune uninstall --dry-run 2>&1 | sed 's#'$(opam config var prefix)'#OPAM_PREFIX#' + $ dune uninstall --dry-run 2>&1 | sed 's#'$(opam config var prefix)'#OPAM_PREFIX#' | dune_cmd sanitize Removing (if it exists) OPAM_PREFIX/lib/mylib/META Removing (if it exists) OPAM_PREFIX/lib/mylib/dune-package Removing (if it exists) OPAM_PREFIX/lib/mylib/mylib$ext_lib diff --git a/test/blackbox-tests/test-cases/install-libdir.t/run.t b/test/blackbox-tests/test-cases/install-libdir.t/run.t index 4405499a649..5cb1ee22483 100644 --- a/test/blackbox-tests/test-cases/install-libdir.t/run.t +++ b/test/blackbox-tests/test-cases/install-libdir.t/run.t @@ -4,7 +4,7 @@ `dune install` should handle destination directories that don't exist $ dune build @install - $ dune install --prefix install --libdir lib + $ dune install --prefix install --libdir lib 2>&1 | dune_cmd sanitize Installing install/lib/foo/META Installing install/lib/foo/dune-package Installing install/lib/foo/foo$ext_lib @@ -23,7 +23,7 @@ If prefix is passed, the default for libdir is `$prefix/lib`: - $ dune install --prefix install --dry-run + $ dune install --prefix install --dry-run 2>&1 | dune_cmd sanitize Installing install/lib/foo/META Installing install/lib/foo/dune-package Installing install/lib/foo/foo$ext_lib @@ -89,8 +89,8 @@ If prefix is not passed, libdir defaults to the output of `ocamlfind printconf destdir`: $ (export OCAMLFIND_DESTDIR=/OCAMLFIND_DESTDIR - > dune install --dry-run - > dune uninstall --dry-run) + > dune install --dry-run 2>&1 | dune_cmd sanitize + > dune uninstall --dry-run 2>&1 | dune_cmd sanitize) Installing /OCAMLFIND_DESTDIR/foo/META Installing /OCAMLFIND_DESTDIR/foo/dune-package Installing /OCAMLFIND_DESTDIR/foo/foo$ext_lib @@ -175,7 +175,7 @@ destdir`: If only libdir is passed, binaries are installed under prefix/bin and libraries in libdir: - $ dune install --libdir /LIBDIR --dry-run + $ dune install --libdir /LIBDIR --dry-run 2>&1 | dune_cmd sanitize > dune uninstall --libdir /LIBDIR --dry-run Installing /LIBDIR/foo/META Installing /LIBDIR/foo/dune-package @@ -239,7 +239,7 @@ in libdir: Copying _build/install/default/man/man3/another-man-page.3 to /OPAM_PREFIX/man/man3/another-man-page.3 (executable: false) Removing (if it exists) /LIBDIR/foo/META Removing (if it exists) /LIBDIR/foo/dune-package - Removing (if it exists) /LIBDIR/foo/foo$ext_lib + Removing (if it exists) /LIBDIR/foo/foo.a Removing (if it exists) /LIBDIR/foo/foo.cma Removing (if it exists) /LIBDIR/foo/foo.cmi Removing (if it exists) /LIBDIR/foo/foo.cmt @@ -261,7 +261,7 @@ in libdir: The DESTDIR var is supported. When set, it is prepended to the prefix. This is the case when the prefix is implicit: - $ DESTDIR=DESTDIR dune install --dry-run + $ DESTDIR=DESTDIR dune install --dry-run 2>&1 | dune_cmd sanitize Installing DESTDIR/OPAM_PREFIX/lib/foo/META Installing DESTDIR/OPAM_PREFIX/lib/foo/dune-package Installing DESTDIR/OPAM_PREFIX/lib/foo/foo$ext_lib @@ -325,7 +325,7 @@ This is the case when the prefix is implicit: But also when the prefix is explicit: - $ DESTDIR=DESTDIR dune install --prefix prefix --dry-run + $ DESTDIR=DESTDIR dune install --prefix prefix --dry-run 2>&1 | dune_cmd sanitize Installing DESTDIR/prefix/lib/foo/META Installing DESTDIR/prefix/lib/foo/dune-package Installing DESTDIR/prefix/lib/foo/foo$ext_lib @@ -389,7 +389,7 @@ But also when the prefix is explicit: DESTDIR can also be passed as a command line flag. - $ dune install --destdir DESTDIR --prefix prefix --dry-run + $ dune install --destdir DESTDIR --prefix prefix --dry-run 2>&1 | dune_cmd sanitize Installing DESTDIR/prefix/lib/foo/META Installing DESTDIR/prefix/lib/foo/dune-package Installing DESTDIR/prefix/lib/foo/foo$ext_lib diff --git a/test/blackbox-tests/test-cases/lib.t/run.t b/test/blackbox-tests/test-cases/lib.t/run.t index 62f10b70c96..54f2e68a92e 100644 --- a/test/blackbox-tests/test-cases/lib.t/run.t +++ b/test/blackbox-tests/test-cases/lib.t/run.t @@ -143,10 +143,10 @@ TODO: Fix %{libexec} and %{libexec-private} variables and test them. > EOF $ touch external/external_library.opam - $ ( cd external && ../sdune build @install && ../sdune install --prefix install) + $ ( cd external && ../sdune build @install && ../sdune install --prefix install | dune_cmd sanitize) Installing install/lib/external_library/META Installing install/lib/external_library/dune-package - Installing install/lib/external_library/extlib$ext_lib + Installing install/lib/external_library/extlib.a Installing install/lib/external_library/extlib.cma Installing install/lib/external_library/extlib.cmi Installing install/lib/external_library/extlib.cmt diff --git a/test/blackbox-tests/test-cases/no-installable-mode.t/run.t b/test/blackbox-tests/test-cases/no-installable-mode.t/run.t index 1c08554a883..8fdc65df73c 100644 --- a/test/blackbox-tests/test-cases/no-installable-mode.t/run.t +++ b/test/blackbox-tests/test-cases/no-installable-mode.t/run.t @@ -17,7 +17,7 @@ message is displayed: However, it is possible to build a private one explicitly. - $ dune build --root=private --display=short myprivatelib.so + $ dune build --root=private --display=short myprivatelib.so 2>&1 | dune_cmd sanitize Entering directory 'private' ocamldep .myprivatelib.eobjs/myprivatelib.ml.d ocamlc .myprivatelib.eobjs/byte/myprivatelib.{cmi,cmo,cmt} diff --git a/test/blackbox-tests/test-cases/output-obj.t/run.t b/test/blackbox-tests/test-cases/output-obj.t/run.t index 45406dfbfff..8387a3cc550 100644 --- a/test/blackbox-tests/test-cases/output-obj.t/run.t +++ b/test/blackbox-tests/test-cases/output-obj.t/run.t @@ -1,5 +1,5 @@ $ dune build @all - $ dune build @runtest + $ dune build @runtest 2>&1 | dune_cmd sanitize static alias runtest OK: ./static.exe dynamic alias runtest diff --git a/test/blackbox-tests/test-cases/plugin-mode.t/run.t b/test/blackbox-tests/test-cases/plugin-mode.t/run.t index 60f40b976b3..63454071fc3 100644 --- a/test/blackbox-tests/test-cases/plugin-mode.t/run.t +++ b/test/blackbox-tests/test-cases/plugin-mode.t/run.t @@ -79,7 +79,7 @@ Testsuite for (mode plugin). > Dynlink.loadfile (Dynlink.adapt_filename "b.cma") > EOF - $ dune build --display short @all + $ dune build --display short @all 2>&1 | dune_cmd sanitize ocamldep foo/.foo.objs/foo.ml.d ocamldep $ext_lib.eobjs/a.ml.d ocamldep foo/.bar.objs/bar.ml.d diff --git a/test/blackbox-tests/test-cases/re-exported-deps.t/run.t b/test/blackbox-tests/test-cases/re-exported-deps.t/run.t index eaa080c09c4..ab3ed91c051 100644 --- a/test/blackbox-tests/test-cases/re-exported-deps.t/run.t +++ b/test/blackbox-tests/test-cases/re-exported-deps.t/run.t @@ -7,7 +7,7 @@ transtive deps expressed in the dune-package $ dune build @install --root transitive Entering directory 'transitive' - $ dune_cmd cat transitive/_build/install/default/lib/pkg/dune-package | sed "s/(lang dune .*)/(lang dune )/" + $ dune_cmd cat transitive/_build/install/default/lib/pkg/dune-package | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize (lang dune ) (name pkg) (library diff --git a/test/blackbox-tests/test-cases/reason.t/run.t b/test/blackbox-tests/test-cases/reason.t/run.t index 90529b0b823..dcff46d2916 100644 --- a/test/blackbox-tests/test-cases/reason.t/run.t +++ b/test/blackbox-tests/test-cases/reason.t/run.t @@ -1,55 +1,26 @@ - $ dune build @runtest @install-file - lib: [ - "_build/install/default/lib/rlib/META" - "_build/install/default/lib/rlib/bar.mli" +Tests for reason + +Build and run a reason binary: + + $ dune build @runtest + rbin alias runtest + Cppome + hello world + Bar + Foo + +We make sure to install reason source files: + + $ dune build @install-file 2>&1 | grep ".re" "_build/install/default/lib/rlib/bar.re" "_build/install/default/lib/rlib/cppome.re" "_build/install/default/lib/rlib/cppome.rei" - "_build/install/default/lib/rlib/dune-package" - "_build/install/default/lib/rlib/foo.ml" "_build/install/default/lib/rlib/foo.rei" "_build/install/default/lib/rlib/hello.re" "_build/install/default/lib/rlib/hello.rei" - "_build/install/default/lib/rlib/opam" "_build/install/default/lib/rlib/pped.re" "_build/install/default/lib/rlib/pped.rei" - "_build/install/default/lib/rlib/rlib$ext_lib" - "_build/install/default/lib/rlib/rlib.cma" - "_build/install/default/lib/rlib/rlib.cmi" - "_build/install/default/lib/rlib/rlib.cmt" - "_build/install/default/lib/rlib/rlib.cmx" - "_build/install/default/lib/rlib/rlib.cmxa" - "_build/install/default/lib/rlib/rlib.cmxs" - "_build/install/default/lib/rlib/rlib.ml" - "_build/install/default/lib/rlib/rlib__Bar.cmi" - "_build/install/default/lib/rlib/rlib__Bar.cmt" - "_build/install/default/lib/rlib/rlib__Bar.cmti" - "_build/install/default/lib/rlib/rlib__Bar.cmx" - "_build/install/default/lib/rlib/rlib__Cppome.cmi" - "_build/install/default/lib/rlib/rlib__Cppome.cmt" - "_build/install/default/lib/rlib/rlib__Cppome.cmti" - "_build/install/default/lib/rlib/rlib__Cppome.cmx" - "_build/install/default/lib/rlib/rlib__Foo.cmi" - "_build/install/default/lib/rlib/rlib__Foo.cmt" - "_build/install/default/lib/rlib/rlib__Foo.cmti" - "_build/install/default/lib/rlib/rlib__Foo.cmx" - "_build/install/default/lib/rlib/rlib__Hello.cmi" - "_build/install/default/lib/rlib/rlib__Hello.cmt" - "_build/install/default/lib/rlib/rlib__Hello.cmti" - "_build/install/default/lib/rlib/rlib__Hello.cmx" - "_build/install/default/lib/rlib/rlib__Pped.cmi" - "_build/install/default/lib/rlib/rlib__Pped.cmt" - "_build/install/default/lib/rlib/rlib__Pped.cmti" - "_build/install/default/lib/rlib/rlib__Pped.cmx" - ] - bin: [ "_build/install/default/bin/refmt" - ] - rbin alias runtest - Cppome - hello world - Bar - Foo virtual libraries in reason $ PATH="_build/install/default/bin:$PATH" dune build --root vlib-impl @all diff --git a/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t index 27af45e3730..77b0ed39631 100644 --- a/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t +++ b/test/blackbox-tests/test-cases/virtual-libraries/dune-package-info/run.t @@ -1,5 +1,5 @@ Include variants and implementation information in dune-package - $ dune build | sed "s/(lang dune .*)/(lang dune )/" + $ dune build | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize (lang dune ) (name foo) (library diff --git a/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t b/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t index 7a80441dc39..1ae549f6974 100644 --- a/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t +++ b/test/blackbox-tests/test-cases/virtual-libraries/install-file/run.t @@ -1,5 +1,5 @@ Install files for implementations and virtual libs have all the artifacts: - $ dune build + $ dune build 2>&1 | dune_cmd sanitize lib: [ "_build/install/default/lib/vlib/META" "_build/install/default/lib/vlib/dune-package" diff --git a/test/blackbox-tests/test-cases/virtual-libraries/vlib-default-impl/run.t b/test/blackbox-tests/test-cases/virtual-libraries/vlib-default-impl/run.t index 949e2ee06f8..d4586789088 100644 --- a/test/blackbox-tests/test-cases/virtual-libraries/vlib-default-impl/run.t +++ b/test/blackbox-tests/test-cases/virtual-libraries/vlib-default-impl/run.t @@ -17,7 +17,7 @@ Basic sample selecting implementation according to default library. Check that default implementation data is installed in the dune package file. $ dune build --root dune-package Entering directory 'dune-package' - $ dune_cmd cat dune-package/_build/install/default/lib/a/dune-package | sed "s/(lang dune .*)/(lang dune )/" + $ dune_cmd cat dune-package/_build/install/default/lib/a/dune-package | sed "s/(lang dune .*)/(lang dune )/" | dune_cmd sanitize (lang dune ) (name a) (library diff --git a/test/blackbox-tests/utils/dune b/test/blackbox-tests/utils/dune index f14ceaf836c..457c2b723d0 100644 --- a/test/blackbox-tests/utils/dune +++ b/test/blackbox-tests/utils/dune @@ -1,3 +1,3 @@ (executable (name dune_cmd) - (libraries stdune dune-private-libs.dune_re)) + (libraries stdune dune-private-libs.dune_re dune-configurator)) diff --git a/test/blackbox-tests/utils/dune_cmd.ml b/test/blackbox-tests/utils/dune_cmd.ml index 8a40581c5aa..4862a9b4450 100644 --- a/test/blackbox-tests/utils/dune_cmd.ml +++ b/test/blackbox-tests/utils/dune_cmd.ml @@ -88,6 +88,57 @@ module Expand_lines = struct let () = register name of_args run end +module Sanitizer = struct + module Configurator = Configurator.V1 + + let make_ext_replace config = + let tbl = + List.filter_map [ "ext_exe"; "ext_dll"; "ext_asm"; "ext_lib"; "ext_obj" ] + ~f:(fun var -> + match Configurator.ocaml_config_var config var with + | Some "" -> None + | Some s -> Some (s, "$" ^ var) + | None -> ( + match (var, Configurator.ocaml_config_var config "system") with + | "ext_exe", Some "Win32" -> Some (".exe", var) + | _ -> None )) + in + let re = + Re.( + compile + (seq + [ diff any (char '/') + ; alt (List.map tbl ~f:(fun (s, _) -> str s)) + ; eow + ])) + in + let map = String.Map.of_list_reduce tbl ~f:(fun _ x -> x) in + fun s -> + Re.replace re s ~f:(fun g -> + let s = Re.Group.get g 0 in + sprintf "%c%s" s.[0] (String.Map.find_exn map (String.drop s 1))) + + let name = "sanitize" + + let of_args = function + | [] -> () + | _ -> raise (Arg.Bad "Usage: dune_cmd sanitize takes no arguments") + + let run () = + let config = Configurator.create "sanitizer" in + let sanitize = make_ext_replace config in + let rec loop () = + match input_line stdin with + | exception End_of_file -> () + | line -> + print_endline (sanitize line); + loop () + in + loop () + + let () = register name of_args run +end + let () = let name, args = match Array.to_list Sys.argv with