From 0d5338166694e558ce315172f4ca93c20c0ded26 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Thu, 22 Aug 2024 13:30:55 -0700 Subject: [PATCH] [Tests] move sourcing suite to GHA --- .github/workflows/tests.yml | 30 +++++++++++++++---- .travis.yml | 5 ---- Makefile | 2 +- test/install_script/nvm_check_global_modules | 4 +-- ...vm.sh should keep version if one is active | 2 +- ...ult if available and no nvm node is loaded | 4 +-- ...ith --install and .nvmrc should install it | 14 ++++++--- ... with --install should install the default | 5 ++++ test/sourcing/{setup => setup_dir} | 0 test/sourcing/{teardown => teardown_dir} | 1 + 10 files changed, 45 insertions(+), 22 deletions(-) rename test/sourcing/{setup => setup_dir} (100%) rename test/sourcing/{teardown => teardown_dir} (76%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 60f7c05..00ac65e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,13 +19,24 @@ jobs: strategy: fail-fast: false matrix: - include: - - shell: bash + exclude: + - shell: sh suite: install_script - # shell: - # - bash - # suite: - # - install_script + - shell: dash + suite: install_script + - shell: zsh + suite: install_script + - shell: ksh + suite: install_script + suite: + - install_script + - sourcing + shell: + - sh + - bash + - dash + - zsh + # - ksh steps: - name: Harden Runner @@ -37,7 +48,13 @@ jobs: raw.githubusercontent.com:443 nodejs.org:443 iojs.org:443 + azure.archive.ubuntu.com:80 + packages.microsoft.com:443 - uses: actions/checkout@v4 + - run: sudo apt-get update; sudo apt-get install ${{ matrix.shell }} + if: matrix.shell == 'zsh' || matrix.shell == 'ksh' + # zsh (https://github.com/actions/runner-images/issues/264) and ksh are not in the ubuntu image + shell: bash - run: sudo ${{ matrix.shell }} --version 2> /dev/null || dpkg -s ${{ matrix.shell }} 2> /dev/null || which ${{ matrix.shell }} - run: curl --version - run: wget --version @@ -48,6 +65,7 @@ jobs: skip-ls-check: true shell-command: echo installed - run: npm ls urchin + - run: npx which urchin - run: env - run: make TERM=xterm-256color TEST_SUITE="${{ matrix.suite }}" SHELL="${{ matrix.shell }}" URCHIN="$(npx which urchin)" test-${{ matrix.shell }} diff --git a/.travis.yml b/.travis.yml index effbd86..07cada9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -87,11 +87,6 @@ env: - SHELL=bash TEST_SUITE=fast - SHELL=zsh TEST_SUITE=fast # - SHELL=ksh TEST_SUITE=fast - - SHELL=sh TEST_SUITE=sourcing - - SHELL=dash TEST_SUITE=sourcing - - SHELL=bash TEST_SUITE=sourcing - - SHELL=zsh TEST_SUITE=sourcing - # - SHELL=ksh TEST_SUITE=sourcing - SHELL=sh TEST_SUITE=slow - SHELL=dash TEST_SUITE=slow - SHELL=bash TEST_SUITE=slow diff --git a/Makefile b/Makefile index ddd679e..adb81d6 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ $(SHELL_TARGETS): @shell='$@'; shell=$${shell##*-}; \ which "$$shell" >/dev/null || { printf '\033[0;31m%s\033[0m\n' "WARNING: Cannot test with shell '$$shell': not found." >&2; exit 0; } && \ printf '\n\033[0;34m%s\033[0m\n' "Running tests in $$shell"; \ - [ -z "$$TRAVIS_BUILD_DIR" ] && for v in $$(set | awk -F'=' '$$1 ~ "^NVM_" { print $$1 }'); do unset $$v; done && unset v; \ + [ -z "$$TRAVIS_BUILD_DIR" ] && [ -z "$$GITHUB_ACTIONS" ] && for v in $$(set | awk -F'=' '$$1 ~ "^NVM_" { print $$1 }'); do unset $$v; done && unset v; \ for suite in $(TEST_SUITE); do \ echo "Running test suite: $$suite"; \ $(URCHIN) -f -s $$shell test/$$suite || exit; \ diff --git a/test/install_script/nvm_check_global_modules b/test/install_script/nvm_check_global_modules index e19ed6d..8c3072f 100755 --- a/test/install_script/nvm_check_global_modules +++ b/test/install_script/nvm_check_global_modules @@ -27,15 +27,15 @@ setup () { mkdir -p "$npm_config_prefix/lib" } - setup npm install -g nop >/dev/null || die 'nvm_check_global_modules cannot be tested because `npm` cannot install the `nop` package' message=$(nvm_check_global_modules) [ ! -z "$message" ] || die "nvm_check_global_modules should have printed a notice when npm had global modules installed; got:\n${message}" -if [ -n "${ORIGINAL_NVM_DIR}" ]; then +if [ -n "${ORIGINAL_NVM_DIR}" ] && [ -z "${GITHUB_ACTIONS}" ]; then # Admit we're using NVM, just for this one test + # TODO: fix this for GHA message=$(NVM_DIR="${ORIGINAL_NVM_DIR}" nvm_check_global_modules) [ -z "$message" ] || die "nvm_check_global_modules should not have printed a notice when npm is managed by nvm; got:\n${message}" fi diff --git a/test/sourcing/Sourcing nvm.sh should keep version if one is active b/test/sourcing/Sourcing nvm.sh should keep version if one is active index 28f39c8..dbfcafb 100755 --- a/test/sourcing/Sourcing nvm.sh should keep version if one is active +++ b/test/sourcing/Sourcing nvm.sh should keep version if one is active @@ -1,6 +1,6 @@ #!/bin/sh -die () { echo "$@" ; exit 1; } +die () { echo "$*" ; echo "|${NVM_DIR}|"; exit 1; } echo '0.10.1' > ../../alias/default || die "couldn't create default alias" diff --git a/test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded b/test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded index 5ec0cb6..9741195 100755 --- a/test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded +++ b/test/sourcing/Sourcing nvm.sh should use the default if available and no nvm node is loaded @@ -12,9 +12,7 @@ NVM_DIR_CACHED="${NVM_DIR}" nvm unload || die 'unloading returned nonzero exit code' NVM_DIR="${NVM_DIR_CACHED}" -echo '0.10.1' > ../../alias/default || die 'creation of default alias failed' - -which node && die 'node was found in PATH after unloading nvm' +echo '0.10.1' > "${NVM_DIR}/alias/default" || die 'creation of default alias failed' # Now to begin the real test \. ../../nvm.sh || die 'sourcing returned nonzero exit code' diff --git a/test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it b/test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it index 2cd095c..0774c0e 100755 --- a/test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it +++ b/test/sourcing/Sourcing nvm.sh with --install and .nvmrc should install it @@ -1,6 +1,7 @@ #!/bin/sh -die () { echo "$@" ; exit 1; } +die () { echo "$*" ; echo "|${NVM_DIR}|"; exit 1; } + supports_source_options () { [ "_$(echo 'echo $1' | . /dev/stdin yes)" = "_yes" ] } @@ -10,18 +11,23 @@ if ! supports_source_options; then exit 0; fi -echo '0.10.2' > ../../.nvmrc || die 'creation of .nvmrc failed' +echo '0.10.2' > .nvmrc || die 'creation of .nvmrc failed' + +export NVM_DIR="${PWD}/../.." +rm ../../alias/default \. ../../nvm.sh --install EXIT_CODE="$?" echo 'sourcing complete.' -nvm_version 0.10.2 >/dev/null 2>&1 || die "v0.10.2 not installed: \n$(nvm_ls)" - [ "_$(nvm_rc_version | \grep -o -e 'with version .*$')" = "_with version <0.10.2>" ] || die "nvm_rc_version $(nvm_rc_version)" +nvm_version 0.10.2 >/dev/null 2>&1 || die "v0.10.2 not installed: \n$(nvm_ls)" + [ "_${EXIT_CODE}" = '_0' ] || die "sourcing returned nonzero exit code: ${EXIT_CODE}" NVM_LS_CURRENT="$(nvm ls current | \grep -o v0.10.2)" [ "_$NVM_LS_CURRENT" = '_v0.10.2' ] || die "'nvm ls current' did not return '-> v0.10.2', got >${NVM_LS_CURRENT}<\n$(nvm_ls)" + +rm .nvmrc diff --git a/test/sourcing/Sourcing nvm.sh with --install should install the default b/test/sourcing/Sourcing nvm.sh with --install should install the default index 0f71d48..1370233 100755 --- a/test/sourcing/Sourcing nvm.sh with --install should install the default +++ b/test/sourcing/Sourcing nvm.sh with --install should install the default @@ -2,6 +2,7 @@ \. ../common.sh die () { echo "$@" ; exit 1; } + supports_source_options () { [ "_$(echo 'echo $1' | . /dev/stdin yes)" = "_yes" ] } @@ -11,6 +12,8 @@ if ! supports_source_options; then exit 0; fi +rm .nvmrc +export NVM_DIR="${PWD}/../.." echo '0.10.2' > ../../alias/default || die 'creation of default alias failed' echo 'sourcing nvm with --install...' @@ -20,6 +23,8 @@ EXIT_CODE="$?" echo 'sourcing complete.' +[ "$(nvm_alias default)" = '0.10.2' ] || die "nvm_alias default did not return '0.10.2', got >$(nvm_alias default)<" + nvm_version 0.10.2 >/dev/null 2>&1 || die "v0.10.2 not installed: \n$(nvm_ls)" [ "_$EXIT_CODE" = '_0' ] || die "sourcing returned nonzero exit code: ${EXIT_CODE}" diff --git a/test/sourcing/setup b/test/sourcing/setup_dir similarity index 100% rename from test/sourcing/setup rename to test/sourcing/setup_dir diff --git a/test/sourcing/teardown b/test/sourcing/teardown_dir similarity index 76% rename from test/sourcing/teardown rename to test/sourcing/teardown_dir index 9bb52b0..fb6ba3b 100755 --- a/test/sourcing/teardown +++ b/test/sourcing/teardown_dir @@ -4,4 +4,5 @@ rm -rf ../../alias rm -rf ../../v0.10.1 rm -rf ../../v0.10.2 rm -rf ../../v0.10.3 +rm -rf ../../versions/node/v4.1.0 rm -f ../../.nvmrc