83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # UNITTEST: retry config
 | |
| # Will simulate a configuration failure and expects:
 | |
| # - the configuration step to be run 10 times
 | |
| # - the startup script to exit with error code 2
 | |
| # - the run.sh script to never run.
 | |
| 
 | |
| source ../assets/logging.sh
 | |
| 
 | |
| startup_log() {
 | |
|   while read I; do
 | |
|     printf "\tstartup.sh: $I\n"
 | |
|   done
 | |
| }
 | |
| 
 | |
| log "Setting up test area"
 | |
| export RUNNER_HOME=testarea
 | |
| mkdir -p ${RUNNER_HOME}
 | |
| 
 | |
| log "Setting up the test config"
 | |
| export UNITTEST=true
 | |
| export FAIL_RUNNER_CONFIG_SETUP=true
 | |
| export RUNNER_NAME="example_runner_name"
 | |
| export RUNNER_REPO="myorg/myrepo"
 | |
| export RUNNER_TOKEN="xxxxxxxxxxxxx"
 | |
| 
 | |
| # run.sh and config.sh get used by the runner's real entrypoint.sh and are part of actions/runner.
 | |
| # We change symlink dummy versions so the entrypoint.sh can run allowing us to test the real entrypoint.sh
 | |
| log "Symlink dummy config.sh and run.sh"
 | |
| ln -s ../../assets/config.sh ${RUNNER_HOME}/config.sh
 | |
| ln -s ../../assets/run.sh ${RUNNER_HOME}/run.sh
 | |
| 
 | |
| cleanup() {
 | |
|   rm -rf ${RUNNER_HOME}
 | |
|   unset UNITTEST
 | |
|   unset RUNNERHOME
 | |
|   unset RUNNER_NAME
 | |
|   unset RUNNER_REPO
 | |
|   unset RUNNER_TOKEN
 | |
|   unset FAIL_RUNNER_CONFIG_SETUP
 | |
| }
 | |
| 
 | |
| # Always run cleanup when test ends regardless of how it ends
 | |
| trap cleanup SIGINT SIGTERM SIGQUIT EXIT
 | |
| 
 | |
| log "Running the startup script"
 | |
| log ""
 | |
| 
 | |
| # Run the runner startup script which as a final step runs this
 | |
| # unit tests run.sh as it was symlinked
 | |
| ../../../runner/startup.sh 2> >(startup_log)
 | |
| 
 | |
| if [ "$?" != "2" ]; then
 | |
|   error "========================================="
 | |
|   error "FAIL | Configuration should have thrown an error"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| success "PASS | Entrypoint didn't complete successfully"
 | |
| 
 | |
| log "Checking the counter, should have 10 iterations"
 | |
| count=`cat ${RUNNER_HOME}/counter || "notfound"`
 | |
| if [ "${count}" != "10" ]; then
 | |
|   error "============================================="
 | |
|   error "FAIL | The retry loop should have done 10 iterations"
 | |
|   exit 1
 | |
| fi
 | |
| success "PASS | Retry loop went up to 10"
 | |
| 
 | |
| log "Checking that run.sh never ran"
 | |
| if [ -f ${RUNNER_HOME}/run_sh_ran ]; then
 | |
|   error "================================================================="
 | |
|   error "FAIL | run.sh was invoked, entrypoint.sh should have failed before that."
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| success "PASS | run.sh never ran"
 | |
| success
 | |
| success "==========================="
 | |
| success "Test completed successfully"
 | |
| exit 0
 |