Adds tests driven by shunit2 framework
This commit is contained in:
		
							parent
							
								
									00d9c3916c
								
							
						
					
					
						commit
						feb3c3f07c
					
				
					 10 changed files with 2895 additions and 0 deletions
				
			
		
							
								
								
									
										23
									
								
								test/drop_test.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								test/drop_test.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| #! /bin/bash | ||||
| 
 | ||||
| testDrop9From10() { | ||||
|   assertEquals 10 $(list {1..10} | drop 9) | ||||
| } | ||||
| 
 | ||||
| testDrop8From10() { | ||||
|   assertEquals "9 10" "$(list {1..10} | drop 8 | unlist)" | ||||
| } | ||||
| 
 | ||||
| testDropAll() { | ||||
|   assertEquals "" "$(list {1..10} | drop 10)" | ||||
| } | ||||
| 
 | ||||
| testDropMoreThanAvailable() { | ||||
|   assertEquals "" "$(list {1..10} | drop 15)" | ||||
| } | ||||
| 
 | ||||
| testDropZero() { | ||||
|   assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | drop 0 | unlist)" | ||||
| } | ||||
| 
 | ||||
| . ./shunit2-init.sh | ||||
							
								
								
									
										16
									
								
								test/head_test.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								test/head_test.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| #! /bin/bash | ||||
| 
 | ||||
| testHeadFromList() { | ||||
|   assertEquals 1 $(list {1..10} | head) | ||||
|   assertEquals 5 $(list 5 6 7 | head) | ||||
| } | ||||
| 
 | ||||
| testHeadFromOneElementList() { | ||||
|   assertEquals 1 $(list 1 | head) | ||||
| } | ||||
| 
 | ||||
| testHeadFromEmptyList() { | ||||
|   assertEquals "" "$(list | head)" | ||||
| } | ||||
| 
 | ||||
| . ./shunit2-init.sh | ||||
							
								
								
									
										1222
									
								
								test/lib/shflags
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1222
									
								
								test/lib/shflags
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										39
									
								
								test/lib/shlib
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								test/lib/shlib
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | |||
| # vim:et:ft=sh:sts=2:sw=2 | ||||
| # | ||||
| # Copyright 2008 Kate Ward. All Rights Reserved. | ||||
| # Released under the LGPL (GNU Lesser General Public License). | ||||
| # | ||||
| # Author: kate.ward@forestent.com (Kate Ward) | ||||
| # | ||||
| # Library of shell functions. | ||||
| 
 | ||||
| # Convert a relative path into it's absolute equivalent. | ||||
| # | ||||
| # This function will automatically prepend the current working directory if the | ||||
| # path is not already absolute. It then removes all parent references (../) to | ||||
| # reconstruct the proper absolute path. | ||||
| # | ||||
| # Args: | ||||
| #   shlib_path_: string: relative path | ||||
| # Outputs: | ||||
| #   string: absolute path | ||||
| shlib_relToAbsPath() | ||||
| { | ||||
|   shlib_path_=$1 | ||||
| 
 | ||||
|   # prepend current directory to relative paths | ||||
|   echo "${shlib_path_}" |grep '^/' >/dev/null 2>&1 \ | ||||
|       || shlib_path_="${PWD}/${shlib_path_}" | ||||
| 
 | ||||
|   # clean up the path. if all seds supported true regular expressions, then | ||||
|   # this is what it would be: | ||||
|   shlib_old_=${shlib_path_} | ||||
|   while true; do | ||||
|     shlib_new_=`echo "${shlib_old_}" |sed 's/[^/]*\/\.\.\/*//;s/\/\.\//\//'` | ||||
|     [ "${shlib_old_}" = "${shlib_new_}" ] && break | ||||
|     shlib_old_=${shlib_new_} | ||||
|   done | ||||
|   echo "${shlib_new_}" | ||||
| 
 | ||||
|   unset shlib_path_ shlib_old_ shlib_new_ | ||||
| } | ||||
							
								
								
									
										251
									
								
								test/lib/versions
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										251
									
								
								test/lib/versions
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,251 @@ | |||
| #! /bin/sh | ||||
| # vim:et:ft=sh:sts=2:sw=2 | ||||
| # | ||||
| # Versions determines the versions of all installed shells. | ||||
| # | ||||
| # Copyright 2008-2017 Kate Ward. All Rights Reserved. | ||||
| # Released under the Apache 2.0 License. | ||||
| # | ||||
| # Author: kate.ward@forestent.com (Kate Ward) | ||||
| # https://github.com/kward/shlib | ||||
| # | ||||
| # This library provides reusable functions that determine actual names and | ||||
| # versions of installed shells and the OS. The library can also be run as a | ||||
| # script if set executable. | ||||
| # | ||||
| # Disable checks that aren't fully portable (POSIX != portable). | ||||
| # shellcheck disable=SC2006 | ||||
| 
 | ||||
| ARGV0=`basename "$0"` | ||||
| LSB_RELEASE='/etc/lsb-release' | ||||
| VERSIONS_SHELLS="ash /bin/bash /bin/dash /bin/ksh /bin/pdksh /bin/sh /bin/zsh" | ||||
| 
 | ||||
| true; TRUE=$? | ||||
| false; FALSE=$? | ||||
| ERROR=2 | ||||
| 
 | ||||
| UNAME_R=`uname -r` | ||||
| UNAME_S=`uname -s` | ||||
| 
 | ||||
| __versions_haveStrings=${ERROR} | ||||
| 
 | ||||
| versions_osName() { | ||||
|   os_name_='unrecognized' | ||||
|   os_system_=${UNAME_S} | ||||
|   os_release_=${UNAME_R} | ||||
|   case ${os_system_} in | ||||
|     CYGWIN_NT-*) os_name_='Cygwin' ;; | ||||
|     Darwin) | ||||
|       os_name_=`/usr/bin/sw_vers -productName` | ||||
|       os_version_=`versions_osVersion` | ||||
|       case ${os_version_} in | ||||
|         10.4|10.4.[0-9]*) os_name_='Mac OS X Tiger' ;; | ||||
|         10.5|10.5.[0-9]*) os_name_='Mac OS X Leopard' ;; | ||||
|         10.6|10.6.[0-9]*) os_name_='Mac OS X Snow Leopard' ;; | ||||
|         10.7|10.7.[0-9]*) os_name_='Mac OS X Lion' ;; | ||||
|         10.8|10.8.[0-9]*) os_name_='Mac OS X Mountain Lion' ;; | ||||
|         10.9|10.9.[0-9]*) os_name_='Mac OS X Mavericks' ;; | ||||
|         10.10|10.10.[0-9]*) os_name_='Mac OS X Yosemite' ;; | ||||
|         10.11|10.11.[0-9]*) os_name_='Mac OS X El Capitan' ;; | ||||
|         10.12|10.12.[0-9]*) os_name_='macOS Sierra' ;; | ||||
|         10.13|10.13.[0-9]*) os_name_='macOS High Sierra' ;; | ||||
|         *) os_name_='macOS' ;; | ||||
|       esac | ||||
|       ;; | ||||
|     FreeBSD) os_name_='FreeBSD' ;; | ||||
|     Linux) os_name_='Linux' ;; | ||||
|     SunOS) | ||||
|       if grep 'OpenSolaris' /etc/release >/dev/null; then | ||||
|         os_name_='OpenSolaris' | ||||
|       else | ||||
|         os_name_='Solaris' | ||||
|       fi | ||||
|       ;; | ||||
|   esac | ||||
| 
 | ||||
|   echo ${os_name_} | ||||
|   unset os_name_ os_system_ os_release_ os_version_ | ||||
| } | ||||
| 
 | ||||
| versions_osVersion() { | ||||
|   os_version_='unrecognized' | ||||
|   os_system_=${UNAME_S} | ||||
|   os_release_=${UNAME_R} | ||||
|   case ${os_system_} in | ||||
|     CYGWIN_NT-*) | ||||
|       os_version_=`expr "${os_release_}" : '\([0-9]*\.[0-9]\.[0-9]*\).*'` | ||||
|       ;; | ||||
|     Darwin) | ||||
|       os_version_=`/usr/bin/sw_vers -productVersion` | ||||
|       ;; | ||||
|     FreeBSD) | ||||
|       os_version_=`expr "${os_release_}" : '\([0-9]*\.[0-9]*\)-.*'` | ||||
|       ;; | ||||
|     Linux) | ||||
|       if [ -r '/etc/os-release' ]; then | ||||
|           os_version_=`awk -F= '$1~/PRETTY_NAME/{print $2}' /etc/os-release \ | ||||
|             |sed 's/"//g'` | ||||
|       elif [ -r '/etc/redhat-release' ]; then | ||||
|         os_version_=`cat /etc/redhat-release` | ||||
|       elif [ -r '/etc/SuSE-release' ]; then | ||||
|         os_version_=`head -n 1 /etc/SuSE-release` | ||||
|       elif [ -r "${LSB_RELEASE}" ]; then | ||||
|         if grep -q 'DISTRIB_ID=Ubuntu' "${LSB_RELEASE}"; then | ||||
|           # shellcheck disable=SC2002 | ||||
|           os_version_=`cat "${LSB_RELEASE}" \ | ||||
|             |awk -F= '$1~/DISTRIB_DESCRIPTION/{print $2}' \ | ||||
|             |sed 's/"//g;s/ /-/g'` | ||||
|         fi | ||||
|       fi | ||||
|       ;; | ||||
|     SunOS) | ||||
|       if grep 'OpenSolaris' /etc/release >/dev/null; then | ||||
|         os_version_=`grep 'OpenSolaris' /etc/release |awk '{print $2"("$3")"}'` | ||||
|       else | ||||
|         major_=`echo "${os_release_}" |sed 's/[0-9]*\.\([0-9]*\)/\1/'` | ||||
|         minor_=`grep Solaris /etc/release |sed 's/[^u]*\(u[0-9]*\).*/\1/'` | ||||
|         os_version_="${major_}${minor_}" | ||||
|       fi | ||||
|       ;; | ||||
|   esac | ||||
| 
 | ||||
|   echo "${os_version_}" | ||||
|   unset os_name_ os_release_ os_version_ major_ minor_ | ||||
| } | ||||
| 
 | ||||
| versions_shellVersion() { | ||||
|   shell_=$1 | ||||
| 
 | ||||
|   shell_present_=${FALSE} | ||||
|   case "${shell_}" in | ||||
|     ash) | ||||
|       [ -x '/bin/busybox' ] && shell_present_=${TRUE} | ||||
|       ;; | ||||
|     *) | ||||
|       [ -x "${shell_}" ] && shell_present_=${TRUE} | ||||
|       ;; | ||||
|   esac | ||||
|   if [ ${shell_present_} -eq ${FALSE} ]; then | ||||
|     echo 'not installed' | ||||
|     return ${FALSE} | ||||
|   fi | ||||
| 
 | ||||
|   version_='' | ||||
|   case ${shell_} in | ||||
|     */sh) | ||||
|       # TODO(kward): fix this | ||||
|       ## this could be one of any number of shells. try until one fits. | ||||
|       #version_=`versions_shell_bash ${shell_}` | ||||
|       ## dash cannot be self determined yet | ||||
|       #[ -z "${version_}" ] && version_=`versions_shell_ksh ${shell_}` | ||||
|       ## pdksh is covered in versions_shell_ksh() | ||||
|       #[ -z "${version_}" ] && version_=`versions_shell_zsh ${shell_}` | ||||
|       ;; | ||||
|     ash) version_=`versions_shell_ash "${shell_}"` ;; | ||||
|     */bash) version_=`versions_shell_bash "${shell_}"` ;; | ||||
|     */dash) | ||||
|       # simply assuming Ubuntu Linux until somebody comes up with a better | ||||
|       # test. the following test will return an empty string if dash is not | ||||
|       # installed. | ||||
|       version_=`versions_shell_dash` | ||||
|       ;; | ||||
|     */ksh) version_=`versions_shell_ksh "${shell_}"` ;; | ||||
|     */pdksh) version_=`versions_shell_pdksh "${shell_}"` ;; | ||||
|     */zsh) version_=`versions_shell_zsh "${shell_}"` ;; | ||||
|     *) version_='invalid' | ||||
|   esac | ||||
| 
 | ||||
|   echo "${version_:-unknown}" | ||||
|   unset shell_ version_ | ||||
| } | ||||
| 
 | ||||
| # The ash shell is included in BusyBox. | ||||
| versions_shell_ash() { | ||||
|   busybox --help |head -1 |sed 's/BusyBox v\([0-9.]*\) .*/\1/' | ||||
| } | ||||
| 
 | ||||
| versions_shell_bash() { | ||||
|   $1 --version 2>&1 |grep 'GNU bash' |sed 's/.*version \([^ ]*\).*/\1/' | ||||
| } | ||||
| 
 | ||||
| versions_shell_dash() { | ||||
|   eval dpkg >/dev/null 2>&1 | ||||
|   [ $? -eq 127 ] && return  # return if dpkg not found | ||||
| 
 | ||||
|   dpkg -l |grep ' dash ' |awk '{print $3}' | ||||
| } | ||||
| 
 | ||||
| versions_shell_ksh() { | ||||
|   versions_shell_=$1 | ||||
|   versions_version_='' | ||||
| 
 | ||||
|   # Try a few different ways to figure out the version. | ||||
|   if versions_version_=`${versions_shell_} --version : 2>&1`; then | ||||
|     versions_version_=`echo "${versions_version_}" \ | ||||
|       |sed 's/.*\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*/\1/'` | ||||
|   fi | ||||
|   if [ -z "${versions_version_}" ]; then | ||||
|     _versions_have_strings | ||||
|     versions_version_=`strings "${versions_shell_}" 2>&1 \ | ||||
|       |grep Version \ | ||||
|       |sed 's/^.*Version \(.*\)$/\1/;s/ s+ \$$//;s/ /-/g'` | ||||
|   fi | ||||
|   if [ -z "${versions_version_}" ]; then | ||||
|     versions_version_=`versions_shell_pdksh "${versions_shell_}"` | ||||
|   fi | ||||
| 
 | ||||
|   echo "${versions_version_}" | ||||
|   unset versions_shell_ versions_version_ | ||||
| } | ||||
| 
 | ||||
| versions_shell_pdksh() { | ||||
|   _versions_have_strings | ||||
|   strings "$1" 2>&1 \ | ||||
|   |grep 'PD KSH' \ | ||||
|   |sed -e 's/.*PD KSH \(.*\)/\1/;s/ /-/g' | ||||
| } | ||||
| 
 | ||||
| versions_shell_zsh() { | ||||
|   versions_shell_=$1 | ||||
| 
 | ||||
|   # Try a few different ways to figure out the version. | ||||
|   # shellcheck disable=SC2016 | ||||
|   versions_version_=`echo 'echo ${ZSH_VERSION}' |${versions_shell_}` | ||||
| 
 | ||||
|   if [ -z "${versions_version_}" ]; then | ||||
|     versions_version_=`${versions_shell_} --version 2>&1 |awk '{print $2}'` | ||||
|   fi | ||||
| 
 | ||||
|   echo "${versions_version_}" | ||||
|   unset versions_shell_ versions_version_ | ||||
| } | ||||
| 
 | ||||
| # Determine if the 'strings' binary installed. | ||||
| _versions_have_strings() { | ||||
|   [ ${__versions_haveStrings} -ne ${ERROR} ] && return | ||||
|   if eval strings /dev/null >/dev/null 2>&1; then | ||||
|     __versions_haveStrings=${TRUE} | ||||
|     return | ||||
|   fi | ||||
| 
 | ||||
|   echo 'WARN: strings not installed. try installing binutils?' >&2 | ||||
|   __versions_haveStrings=${FALSE} | ||||
| } | ||||
| 
 | ||||
| versions_main() { | ||||
|   # Treat unset variables as an error. | ||||
|   set -u | ||||
| 
 | ||||
|   os_name=`versions_osName` | ||||
|   os_version=`versions_osVersion` | ||||
|   echo "os: ${os_name} version: ${os_version}" | ||||
| 
 | ||||
|   for shell in ${VERSIONS_SHELLS}; do | ||||
|     shell_version=`versions_shellVersion "${shell}"` | ||||
|     echo "shell: ${shell} version: ${shell_version}" | ||||
|   done | ||||
| } | ||||
| 
 | ||||
| if [ "${ARGV0}" = 'versions' ]; then | ||||
|   versions_main "$@" | ||||
| fi | ||||
							
								
								
									
										1137
									
								
								test/shunit2
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1137
									
								
								test/shunit2
									
										
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										6
									
								
								test/shunit2-init.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/shunit2-init.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| oneTimeSetUp() { | ||||
|   . ../src/fun.sh | ||||
| } | ||||
| 
 | ||||
| # Load shUnit2. | ||||
| . ./shunit2 | ||||
							
								
								
									
										15
									
								
								test/tail_test.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								test/tail_test.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| #! /bin/bash | ||||
| 
 | ||||
| testTailFrom10() { | ||||
|   assertEquals "2 3 4 5 6 7 8 9 10" "$(list {1..10} | tail | unlist)" | ||||
| } | ||||
| 
 | ||||
| testTailFromOneElementList() { | ||||
|   assertEquals "" "$(list 1 | tail)" | ||||
| } | ||||
| 
 | ||||
| testTailFromEmptyList() { | ||||
|   assertEquals "" "$(list | tail)" | ||||
| } | ||||
| 
 | ||||
| . ./shunit2-init.sh | ||||
							
								
								
									
										23
									
								
								test/take_test.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								test/take_test.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| #! /bin/bash | ||||
| 
 | ||||
| testTake9From10() { | ||||
|   assertEquals "1 2 3 4 5 6 7 8 9" "$(list {1..10} | take 9 | unlist)" | ||||
| } | ||||
| 
 | ||||
| testTake8From10() { | ||||
|   assertEquals "1 2 3 4 5 6 7 8" "$(list {1..10} | take 8 | unlist)" | ||||
| } | ||||
| 
 | ||||
| testTakeAll() { | ||||
|   assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | take 10 | unlist)" | ||||
| } | ||||
| 
 | ||||
| testTakeMoreThanAvailable() { | ||||
|   assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | take 15 | unlist)" | ||||
| } | ||||
| 
 | ||||
| testTakeZero() { | ||||
|   assertEquals "" "$(list {1..10} | take 0 | unlist)" | ||||
| } | ||||
| 
 | ||||
| . ./shunit2-init.sh | ||||
							
								
								
									
										163
									
								
								test/test_runner
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										163
									
								
								test/test_runner
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,163 @@ | |||
| #! /bin/sh | ||||
| # vim:et:ft=sh:sts=2:sw=2 | ||||
| # | ||||
| # Unit test suite runner. | ||||
| # | ||||
| # Copyright 2008-2017 Kate Ward. All Rights Reserved. | ||||
| # Released under the Apache 2.0 license. | ||||
| # | ||||
| # Author: kate.ward@forestent.com (Kate Ward) | ||||
| # https://github.com/kward/shlib | ||||
| # | ||||
| # This script runs all the unit tests that can be found, and generates a nice | ||||
| # report of the tests. | ||||
| # | ||||
| ### ShellCheck (http://www.shellcheck.net/) | ||||
| # Disable source following. | ||||
| #   shellcheck disable=SC1090,SC1091 | ||||
| # expr may be antiquated, but it is the only solution in some cases. | ||||
| #   shellcheck disable=SC2003 | ||||
| 
 | ||||
| # Return if test_runner already loaded. | ||||
| [ -z "${RUNNER_LOADED:-}" ] || return 0 | ||||
| RUNNER_LOADED=0 | ||||
| 
 | ||||
| RUNNER_ARGV0=$(basename "$0") | ||||
| RUNNER_SHELLS='/bin/bash' | ||||
| RUNNER_TEST_SUFFIX='_test.sh' | ||||
| 
 | ||||
| runner_warn() { echo "runner:WARN $*" >&2; } | ||||
| runner_error() { echo "runner:ERROR $*" >&2; } | ||||
| runner_fatal() { echo "runner:FATAL $*" >&2; exit 1; } | ||||
| 
 | ||||
| runner_usage() { | ||||
|   echo "usage: ${RUNNER_ARGV0} [-e key=val ...] [-s shell(s)] [-t test(s)]" | ||||
| } | ||||
| 
 | ||||
| _runner_tests() { echo ./*${RUNNER_TEST_SUFFIX} |sed 's#./##g'; } | ||||
| _runner_testName() { | ||||
|   # shellcheck disable=SC1117 | ||||
|   _runner_testName_=$(expr "${1:-}" : "\(.*\)${RUNNER_TEST_SUFFIX}") | ||||
|   if [ -n "${_runner_testName_}" ]; then | ||||
|     echo "${_runner_testName_}" | ||||
|   else | ||||
|     echo 'unknown' | ||||
|   fi | ||||
|   unset _runner_testName_ | ||||
| } | ||||
| 
 | ||||
| main() { | ||||
|   # Find and load versions library. | ||||
|   for _runner_dir_ in . ${LIB_DIR:-lib}; do | ||||
|     if [ -r "${_runner_dir_}/versions" ]; then | ||||
|       _runner_lib_dir_="${_runner_dir_}" | ||||
|       break | ||||
|     fi | ||||
|   done | ||||
|   [ -n "${_runner_lib_dir_}" ] || runner_fatal 'Unable to find versions library.' | ||||
|   . "${_runner_lib_dir_}/versions" || runner_fatal 'Unable to load versions library.' | ||||
|   unset _runner_dir_ _runner_lib_dir_ | ||||
| 
 | ||||
|   # Process command line flags. | ||||
|   env='' | ||||
|   while getopts 'e:hs:t:' opt; do | ||||
|     case ${opt} in | ||||
|       e)  # set an environment variable | ||||
|         key=$(expr "${OPTARG}" : '\([^=]*\)=') | ||||
|         val=$(expr "${OPTARG}" : '[^=]*=\(.*\)') | ||||
|         # shellcheck disable=SC2166 | ||||
|         if [ -z "${key}" -o -z "${val}" ]; then | ||||
|           runner_usage | ||||
|           exit 1 | ||||
|         fi | ||||
|         eval "${key}='${val}'" | ||||
|         eval "export ${key}" | ||||
|         env="${env:+${env} }${key}" | ||||
|         ;; | ||||
|       h) runner_usage; exit 0 ;;  # help output | ||||
|       s) shells=${OPTARG} ;;  # list of shells to run | ||||
|       t) tests=${OPTARG} ;;  # list of tests to run | ||||
|       *) runner_usage; exit 1 ;; | ||||
|     esac | ||||
|   done | ||||
|   shift "$(expr ${OPTIND} - 1)" | ||||
| 
 | ||||
|   # Fill shells and/or tests. | ||||
|   shells=${shells:-${RUNNER_SHELLS}} | ||||
|   tests=${tests:-$(_runner_tests)} | ||||
| 
 | ||||
|   # Error checking. | ||||
|   if [ -z "${tests}" ]; then | ||||
|     runner_error 'no tests found to run; exiting' | ||||
|     exit 1 | ||||
|   fi | ||||
| 
 | ||||
|   cat <<EOF | ||||
| #------------------------------------------------------------------------------ | ||||
| # System data. | ||||
| # | ||||
| 
 | ||||
| $ uname -mprsv | ||||
| $(uname -mprsv) | ||||
| 
 | ||||
| OS Name: $(versions_osName) | ||||
| OS Version: $(versions_osVersion) | ||||
| 
 | ||||
| ### Test run info. | ||||
| shells: ${shells} | ||||
| tests: ${tests} | ||||
| EOF | ||||
| for key in ${env}; do | ||||
|   eval "echo \"${key}=\$${key}\"" | ||||
| done | ||||
| 
 | ||||
| # Run tests. | ||||
| for shell in ${shells}; do | ||||
|   echo | ||||
| 
 | ||||
|   cat <<EOF | ||||
| 
 | ||||
| #------------------------------------------------------------------------------ | ||||
| # Running the test suite with ${shell}. | ||||
| # | ||||
| EOF | ||||
| 
 | ||||
|     # Check for existence of shell. | ||||
|     shell_bin=${shell} | ||||
|     shell_name='' | ||||
|     shell_present=${FALSE} | ||||
|     case ${shell} in | ||||
|       ash) | ||||
|         shell_bin=$(which busybox) | ||||
|         [ $? -eq "${TRUE}" ] && shell_present="${TRUE}" | ||||
|         shell_bin="${shell_bin} ash" | ||||
|         shell_name=${shell} | ||||
|         ;; | ||||
|       *) | ||||
|         [ -x "${shell_bin}" ] && shell_present="${TRUE}" | ||||
|         shell_name=$(basename "${shell}") | ||||
|         ;; | ||||
|     esac | ||||
|     if [ "${shell_present}" -eq "${FALSE}" ]; then | ||||
|       runner_warn "unable to run tests with the ${shell_name} shell" | ||||
|       continue | ||||
|     fi | ||||
| 
 | ||||
|     shell_version=$(versions_shellVersion "${shell}") | ||||
| 
 | ||||
|     echo "shell name: ${shell_name}" | ||||
|     echo "shell version: ${shell_version}" | ||||
| 
 | ||||
|     # Execute the tests. | ||||
|     for t in ${tests}; do | ||||
|       echo | ||||
|       echo "--- Executing the '$(_runner_testName "${t}'")' test suite. ---" | ||||
|       # ${shell_bin} needs word splitting. | ||||
|       #   shellcheck disable=SC2086 | ||||
|       ( exec ${shell_bin} "./${t}" 2>&1; ) | ||||
|     done | ||||
|   done | ||||
| } | ||||
| 
 | ||||
| # Execute main() if this is run in standalone mode (i.e. not from a unit test). | ||||
| [ -z "${SHUNIT_VERSION}" ] && main "$@" | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue