diff --git a/Makefile b/Makefile index 8fc67d604e91b0..79cb82a594aaec 100644 --- a/Makefile +++ b/Makefile @@ -138,19 +138,7 @@ test-debugger: all $(PYTHON) tools/test.py debugger test-npm: $(NODE_EXE) - rm -rf npm-cache npm-tmp npm-prefix - mkdir npm-cache npm-tmp npm-prefix - cd deps/npm ; npm_config_cache="$(shell pwd)/npm-cache" \ - npm_config_prefix="$(shell pwd)/npm-prefix" \ - npm_config_tmp="$(shell pwd)/npm-tmp" \ - ../../$(NODE_EXE) cli.js install --ignore-scripts - cd deps/npm ; npm_config_cache="$(shell pwd)/npm-cache" \ - npm_config_prefix="$(shell pwd)/npm-prefix" \ - npm_config_tmp="$(shell pwd)/npm-tmp" \ - ../../$(NODE_EXE) cli.js run-script test-all && \ - ../../$(NODE_EXE) cli.js prune --prod && \ - cd ../.. && \ - rm -rf npm-cache npm-tmp npm-prefix + NODE_EXE=$(NODE_EXE) tools/test-npm.sh test-npm-publish: $(NODE_EXE) npm_package_config_publishtest=true ./$(NODE_EXE) deps/npm/test/run.js diff --git a/tools/test-npm.sh b/tools/test-npm.sh new file mode 100755 index 00000000000000..e13dc85f7ae798 --- /dev/null +++ b/tools/test-npm.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -e + +# always change the working directory to the project's root directory +cd $(dirname $0)/.. + +# pass NODE_EXE from something like Makefile +# it should point to either ./node or ./node.exe, depending on the platform +if ! [ -n "$NODE_EXE" ]; then + echo "No node executable provided. Bailing." >&2 + exit 0 +fi + +rm -rf test-npm +mkdir test-npm + +# make a copy of deps/npm to run the tests on +cp -r deps/npm/ test-npm/ + +cd test-npm + +# do a rm first just in case deps/npm contained these +rm -rf npm-cache npm-tmp npm-prefix +mkdir npm-cache npm-tmp npm-prefix + +# these commands all require the same env variables, so run them as one +npm_config_cache="npm-cache" \ +npm_config_prefix="npm-prefix" \ +npm_config_tmp="npm-tmp" \ +../$NODE_EXE cli.js install --ignore-scripts && \ +../$NODE_EXE cli.js run-script test-all && \ +../$NODE_EXE cli.js prune --prod + +# clean up everything one single shot +cd .. && rm -rf test-npm