From 18df730b0b6168aa8ac592db3ab6499912bdd018 Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Sun, 18 Sep 2022 17:57:34 +0530 Subject: [PATCH] test: add test for Module._stat Module._stat landed in https://github.com/nodejs/node/pull/44537 without a test, so this change adds one. Signed-off-by: Darshan Sen --- test/parallel/test-module-_stat.js | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/parallel/test-module-_stat.js diff --git a/test/parallel/test-module-_stat.js b/test/parallel/test-module-_stat.js new file mode 100644 index 00000000000000..602206f509c005 --- /dev/null +++ b/test/parallel/test-module-_stat.js @@ -0,0 +1,54 @@ +'use strict'; +require('../common'); + +// This tests Module._stat. + +const Module = require('module'); +const path = require('path'); +const tmpdir = require('../common/tmpdir'); +const { mkdirSync, writeFileSync } = require('fs'); +const { strictEqual } = require('assert'); + +const doesNotExist = path.join(tmpdir.path, 'does-not-exist'); +const file = path.join(tmpdir.path, 'file'); +const directory = path.join(tmpdir.path, 'directory'); + +tmpdir.refresh(); +writeFileSync(file, ''); +mkdirSync(directory); + +strictEqual(Module._stat(directory), 1); +strictEqual(Module._stat(file), 0); +strictEqual(Module._stat(doesNotExist), -2); + +const vfsDoesNotExist = path.join(process.execPath, 'does-not-exist'); +const vfsFile = path.join(process.execPath, 'file'); +const vfsDirectory = path.join(process.execPath, 'directory'); + +strictEqual(Module._stat(vfsDoesNotExist), -20); +strictEqual(Module._stat(vfsFile), -20); +strictEqual(Module._stat(vfsDirectory), -20); + +const originalStat = Module._stat; +Module._stat = function(filename) { + if (!filename.startsWith(process.execPath)) { + return originalStat(filename); + } + + switch (filename) { + case vfsDoesNotExist: + return -2; + case vfsFile: + return 1; + case vfsDirectory: + return 2; + } +}; + +strictEqual(Module._stat(directory), 1); +strictEqual(Module._stat(file), 0); +strictEqual(Module._stat(doesNotExist), -2); + +strictEqual(Module._stat(vfsDoesNotExist), -2); +strictEqual(Module._stat(vfsFile), 1); +strictEqual(Module._stat(vfsDirectory), 2);