Browse Source

Merge pull request #957 from matthew-campbell/fix-profile-var

[Fix] `install.sh`: honor PROFILE var.

Closes #888. Fixes #830.
Jordan Harband 9 years ago
parent
commit
1ba8a96ec9
  1. 8
      install.sh
  2. 170
      test/install_script/nvm_detect_profile

8
install.sh

@ -115,6 +115,10 @@ install_nvm_as_script() {
# Otherwise, an empty string is returned # Otherwise, an empty string is returned
# #
nvm_detect_profile() { nvm_detect_profile() {
if [ -n "$PROFILE" -a -f "$PROFILE" ]; then
echo "$PROFILE"
return
fi
local DETECTED_PROFILE local DETECTED_PROFILE
DETECTED_PROFILE='' DETECTED_PROFILE=''
@ -132,9 +136,7 @@ nvm_detect_profile() {
fi fi
if [ -z "$DETECTED_PROFILE" ]; then if [ -z "$DETECTED_PROFILE" ]; then
if [ -f "$PROFILE" ]; then if [ -f "$HOME/.profile" ]; then
DETECTED_PROFILE="$PROFILE"
elif [ -f "$HOME/.profile" ]; then
DETECTED_PROFILE="$HOME/.profile" DETECTED_PROFILE="$HOME/.profile"
elif [ -f "$HOME/.bashrc" ]; then elif [ -f "$HOME/.bashrc" ]; then
DETECTED_PROFILE="$HOME/.bashrc" DETECTED_PROFILE="$HOME/.bashrc"

170
test/install_script/nvm_detect_profile

@ -1,101 +1,111 @@
#!/bin/sh #!/bin/sh
cleanup () { setup () {
unset -f setup cleanup die HOME="."
unset _PROFILE NVM_ENV=testing . ../../install.sh
rm -f .bashrc .bash_profile .zshrc .profile test_profile > /dev/null 2>&1 touch ".bashrc"
touch ".bash_profile"
touch ".zshrc"
touch ".profile"
touch "test_profile"
} }
die () { echo $@ ; cleanup ; exit 1; }
NVM_ENV=testing . ../../install.sh cleanup () {
unset HOME
setup () { unset NVM_ENV
touch .bashrc unset NVM_DETECT_PROFILE
touch .bash_profile unset -f setup cleanup die
touch .zshrc rm -f ".bashrc" ".bash_profile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
touch .profile
touch test_profile
} }
#Let's hack $HOME die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
HOME="."
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
_PROFILE=$(nvm_detect_profile) # .bashrc should be detected for bash
[ "_$_PROFILE" = "_$HOME/.bashrc" ] || echo "_\$HOME/.bashrc: _$HOME/.bashrc\n" \ NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
echo "_\$_PROFILE: _$_PROFILE\n" \ if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc" die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
fi
#Let's force $SHELL to be zsh
SHELL="/usr/bin/zsh" # $PROFILE should override .bashrc profile detection
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; PROFILE="test_profile"; nvm_detect_profile)"
# $SHELL is set to zsh and .zshrc is there, it must be detected if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
_PROFILE=$(nvm_detect_profile) die "nvm_detect_profile ignored \$PROFILE"
[ "_$_PROFILE" = "_$HOME/.zshrc" ] || echo "_\$HOME/.zshrc: _$HOME/.zshrc\n" \ fi
echo "_\$_PROFILE: _$_PROFILE\n" \
die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc" # .zshrc should be detected for zsh
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; unset PROFILE; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
# if we unset shell it looks for the files die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
unset SHELL fi
# $PROFILE points to a valid file, its path must be returned # $PROFILE should override .zshrc profile detection
PROFILE="test_profile" NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; PROFILE="test_profile"; nvm_detect_profile)"
_PROFILE=$(nvm_detect_profile) if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
[ "_$_PROFILE" = "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \ die "nvm_detect_profile ignored \$PROFILE"
echo "_\$PROFILE: _$PROFILE\n" \ fi
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" # Confirm $PROFILE is only returned when it points to a valid file
_PROFILE=$(nvm_detect_profile) #
[ "_$_PROFILE" != "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
echo "_\$PROFILE: _$PROFILE\n" \ # $PROFILE is a valid file
die "nvm_detect_profile shouldn't pick \$PROFILE when it's not a valid file" NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
# Below are tests for when $PROFILE is undefined fi
rm test_profile
unset PROFILE # $PROFILE is not a valid file
rm "test_profile"
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
fi
#
# 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
# return an empty value if everything fails
#
# 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\n" \ if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
echo "_\$PROFILE: _$PROFILE\n" \ die "nvm_detect_profile should have selected .profile"
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\n" \ NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE\n" \ 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\n" \ NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE\n" \ 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\n" \ NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE\n" \ 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\n" \ NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
echo "_\$PROFILE: _$PROFILE\n" \ 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

Loading…
Cancel
Save