#!/bin/sh cleanup () { rm -rf "${FAKE_BIN_DIR}" PATH="$ORIGINAL_PATH" unset -f cleanup die fake_uname unset ORIGINAL_PATH FAKE_BIN_DIR } die () { echo "$@" ; cleanup ; exit 1; } NVM_ENV=testing \. ../../install.sh ORIGINAL_PATH="$PATH" FAKE_BIN_DIR="$(mktemp -d)" PATH="${FAKE_BIN_DIR}:${PATH}" fake_uname() { printf '#!/bin/sh\necho %s\n' "$1" > "${FAKE_BIN_DIR}/uname" chmod +x "${FAKE_BIN_DIR}/uname" } type nvm_is_wsl > /dev/null 2>&1 || die 'nvm_is_wsl is not available' fake_uname '6.6.87.2-microsoft-standard-WSL2' nvm_is_wsl || die 'a WSL2 kernel release should be detected as WSL' fake_uname '4.4.0-19041-Microsoft' nvm_is_wsl || die 'a WSL1 kernel release should be detected as WSL' if [ -e /proc/sys/fs/binfmt_misc/WSLInterop ] || [ -e /proc/sys/fs/binfmt_misc/WSLInterop-late ]; then echo 'skipping the non-WSL checks: this machine has a WSL interop entry' else fake_uname '6.8.0-45-generic' ! nvm_is_wsl || die 'a non-WSL kernel release should not be detected as WSL' fake_uname '24.5.0' ! nvm_is_wsl || die 'a macOS kernel release should not be detected as WSL' fi cleanup