mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 10:15:53 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| setup () {
 | |
|   HOME="."
 | |
|   NVM_ENV=testing . ../../install.sh
 | |
|   touch ".bashrc"
 | |
|   touch ".bash_profile"
 | |
|   touch ".zshrc"
 | |
|   touch ".profile"
 | |
|   touch "test_profile"
 | |
| }
 | |
| 
 | |
| cleanup () {
 | |
|   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 "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
 | |
| 
 | |
| setup
 | |
| 
 | |
| #
 | |
| # Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
 | |
| #
 | |
| 
 | |
| # .bashrc should be detected for bash
 | |
| NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset 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
 | |
| 
 | |
| # .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
 | |
|   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"; 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, .zshrc and
 | |
| # return an empty value if everything fails
 | |
| #
 | |
| 
 | |
| # It should favor .profile if file exists
 | |
| NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
 | |
| if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
 | |
|   die "nvm_detect_profile should have selected .profile"
 | |
| fi
 | |
| 
 | |
| # Otherwise, it should favor .bashrc if file exists
 | |
| rm ".profile"
 | |
| NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
 | |
| if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
 | |
|   die "nvm_detect_profile should have selected .bashrc"
 | |
| fi
 | |
| 
 | |
| # Otherwise, it should favor .bash_profile if file exists
 | |
| rm ".bashrc"
 | |
| NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
 | |
| if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
 | |
|   die "nvm_detect_profile should have selected .bash_profile"
 | |
| fi
 | |
| 
 | |
| # Otherwise, it should favor .zshrc if file exists
 | |
| rm ".bash_profile"
 | |
| NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
 | |
| if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
 | |
|   die "nvm_detect_profile should have selected .zshrc"
 | |
| fi
 | |
| 
 | |
| # It should be empty if none is found
 | |
| rm ".zshrc"
 | |
| NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
 | |
| if [ ! -z "$NVM_DETECT_PROFILE" ]; then
 | |
|   die "nvm_detect_profile should have returned an empty value"
 | |
| fi
 | |
| 
 | |
| cleanup
 |