diff --git a/test/blackbox-tests/dune.inc b/test/blackbox-tests/dune.inc index b2d799bdb4a..efca25a7d0c 100644 --- a/test/blackbox-tests/dune.inc +++ b/test/blackbox-tests/dune.inc @@ -419,6 +419,14 @@ test-cases/exclude-missing-module (progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected))))) +(alias + (name exe-name-mangle) + (deps (package dune) (source_tree test-cases/exe-name-mangle)) + (action + (chdir + test-cases/exe-name-mangle + (progn (run %{exe:cram.exe} -test run.t) (diff? run.t run.t.corrected))))) + (alias (name exec-cmd) (deps (package dune) (source_tree test-cases/exec-cmd)) @@ -1628,6 +1636,7 @@ (alias env-var-expansion) (alias env-variables) (alias exclude-missing-module) + (alias exe-name-mangle) (alias exec-cmd) (alias exec-missing) (alias external-lib-deps) @@ -1818,6 +1827,7 @@ (alias env-var-expansion) (alias env-variables) (alias exclude-missing-module) + (alias exe-name-mangle) (alias exec-cmd) (alias exec-missing) (alias external-lib-deps) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/baz.ml b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/baz.ml new file mode 100644 index 00000000000..42944031ad7 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/baz.ml @@ -0,0 +1,2 @@ +let () = + Foo.run () diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune new file mode 100644 index 00000000000..ec7b7f3e927 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune @@ -0,0 +1,7 @@ +(executable + (libraries foo) + (name baz)) + +(alias + (name default) + (action (run ./baz.exe))) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune-project b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune-project new file mode 100644 index 00000000000..0636ab6acf4 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/dune-project @@ -0,0 +1 @@ +(lang dune 1.11) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo.ml b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo.ml new file mode 100644 index 00000000000..eca2c4800c2 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo.ml @@ -0,0 +1,2 @@ +(* finally calling into library *) +let run = Bar.run () diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/bar.ml b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/bar.ml new file mode 100644 index 00000000000..3b433e50d72 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/bar.ml @@ -0,0 +1,2 @@ +(* directly usable but will cause linking error *) +let run = Foo.run diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/dune b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/dune new file mode 100644 index 00000000000..1fd53d0a541 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/dune @@ -0,0 +1,3 @@ +(library + (name foo) + (wrapped false)) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/foo.ml b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/foo.ml new file mode 100644 index 00000000000..0b26e5e10fe --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/multi-module/foo/foo.ml @@ -0,0 +1 @@ +let run () = print_endline "not directly usable" diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/run.t b/test/blackbox-tests/test-cases/exe-name-mangle/run.t new file mode 100644 index 00000000000..472b9b6a912 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/run.t @@ -0,0 +1,15 @@ +Binary composed of a single module with the same name as the dependency + $ dune build --root single-module 2>&1 | grep -v ocamlopt + Entering directory 'single-module' + File "exe.ml", line 1: + Error: The files foo/.foo.objs/byte/foo.cmi and .exe.eobjs/byte/exe.cmi + make inconsistent assumptions over interface Exe +Binary composed of multiple modules where one collides with a dependency + $ dune build --root multi-module 2>&1 | grep -v ocamlopt | grep -v ocamlc + Entering directory 'multi-module' + File "foo.ml", line 1: + Error: The files foo/.foo.objs/byte/bar.cmi and .baz.eobjs/byte/foo.cmi + make inconsistent assumptions over interface Foo + File "baz.ml", line 1: + Error: The files .baz.eobjs/byte/foo.cmi and .baz.eobjs/byte/foo.cmi + make inconsistent assumptions over interface Foo diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/collisionlib.ml b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/collisionlib.ml new file mode 100644 index 00000000000..7dbc64668c2 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/collisionlib.ml @@ -0,0 +1,2 @@ +(* make sure everything is linked *) +let run = Exe.run diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/dune b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/dune new file mode 100644 index 00000000000..14cf54f2936 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/dune @@ -0,0 +1,3 @@ +(library + (name exe) + (wrapped false)) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/exe.ml b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/exe.ml new file mode 100644 index 00000000000..21a2fad6bec --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/collision-lib/exe.ml @@ -0,0 +1 @@ +let run () = print_endline "this module is unlinkable" diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune new file mode 100644 index 00000000000..465bf6d92b4 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune @@ -0,0 +1,7 @@ +(executable + (libraries foo) + (name exe)) + +(alias + (name default) + (action (run ./exe.exe))) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune-project b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune-project new file mode 100644 index 00000000000..059ef9a04e5 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/dune-project @@ -0,0 +1,3 @@ +(lang dune 1.11) + +(implicit_transitive_deps false) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/exe.ml b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/exe.ml new file mode 100644 index 00000000000..42944031ad7 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/exe.ml @@ -0,0 +1,2 @@ +let () = + Foo.run () diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/dune b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/dune new file mode 100644 index 00000000000..80dc126bcf0 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/dune @@ -0,0 +1,3 @@ +(library + (libraries exe) + (name foo)) diff --git a/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/foo.ml b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/foo.ml new file mode 100644 index 00000000000..709f4e90f70 --- /dev/null +++ b/test/blackbox-tests/test-cases/exe-name-mangle/single-module/foo/foo.ml @@ -0,0 +1,3 @@ +let run () = + Exe.run (); + Collisionlib.run ()