mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	shtests: report total errors on terminal and in exit status
Setting the exit status allows build scripts and the like to actually detect regression test failures. src/cmd/ksh93/tests/shtests: - Add counter for total number of errors. - Report total to stdout at the end. - Set the exit status to the total number of errors, up to 125 (higher statuses have special meanings). (cherry picked from commit c0dd80b14d4d316b4e9eff4b1b67d4e47f23a6ba)
This commit is contained in:
		
							parent
							
								
									fb652a7e50
								
							
						
					
					
						commit
						c2eabc57e0
					
				
					 1 changed files with 10 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -307,6 +307,7 @@ then	if	[[ -x $SHELL-g ]]
 | 
			
		|||
	valgrind+=" --xml-file=$valxml"
 | 
			
		||||
fi
 | 
			
		||||
typeset -A tests
 | 
			
		||||
typeset -i total_e=0
 | 
			
		||||
for i in ${*-*.sh}
 | 
			
		||||
do	[[ $i == *.sh ]] || i+='.sh'
 | 
			
		||||
	if	[[ ! -r $i ]]
 | 
			
		||||
| 
						 | 
				
			
			@ -345,11 +346,12 @@ do	[[ $i == *.sh ]] || i+='.sh'
 | 
			
		|||
			then	valxml $valxml
 | 
			
		||||
				(( e += $? ))
 | 
			
		||||
			fi
 | 
			
		||||
			if	(( e > 256 ))
 | 
			
		||||
			if	(( e > 256 && ++total_e ))
 | 
			
		||||
			then	E="(killed by SIG$(kill -l "$e"))"
 | 
			
		||||
			elif	(( e == 1 ))
 | 
			
		||||
			elif	(( e == 1 && ++total_e ))
 | 
			
		||||
			then	E="1 error"
 | 
			
		||||
			else	E="$e errors"
 | 
			
		||||
				(( total_e += e ))
 | 
			
		||||
			fi
 | 
			
		||||
			if	(( e == 0 ))
 | 
			
		||||
			then	echo test $o passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T $E ]"
 | 
			
		||||
| 
						 | 
				
			
			@ -365,15 +367,17 @@ do	[[ $i == *.sh ]] || i+='.sh'
 | 
			
		|||
		then	if	$valgrind $SHELL $trace $c
 | 
			
		||||
			then	echo test $o passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 errors ]"
 | 
			
		||||
			else	e=$?
 | 
			
		||||
				if	(( e > 256 ))
 | 
			
		||||
				if	(( e > 256 && ++total_e ))
 | 
			
		||||
				then	E="(killed by SIG$(kill -l "$e"))"
 | 
			
		||||
				elif	(( e == 1 ))
 | 
			
		||||
				elif	(( e == 1 && ++total_e ))
 | 
			
		||||
				then	E="1 error"
 | 
			
		||||
				else	E="$e errors"
 | 
			
		||||
					(( total_e += e ))
 | 
			
		||||
				fi
 | 
			
		||||
				echo test $o failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $E ]"
 | 
			
		||||
			fi
 | 
			
		||||
		else	e=$?
 | 
			
		||||
			(( ++total_e ))
 | 
			
		||||
			echo test $o failed to compile ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ 1 test 1 error ]"
 | 
			
		||||
		fi
 | 
			
		||||
		if	[[ $i == $timesensitive ]]
 | 
			
		||||
| 
						 | 
				
			
			@ -381,3 +385,5 @@ do	[[ $i == *.sh ]] || i+='.sh'
 | 
			
		|||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
print "Total errors: $total_e"
 | 
			
		||||
exit $((total_e > 125 ? 125 : total_e))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue