#!/bin/bash set -u # Abort on ANY error. This is intended to be a brittle script # It checks and dies if anything is out of order. set -e #============================================================================== # Declarations and Environment # Version ID Block. Relies on +k filetype modifier. #------------------------------------------------------------------------------ # shellcheck disable=SC2016 declare VersionID='$Id: //p4-sdp/dev_rebrand/test/bsw/run_all_tests.sh#2 $ $Change: 31752 $' declare VersionStream=${VersionID#*//}; VersionStream=${VersionStream#*/}; VersionStream=${VersionStream%%/*}; declare VersionCL=${VersionID##*: }; VersionCL=${VersionCL%% *} declare Version=${VersionStream}.${VersionCL} [[ "$VersionStream" == r* ]] || Version="${Version^^}" declare ThisScript="${0##*/}" declare ThisUser= declare ThisHost=${HOSTNAME%%.*} declare CmdLine="${0} $*" declare CfgDir="/p4/sdp/test/bsw" declare -i ErrorCount=0 declare Log= declare LogLink="/tmp/${ThisScript%.sh}.log" declare H1="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" #============================================================================== # Local Functions function msg () { echo -e "$*"; } function errmsg () { msg "\\nError: ${1:-Unknown Error}\\n"; ErrorCount+=1; } function bail () { errmsg "${1:-Unknown Error}"; exit "$ErrorCount"; } #============================================================================== # Main Program [[ "$CfgDir" == "$PWD" ]] || bail "Before calling this, do: cd $CfgDir" [[ -n "$Log" ]] || Log="/tmp/${ThisScript%.sh}.$(date +'%Y-%m-%d-%H%M%S').log" touch "$Log" || bail "Couldn't touch log file [$Log]." # Redirect stdout and stderr to a log file. exec > >(tee "$Log") exec 2>&1 # Setup /tmp/test_sdp.log symlink so it points to the current log. rm -f "$LogLink" ln -s "$Log" "$LogLink" msg "${H1}\\nLog is: $Log\\n" ThisUser=$(id -n -u) msg "Started $ThisScript version $Version as $ThisUser@$ThisHost on $(date) as pid $$:\\nInitial Command Line:\\n$CmdLine\\n" msg "\\nRunning all tests in bash 'set -e' mode -- any errors about the suite." msg "\\nOperating in configuration directory: $PWD" msg "\\n${H1}\\nINTERNAL TEST SUITE 1 for run_cli_tests.sh" cd t1 ./r msg "\\n${H1}\\nINTERNAL TEST SUITE 2 for run_scripted_tests.sh" cd ../t2 ./r msg "\\n${H1}\\nTEST SUITE 3 using run_cli_tests.sh" cd .. ./run_cli_tests.sh msg "\\n${H1}\\nTEST SUITE 4 using run_scripted_tests.sh" ./run_scripted_tests.sh # Due to 'set -e' mode, if we got this far, it is certain that there # were no errors. Each of the scripts above has a reliable exit code. msg "\\nSUCCESS: ALL TEST SUITES COMPLETED OK!" msg "\\nTime: All test suites completed in $((SECONDS/3600)) hours $((SECONDS%3600/60)) minutes $((SECONDS%60)) seconds." msg "\\nLog is: $Log\\n${H1}"
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 31752 | C. Thomas Tyler |
In dev_rebrand, bringing in changes from dev_c2s ala: p4 merge --from dev_c2s p4 resolve -am No interactive resolve was needed. |
||
#1 | 31751 | C. Thomas Tyler | p4 stream convertsparse | ||
//p4-sdp/dev/test/bsw/run_all_tests.sh | |||||
#1 | 31397 | C. Thomas Tyler | Populate -b SDP_Classic_to_Streams -s //guest/perforce_software/sdp/...@31368. | ||
//guest/perforce_software/sdp/dev/test/bsw/run_all_tests.sh | |||||
#4 | 31011 | C. Thomas Tyler | Fixed creative spelling typo. | ||
#3 | 30794 | C. Thomas Tyler | Fixed typo. | ||
#2 | 30787 | C. Thomas Tyler | Cosmetic tweak. | ||
#1 | 30786 | C. Thomas Tyler | Added script to run the entire test suite. |