#!/bin/bash set -x export NVM_DIR="$(cd ../.. && pwd)" # an ambient value would send nvm-exec down its `NODE_VERSION` branch unset NODE_VERSION : nvm.sh \. ../../nvm.sh ORIG_PWD="$(pwd)" cleanup() { cd "${ORIG_PWD}" 2>/dev/null || true rm -f .nvmrc [ -n "${TMP_DIR-}" ] && rm -rf "${TMP_DIR}" } die () { echo "$@" ; cleanup ; exit 1; } NVM_TEST_VERSION=v0.42 HINT="nvm-exec: unable to select a node version Set \`NODE_VERSION\` (e.g. \`NODE_VERSION=default\`), or add an \`.nvmrc\` file." # Write it to nvmrc echo "$NVM_TEST_VERSION" > .nvmrc OUTPUT="$(../../nvm-exec 2>&1)"; EXPECTED="Found '$(pwd)/.nvmrc' with version <${NVM_TEST_VERSION}> N/A: version \"${NVM_TEST_VERSION}\" is not yet installed. You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it. ${HINT}"; # Skip install, we want to test the error message [ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<" rm -f .nvmrc NVM_EXEC="$(cd ../.. && pwd)/nvm-exec" # Run from a fresh, empty directory so no ambient .nvmrc above the test dir # can satisfy the lookup and mask the hint. TMP_DIR="$(mktemp -d)" cd "${TMP_DIR}" || die "could not cd to temp dir" OUTPUT="$("${NVM_EXEC}" node &1)"; EXIT_CODE=$? EXPECTED="No version provided and no .nvmrc file found ${HINT}"; [ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<" [ "${EXIT_CODE}" = 127 ] || die "expected exit code 127, got >${EXIT_CODE}<" cleanup