#!/bin/sh cleanup () { if [ -n "${SAVE_NVM_DIR-}" ]; then NVM_DIR="$SAVE_NVM_DIR" fi unset -f die cleanup unset SAVE_NVM_DIR } die () { echo "$@" ; cleanup ; exit 1; } SAVE_NVM_DIR="$NVM_DIR" NVM_ENV=testing \. ../../install.sh # install_nvm_from_git is available type install_nvm_from_git > /dev/null 2>&1 || die 'install_nvm_from_git is not available' # install_nvm_as_script is available type install_nvm_as_script > /dev/null 2>&1 || die 'install_nvm_as_script is not available' # nvm_do_install is available type nvm_do_install > /dev/null 2>&1 || die 'nvm_do_install is not available' IMPOSSIBLE_DIR="/dev/null/impossible_path" ## install_nvm_from_git: mkdir failure should exit with code 2 and print error OUTPUT="$(NVM_DIR="${IMPOSSIBLE_DIR}" install_nvm_from_git 2>&1)" EXIT_CODE=$? [ "${EXIT_CODE}" = '2' ] || die "install_nvm_from_git should exit 2 on mkdir failure, got ${EXIT_CODE}" echo "${OUTPUT}" | grep -q "Failed to create directory" || die "install_nvm_from_git should print mkdir error message, got: ${OUTPUT}" ## install_nvm_as_script: mkdir failure should return 1 and print error OUTPUT="$(NVM_DIR="${IMPOSSIBLE_DIR}" install_nvm_as_script 2>&1)" EXIT_CODE=$? [ "${EXIT_CODE}" = '1' ] || die "install_nvm_as_script should return 1 on mkdir failure, got ${EXIT_CODE}" echo "${OUTPUT}" | grep -q "Failed to create directory" || die "install_nvm_as_script should print mkdir error message, got: ${OUTPUT}" ## nvm_do_install: mkdir failure for default dir should exit with code 2 and print error # Override nvm_default_install_dir to return the impossible path so the mkdir branch is taken nvm_default_install_dir() { printf %s "${IMPOSSIBLE_DIR}" } OUTPUT="$(NVM_DIR="${IMPOSSIBLE_DIR}" nvm_do_install 2>&1)" EXIT_CODE=$? [ "${EXIT_CODE}" = '2' ] || die "nvm_do_install should exit 2 on mkdir failure, got ${EXIT_CODE}" echo "${OUTPUT}" | grep -q "Failed to create directory" || die "nvm_do_install should print mkdir error message, got: ${OUTPUT}" cleanup