mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-11-04 21:31:26 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			152 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
setup () {
 | 
						|
  HOME="."
 | 
						|
  NVM_ENV=testing \. ../../install.sh
 | 
						|
  ZDOTDIR="$HOME/zdotdir"
 | 
						|
  mkdir -p zdotdir
 | 
						|
  touch ".bashrc"
 | 
						|
  touch ".bash_profile"
 | 
						|
  touch ".zprofile"
 | 
						|
  touch ".zshrc"
 | 
						|
  touch ".profile"
 | 
						|
  touch "test_profile"
 | 
						|
  touch "zdotdir/.zshrc"
 | 
						|
  touch "zdotdir/.zprofile"
 | 
						|
}
 | 
						|
 | 
						|
cleanup () {
 | 
						|
  unset HOME
 | 
						|
  unset NVM_ENV
 | 
						|
  unset NVM_DETECT_PROFILE
 | 
						|
  unset SHELL
 | 
						|
  unset -f setup cleanup die
 | 
						|
  unset ZDOTDIR
 | 
						|
  rm -f ".bashrc" ".bash_profile" ".zprofile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
 | 
						|
  rm -rf zdotdir 2>&1
 | 
						|
}
 | 
						|
 | 
						|
die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
 | 
						|
 | 
						|
setup
 | 
						|
 | 
						|
#
 | 
						|
# Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
 | 
						|
#
 | 
						|
 | 
						|
# setting $PROFILE to /dev/null should return no detected profile
 | 
						|
NVM_DETECT_PROFILE="$(PROFILE='/dev/null' nvm_detect_profile)"
 | 
						|
if [ -n "$NVM_DETECT_PROFILE" ]; then
 | 
						|
  die "nvm_detect_profile still detected a profile even though PROFILE=/dev/null"
 | 
						|
fi
 | 
						|
 | 
						|
# .bashrc should be detected for bash
 | 
						|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
 | 
						|
  die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
 | 
						|
fi
 | 
						|
 | 
						|
# $PROFILE should override .bashrc profile detection
 | 
						|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE="test_profile" nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
 | 
						|
  die "nvm_detect_profile ignored \$PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# zdotdir/.zshrc should be detected for zsh
 | 
						|
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
 | 
						|
  die "nvm_detect_profile didn't pick \$ZDOTDIR/.zshrc for zsh"
 | 
						|
fi
 | 
						|
 | 
						|
# .zshrc should be detected for zsh
 | 
						|
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= ZDOTDIR= 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="$(SHELL="/usr/bin/zsh" PROFILE="test_profile" nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
 | 
						|
  die "nvm_detect_profile ignored \$PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Confirm $PROFILE is only returned when it points to a valid file
 | 
						|
#
 | 
						|
 | 
						|
# $PROFILE is a valid file
 | 
						|
NVM_DETECT_PROFILE="$(PROFILE="test_profile" SHELL= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
 | 
						|
  die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
 | 
						|
fi
 | 
						|
 | 
						|
# $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, .zprofile, .zshrc and
 | 
						|
# return an empty value if everything fails
 | 
						|
#
 | 
						|
 | 
						|
# It should favor .profile if file exists
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
 | 
						|
  die "nvm_detect_profile should have selected .profile; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor .bashrc if file exists
 | 
						|
rm ".profile"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
 | 
						|
  die "nvm_detect_profile should have selected .bashrc; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor .bash_profile if file exists
 | 
						|
rm ".bashrc"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
 | 
						|
  die "nvm_detect_profile should have selected .bash_profile; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor zdotdir/.zprofile if file exists
 | 
						|
rm ".bash_profile"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zprofile" ]; then
 | 
						|
  die "nvm_detect_profile should have selected zdotdir/.zprofile; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor .zprofile if file exists
 | 
						|
rm "zdotdir/.zprofile"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zprofile" ]; then
 | 
						|
  die "nvm_detect_profile should have selected .zprofile; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor zdotdir/.zshrc if file exists
 | 
						|
rm ".zprofile"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
 | 
						|
  die "nvm_detect_profile should have selected zdotdir/.zshrc; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# Otherwise, it should favor .zshrc if file exists
 | 
						|
rm "zdotdir/.zshrc"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
 | 
						|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
 | 
						|
  die "nvm_detect_profile should have selected .zshrc; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
# It should be empty if none is found
 | 
						|
rm ".zshrc"
 | 
						|
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
 | 
						|
if [ ! -z "$NVM_DETECT_PROFILE" ]; then
 | 
						|
  die "nvm_detect_profile should have returned an empty value; got $NVM_DETECT_PROFILE"
 | 
						|
fi
 | 
						|
 | 
						|
cleanup
 |