Refactor and fix nvm_detect_profile tests

close #833
close #957
Matthew Campbell 2016-01-01 20:45:36 -05:00
parent 645bda4987
commit 8dc53d4dd5
1 changed files with 84 additions and 90 deletions

View File

@ -1,117 +1,111 @@
#!/bin/sh #!/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 () { setup () {
touch .bashrc HOME="."
touch .bash_profile NVM_ENV=testing . ../../install.sh
touch .zshrc touch ".bashrc"
touch .profile touch ".bash_profile"
touch test_profile touch ".zshrc"
touch ".profile"
touch "test_profile"
} }
#Let's hack $HOME cleanup () {
HOME="." unset HOME
unset NVM_ENV
unset NVM_DETECT_PROFILE
unset -f setup cleanup die
rm -f ".bashrc" ".bash_profile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
}
die () { echo "$@"; cleanup; exit 1; }
setup setup
#Let's force $SHELL to be bash #
SHELL="/bin/bash" # Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
#
# $SHELL is set to bash and .bashrc is there, it must be detected # .bashrc should be detected for bash
_PROFILE=$(nvm_detect_profile) NVM_DETECT_PROFILE="$(declare SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
[ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$HOME/.bashrc: _$HOME/.bashrc" && if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
echo "_\$_PROFILE: _$_PROFILE" && die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc" ) fi
# But $PROFILE should override # $PROFILE should override .bashrc profile detection
_PROFILE="$(PROFILE=test_profile nvm_detect_profile)" NVM_DETECT_PROFILE="$(declare SHELL="/bin/bash"; declare PROFILE="test_profile"; nvm_detect_profile)"
_PROFILE=$(nvm_detect_profile) if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
[ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && die "nvm_detect_profile ignored \$PROFILE"
echo "_\$PROFILE: _$PROFILE" && fi
die "nvm_detect_profile didn't pick \$PROFILE" )
unset PROFILE # .zshrc should be detected for zsh
NVM_DETECT_PROFILE="$(declare SHELL="/usr/bin/zsh"; unset PROFILE; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
fi
# $PROFILE should override .zshrc profile detection
NVM_DETECT_PROFILE="$(declare SHELL="/usr/bin/zsh"; declare PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
die "nvm_detect_profile ignored \$PROFILE"
fi
#Let's force $SHELL to be zsh #
SHELL="/usr/bin/zsh" # Confirm $PROFILE is only returned when it points to a valid file
#
# $SHELL is set to zsh and .zshrc is there, it must be detected # $PROFILE is a valid file
_PROFILE=$(nvm_detect_profile) NVM_DETECT_PROFILE="$(declare PROFILE="test_profile"; nvm_detect_profile)"
[ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$HOME/.zshrc: _$HOME/.zshrc" && if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
echo "_\$_PROFILE: _$_PROFILE" && die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc" ) fi
# But $PROFILE should override # $PROFILE is not a valid file
_PROFILE="$(PROFILE=test_profile nvm_detect_profile)" rm "test_profile"
_PROFILE=$(nvm_detect_profile) NVM_DETECT_PROFILE="$(declare PROFILE="test_profile"; nvm_detect_profile)"
[ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
die "nvm_detect_profile didn't pick \$PROFILE" ) fi
unset PROFILE
# if we unset shell it looks for the files #
unset SHELL # When profile detection fails via both $PROFILE and $SHELL, profile detection should select based on the existence of
# one of the following files is the following order: .profile, .bashrc, .bash_profile, .zshrc and
# $PROFILE points to a valid file, its path must be returned # return an empty value if everything fails
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 # It should favor .profile if file exists
_PROFILE=$(nvm_detect_profile) NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
[ "_$_PROFILE" = "_$HOME/.profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" && if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
echo "_\$PROFILE: _$PROFILE" && die "nvm_detect_profile should have selected .profile ($NVM_DETECT_PROFILE) ($SHELL)"
die "nvm_detect_profile should have selected .profile" ) fi
rm .profile
# Otherwise, it should favor .bashrc if file exists # Otherwise, it should favor .bashrc if file exists
_PROFILE=$(nvm_detect_profile) rm ".profile"
[ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" && NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE" && if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
die "nvm_detect_profile should have selected .bashrc" ) die "nvm_detect_profile should have selected .bashrc"
fi
rm .bashrc
# Otherwise, it should favor .bash_profile if file exists # Otherwise, it should favor .bash_profile if file exists
_PROFILE=$(nvm_detect_profile) rm ".bashrc"
[ "_$_PROFILE" = "_$HOME/.bash_profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" && NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE" && if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
die "nvm_detect_profile should have selected .bash_profile" ) die "nvm_detect_profile should have selected .bash_profile"
fi
rm .bash_profile
# Otherwise, it should favor .zshrc if file exists # Otherwise, it should favor .zshrc if file exists
_PROFILE=$(nvm_detect_profile) rm ".bash_profile"
[ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" && NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE" && if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
die "nvm_detect_profile should have selected .zshrc" ) die "nvm_detect_profile should have selected .zshrc"
fi
rm .zshrc
# It should be empty if none is found # It should be empty if none is found
_PROFILE=$(nvm_detect_profile) rm ".zshrc"
[ -z "$_PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" && NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE" && if [ ! -z "$NVM_DETECT_PROFILE" ]; then
die "nvm_detect_profile should have echo'ed an empty value" ) die "nvm_detect_profile should have returned an empty value"
fi
cleanup cleanup