Skip to content

Instantly share code, notes, and snippets.

@FND
Last active August 15, 2019 11:43
Show Gist options
  • Save FND/d35c5a5c128a7d0e9131ece904f601a9 to your computer and use it in GitHub Desktop.
Save FND/d35c5a5c128a7d0e9131ece904f601a9 to your computer and use it in GitHub Desktop.
reduced test case for `require.resolve` regression in Node v12

reduced test case for require.resolve regression in Node v12

run automatically sets up the directory structure above, downloads various Node versions (see node_versions.txt; URL configured for macOS), executes the command above and reports the results

/path/to/lib
├── dummy
│   ├── index.js
│   └── src.js
└── node_modules
    └── dummy
        ├── index.js
        └── pkg.js
require.resolve("dummy/src.js", { paths: ["/path/to/lib"] });

this used to work on Node v8 and v10, returning /path/to/lib/dummy/src.js, but throws on Node v12 (all minor/patch releases)

10.16.2
11.15.0
12.0.0
12.8.0
#!/usr/bin/env bash
set -eu
self_dir=`dirname "$0"`
root_dir=`realpath "$self_dir"`
test_dir="$root_dir/test_case"
node_dir="/tmp/nodejs_versions"
if [ ! -d "$test_dir" ]; then # set up fixtures
code="void 0;"
mkdir -p "$test_dir/node_modules/dummy"
echo "$code" > "$test_dir/node_modules/dummy/index.js"
cp -R "$test_dir/node_modules/dummy" "$test_dir/"
echo "$code" > "$test_dir/node_modules/dummy/pkg.js"
echo "$code" > "$test_dir/dummy/src.js"
fi
mkdir -p "$node_dir"
for version in `cat "$self_dir/node_versions.txt"`; do
echo; echo "== checking v$version... =="
dirname="node-v$version-darwin-x64"
filename="$dirname.tar.xz"
cd "$node_dir"
if [ ! -f "$filename" ]; then
curl -O "https://nodejs.org/dist/v$version/$filename"
tar xzf "$filename"
fi
"$node_dir/$dirname/bin/node" -p \
-e "require.resolve('dummy/src.js', { paths: ['$test_dir'] })" && \
echo "✓ works as expected" || \
true # continue with next version
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment