#!/bin/sh cleanup () { unset -f setup cleanup die unset _PROFILE rm -f .bashrc .bash_profile .zshrc .profile test_profile > /dev/null 2>&1 } die () { echo $@ ; cleanup ; exit 1; } NVM_ENV=testing . ../../install.sh setup () { touch .bashrc touch .bash_profile touch .zshrc touch .profile touch test_profile } #Let's hack $HOME HOME="." setup #Let's force $SHELL to be bash SHELL="/bin/bash" # $SHELL is set to bash and .bashrc is there, it must be detected _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$HOME/.bashrc: _$HOME/.bashrc" && echo "_\$_PROFILE: _$_PROFILE" && die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc" ) # But $PROFILE should override PROFILE=test_profile _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile didn't pick \$PROFILE" ) unset PROFILE #Let's force $SHELL to be zsh SHELL="/usr/bin/zsh" # $SHELL is set to zsh and .zshrc is there, it must be detected _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$HOME/.zshrc: _$HOME/.zshrc" && echo "_\$_PROFILE: _$_PROFILE" && die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc" ) # But $PROFILE should override PROFILE=test_profile _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile didn't pick \$PROFILE" ) unset PROFILE # if we unset shell it looks for the files unset SHELL # $PROFILE points to a valid file, its path must be returned PROFILE="test_profile" _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile didn't pick \$PROFILE" ) # $PROFILE doesn't point to a valid file, its path must not be returned PROFILE="invalid_profile" _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" != "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile shouldn't pick \$PROFILE when it's not a valid file" ) # Below are tests for when $PROFILE is undefined rm test_profile unset PROFILE # It should favor .profile if file exists _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have selected .profile" ) rm .profile # Otherwise, it should favor .bashrc if file exists _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have selected .bashrc" ) rm .bashrc # Otherwise, it should favor .bash_profile if file exists _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.bash_profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have selected .bash_profile" ) rm .bash_profile # Otherwise, it should favor .zshrc if file exists _PROFILE=$(nvm_detect_profile) [ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have selected .zshrc" ) rm .zshrc # It should be empty if none is found _PROFILE=$(nvm_detect_profile) [ -z "$_PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have echo'ed an empty value" ) cleanup