From 168bc21348f7b096996e8025f8cdefcec493c0b4 Mon Sep 17 00:00:00 2001 From: Antonio Nuno Monteiro Date: Thu, 27 Apr 2023 13:20:27 -0700 Subject: [PATCH] test(melange): incorrect path when public lib depends on private lib Signed-off-by: Antonio Nuno Monteiro --- .../test-cases/melange/private-lib-dep.t | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 test/blackbox-tests/test-cases/melange/private-lib-dep.t diff --git a/test/blackbox-tests/test-cases/melange/private-lib-dep.t b/test/blackbox-tests/test-cases/melange/private-lib-dep.t new file mode 100644 index 000000000000..670509fab8f3 --- /dev/null +++ b/test/blackbox-tests/test-cases/melange/private-lib-dep.t @@ -0,0 +1,83 @@ +Melange public library depends on private library + + $ cat > dune-project < (lang dune 3.8) + > (package (name foo)) + > (using melange 0.1) + > EOF + + $ mkdir -p priv + $ cat > priv/dune < (library + > (name priv) + > (package foo) + > (modes melange)) + > EOF + $ cat > priv/priv.ml < let x = "private" + > EOF + + $ mkdir -p lib + $ cat > lib/dune < (library + > (public_name foo) + > (modes melange) + > (libraries priv)) + > EOF + $ cat > lib/foo.ml < let x = "public lib uses " ^ Priv.x + > EOF + + $ cat > dune < (melange.emit + > (target output) + > (libraries foo) + > (emit_stdlib false)) + > EOF + + $ cat > entry.ml < let () = Js.log Foo.x + > EOF + + $ dune build @melange + + $ node _build/default/output/entry.js + node:internal/modules/cjs/loader:1078 + throw err; + ^ + + Error: Cannot find module 'priv/priv.js' + Require stack: + - $TESTCASE_ROOT/_build/default/output/node_modules/foo/foo.js + - $TESTCASE_ROOT/_build/default/output/entry.js + at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) + at Module._load (node:internal/modules/cjs/loader:920:27) + at Module.require (node:internal/modules/cjs/loader:1141:19) + at require (node:internal/modules/cjs/helpers:110:18) + at Object. ($TESTCASE_ROOT/_build/default/output/node_modules/foo/foo.js:4:12) + at Module._compile (node:internal/modules/cjs/loader:1254:14) + at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) + at Module.load (node:internal/modules/cjs/loader:1117:32) + at Module._load (node:internal/modules/cjs/loader:958:12) + at Module.require (node:internal/modules/cjs/loader:1141:19) { + code: 'MODULE_NOT_FOUND', + requireStack: [ + '$TESTCASE_ROOT/_build/default/output/node_modules/foo/foo.js', + '$TESTCASE_ROOT/_build/default/output/entry.js' + ] + } + + Node.js v18.15.0 + [1] + + $ cat _build/default/output/node_modules/foo/foo.js + // Generated by Melange + 'use strict'; + + var Priv = require("priv/priv.js"); + + var x = "public lib uses " + Priv.x; + + exports.x = x; + /* No side effect */ +