From fdf1d6e93494938d6f6e8791d06a31324b8e50db Mon Sep 17 00:00:00 2001 From: Liam Murphy <43807659+Liamolucko@users.noreply.github.com> Date: Wed, 6 Jan 2021 10:42:40 +1100 Subject: [PATCH] fix(node): resolve files in symlinked directories (denoland/deno#8840) --- node/module.ts | 11 +---------- node/module_test.ts | 5 +++++ node/tests/cjs/dir | 1 + node/tests/cjs/subdir/dir/index.js | 4 ++++ 4 files changed, 11 insertions(+), 10 deletions(-) create mode 120000 node/tests/cjs/dir create mode 100644 node/tests/cjs/subdir/dir/index.js diff --git a/node/module.ts b/node/module.ts index f10fc2ca74fb..a7052668ae4f 100644 --- a/node/module.ts +++ b/node/module.ts @@ -764,16 +764,7 @@ function tryFile(requestPath: string, _isMain: boolean): string | false { } function toRealPath(requestPath: string): string { - // Deno does not have realpath implemented yet. - let fullPath = requestPath; - while (true) { - try { - fullPath = Deno.readLinkSync(fullPath); - } catch { - break; - } - } - return path.resolve(requestPath); + return Deno.realPathSync(requestPath); } // Given a path, check if the file exists with any of the set extensions diff --git a/node/module_test.ts b/node/module_test.ts index 2faaff57505d..86fb1d386680 100644 --- a/node/module_test.ts +++ b/node/module_test.ts @@ -69,3 +69,8 @@ Deno.test("requireStack", function () { assertStringIncludes(e.stack, "/tests/cjs/cjs_throw.js"); } }); + +Deno.test("requireFileInSymlinkDir", () => { + const { C } = require("./tests/cjs/dir"); + assertEquals(C, "C"); +}); diff --git a/node/tests/cjs/dir b/node/tests/cjs/dir new file mode 120000 index 000000000000..abec30059cad --- /dev/null +++ b/node/tests/cjs/dir @@ -0,0 +1 @@ +./subdir/dir \ No newline at end of file diff --git a/node/tests/cjs/subdir/dir/index.js b/node/tests/cjs/subdir/dir/index.js new file mode 100644 index 000000000000..0b4d11386830 --- /dev/null +++ b/node/tests/cjs/subdir/dir/index.js @@ -0,0 +1,4 @@ +// deno-lint-ignore-file no-undef +const C = require("../cjs_c"); + +module.exports = { C };