diff --git a/test/blackbox-tests/jbuild b/test/blackbox-tests/jbuild index ca808c44..770efe47 100644 --- a/test/blackbox-tests/jbuild +++ b/test/blackbox-tests/jbuild @@ -489,3 +489,13 @@ (progn (run ${exe:cram.exe} run.t) (diff? run.t run.t.corrected)))))) + +(alias + ((name runtest) + (deps ((package jbuilder) + (files_recursively_in test-cases/github660))) + (action + (chdir test-cases/github660 + (progn + (run ${exe:cram.exe} run.t) + (diff? run.t run.t.corrected)))))) diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/jbuild b/test/blackbox-tests/test-cases/github660/explicit-interfaces/jbuild new file mode 100644 index 00000000..db41fcae --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/jbuild @@ -0,0 +1,8 @@ +(jbuild_version 1) + +(alias + ((name runtest) + (deps (main.exe)) + (action (run ${<})))) + +(executable ((name main))) diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.ml b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.ml new file mode 100644 index 00000000..e0c61ea9 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.ml @@ -0,0 +1 @@ +module Sub = Lib_sub diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.mli b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.mli new file mode 100644 index 00000000..e0c61ea9 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib.mli @@ -0,0 +1 @@ +module Sub = Lib_sub diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.ml b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.ml new file mode 100644 index 00000000..e33bd25c --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.ml @@ -0,0 +1 @@ +let hello = "hello" diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.mli b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.mli new file mode 100644 index 00000000..addfd659 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/lib_sub.mli @@ -0,0 +1 @@ +val hello : string diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/main.ml b/test/blackbox-tests/test-cases/github660/explicit-interfaces/main.ml new file mode 100644 index 00000000..91f89a90 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/main.ml @@ -0,0 +1,3 @@ +let () = + print_endline Lib.Sub.hello; + () diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/jbuild b/test/blackbox-tests/test-cases/github660/no-interfaces/jbuild new file mode 100644 index 00000000..db41fcae --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/jbuild @@ -0,0 +1,8 @@ +(jbuild_version 1) + +(alias + ((name runtest) + (deps (main.exe)) + (action (run ${<})))) + +(executable ((name main))) diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/lib.ml b/test/blackbox-tests/test-cases/github660/no-interfaces/lib.ml new file mode 100644 index 00000000..e0c61ea9 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/lib.ml @@ -0,0 +1 @@ +module Sub = Lib_sub diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/lib_sub.ml b/test/blackbox-tests/test-cases/github660/no-interfaces/lib_sub.ml new file mode 100644 index 00000000..e33bd25c --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/lib_sub.ml @@ -0,0 +1 @@ +let hello = "hello" diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/main.ml b/test/blackbox-tests/test-cases/github660/no-interfaces/main.ml new file mode 100644 index 00000000..91f89a90 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/main.ml @@ -0,0 +1,3 @@ +let () = + print_endline Lib.Sub.hello; + () diff --git a/test/blackbox-tests/test-cases/github660/run.t b/test/blackbox-tests/test-cases/github660/run.t new file mode 100644 index 00000000..5cf01919 --- /dev/null +++ b/test/blackbox-tests/test-cases/github660/run.t @@ -0,0 +1,22 @@ +When there are explicit interfaces, modules must be rebuilt. + + $ jbuilder runtest --root explicit-interfaces --display quiet -j1 2>&1 | grep -v Entering + main alias runtest + hello + $ echo 'let x = 1' >> explicit-interfaces/lib_sub.ml + $ jbuilder runtest --root explicit-interfaces --display quiet -j1 2>&1 | grep -v Entering | grep -v ocamlopt + File "_none_", line 1: + Error: Files .main.eobjs/main.cmx and .main.eobjs/lib_sub.cmx + make inconsistent assumptions over implementation Lib_sub + +When there are no interfaces, the situation is the same, but it is not possible +to rely on these. + + $ jbuilder runtest --root no-interfaces --display quiet -j1 2>&1 | grep -v Entering + main alias runtest + hello + $ echo 'let x = 1' >> no-interfaces/lib_sub.ml + $ jbuilder runtest --root no-interfaces --display quiet -j1 2>&1 | grep -v Entering | grep -v ocamlopt + File "_none_", line 1: + Error: Files .main.eobjs/main.cmx and .main.eobjs/lib_sub.cmx + make inconsistent assumptions over interface Lib_sub