Adding upstream version 5.2.37.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
cf91100bce
commit
fa1b3d3922
1435 changed files with 757174 additions and 0 deletions
124
examples/shellmath/runTests.sh
Normal file
124
examples/shellmath/runTests.sh
Normal file
|
@ -0,0 +1,124 @@
|
|||
#!/bin/env bash
|
||||
|
||||
###############################################################################
|
||||
# runTests.sh
|
||||
#
|
||||
# Usage: runTests.sh [testFile]
|
||||
# where testFile defaults to testCases.in
|
||||
#
|
||||
# Processes a test file such as the testCases.in included with this package
|
||||
###############################################################################
|
||||
|
||||
# Process one line from the test cases file. Invoked below through mapfile.
|
||||
function _shellmath_runTests()
|
||||
{
|
||||
local lineNumber=$1
|
||||
local text=$2
|
||||
|
||||
# Trim leading whitespace
|
||||
[[ $text =~ ^[$' \t']*(.*) ]]
|
||||
text=${BASH_REMATCH[1]}
|
||||
|
||||
# Skip comments and blank lines
|
||||
[[ "$text" =~ ^# || -z $text ]] && return 0
|
||||
|
||||
# Check for line continuation
|
||||
local len="${#text}"
|
||||
if [[ ${text:$((len-1))} == '\' ]]; then
|
||||
|
||||
# Eat the continuation character and add to the buffer
|
||||
__shellfloat_commandBuffer+="${text/%\\/ }"
|
||||
|
||||
# Defer processing
|
||||
return
|
||||
|
||||
# No line continuation
|
||||
else
|
||||
|
||||
# Assemble the command
|
||||
local command=${__shellfloat_commandBuffer}${text}
|
||||
__shellfloat_commandBuffer=""
|
||||
|
||||
words=($command)
|
||||
|
||||
# Expand first word to an assertion function
|
||||
case ${words[0]} in
|
||||
|
||||
Code)
|
||||
words[0]=_shellmath_assert_return${words[0]}
|
||||
|
||||
# Validate next word as a positive integer
|
||||
if [[ ! "${words[1]}" =~ ^[0-9]+$ ]]; then
|
||||
echo Line: "$lineNumber": Command "$command"
|
||||
echo FAIL: \"Code\" requires integer return code
|
||||
return 1
|
||||
else
|
||||
nextWord=2
|
||||
fi
|
||||
;;
|
||||
|
||||
String)
|
||||
words[0]=_shellmath_assert_return${words[0]}
|
||||
# Allow multiword arguments if quoted
|
||||
if [[ ${words[1]} =~ ^\" ]]; then
|
||||
if [[ ${words[1]} =~ \"$ ]]; then
|
||||
nextWord=2
|
||||
else
|
||||
for ((nextWord=2;;nextWord++)); do
|
||||
if [[ ${words[nextWord]} =~ \"$ ]]; then
|
||||
((nextWord++))
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
else
|
||||
nextWord=2
|
||||
fi
|
||||
;;
|
||||
|
||||
Both)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo -e ${RED}FAIL${NO_COLOR} Line "$lineNumber": Command "$command": Code or String indicator required
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
# Expand the next word to a shellmath function name
|
||||
words[nextWord]=_shellmath_${words[nextWord]}
|
||||
if ! type -t "${words[nextWord]}" >/dev/null; then
|
||||
echo "${RED}FAIL${NO_COLOR} Line $lineNumber: Command "$command": Syntax error. Required: String|Code value operation args..."
|
||||
return 3
|
||||
fi
|
||||
|
||||
# Run the command, being respectful of shell metacharacters
|
||||
fullCommand="${words[*]}"
|
||||
eval "$fullCommand"
|
||||
local returnString
|
||||
_shellmath_getReturnValue returnString
|
||||
echo -e "$returnString" Line "$lineNumber": "$command"
|
||||
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
function _main()
|
||||
{
|
||||
source shellmath.sh
|
||||
source assert.sh
|
||||
|
||||
# Initialize certain globals. As "public" functions, the arithmetic
|
||||
# functions need to do this themselves, but there are some "private"
|
||||
# functions that need this here when they are auto-tested.
|
||||
_shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
|
||||
|
||||
# Process the test file line-by-line using the above runTests() function
|
||||
mapfile -t -c 1 -C _shellmath_runTests -O 1 < "${1:-testCases.in}"
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
_main "$@"
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue