chore: script/bootstrap fails when node cannot find a module the tests load (closes #263)
yarn install exits 0 without touching node_modules whenever node_modules/.yarn-integrity matches yarn.lock, so a package deleted from node_modules stayed deleted while bootstrap printed "bootstrap complete". After the install, bootstrap now asks node to resolve jest, playwright-core and ethers, and on the first it cannot find it names the module and the fix: rm -rf node_modules && make bootstrap. Model: opus-5-5
This commit is contained in:
@@ -127,6 +127,30 @@ install_js_deps() {
|
||||
fi
|
||||
}
|
||||
|
||||
# resolvable <module>: true when node, run from the repo root, finds it
|
||||
resolvable() {
|
||||
if missing node && [ -s "$HOME/.nvm/nvm.sh" ]; then
|
||||
nvm_sh "nvm use $NODE_VERSION >/dev/null && cd \"$ROOT\" && \
|
||||
node -e \"require.resolve('$1')\"" 2>/dev/null
|
||||
else
|
||||
node -e "require.resolve('$1')" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# yarn install exits 0 without touching node_modules once
|
||||
# node_modules/.yarn-integrity matches yarn.lock, so a package deleted from
|
||||
# node_modules stays deleted. Fail unless node finds the modules the tests
|
||||
# load: jest for make test, playwright-core and ethers for tests/e2e/.
|
||||
check_js_deps() {
|
||||
for module in jest playwright-core ethers; do
|
||||
if ! resolvable "$module"; then
|
||||
echo "bootstrap: node cannot find $module after yarn install" >&2
|
||||
echo " fix: rm -rf node_modules && make bootstrap" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
cd "$ROOT"
|
||||
|
||||
@@ -136,6 +160,7 @@ main() {
|
||||
ensure_node
|
||||
ensure_yarn
|
||||
install_js_deps
|
||||
check_js_deps
|
||||
|
||||
echo "bootstrap complete"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user