aboutsummaryrefslogtreecommitdiff
path: root/src/shflags_test_parsing.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/shflags_test_parsing.sh')
-rwxr-xr-xsrc/shflags_test_parsing.sh365
1 files changed, 0 insertions, 365 deletions
diff --git a/src/shflags_test_parsing.sh b/src/shflags_test_parsing.sh
deleted file mode 100755
index d79a042..0000000
--- a/src/shflags_test_parsing.sh
+++ /dev/null
@@ -1,365 +0,0 @@
-#! /bin/sh
-# vim:et:ft=sh:sts=2:sw=2
-#
-# shFlags unit test for the flag definition methods
-#
-# TODO(kward): assert on FLAGS errors
-# TODO(kward): testNonStandardIFS()
-
-# exit immediately if a pipeline or subshell exits with a non-zero status.
-#set -e
-
-# treat unset variables as an error
-set -u
-
-# load test helpers
-. ./shflags_test_helpers
-
-#------------------------------------------------------------------------------
-# suite tests
-#
-
-testGetoptStandard()
-{
- _flags_getoptStandard '-b' >"${stdoutF}" 2>"${stderrF}"
- rslt=$?
- assertTrue "didn't parse valid flag 'b'" ${rslt}
- th_showOutput ${rslt} "${stdoutF}" "${stderrF}"
-
- _flags_getoptStandard '-x' >"${stdoutF}" 2>"${stderrF}"
- assertFalse "parsed invalid flag 'x'" $?
-}
-
-testGetoptEnhanced()
-{
- flags_getoptIsEnh || return
-
- _flags_getoptEnhanced '-b' >"${stdoutF}" 2>"${stderrF}"
- assertTrue "didn't parse valid flag 'b'" $?
- _flags_getoptEnhanced '--bool' >"${stdoutF}" 2>"${stderrF}"
- assertTrue "didn't parse valid flag 'bool'" $?
-
- _flags_getoptEnhanced '-x' >"${stdoutF}" 2>"${stderrF}"
- assertFalse "parsed invalid flag 'x'" $?
- _flags_getoptEnhanced '--xyz' >"${stdoutF}" 2>"${stderrF}"
- assertFalse "parsed invalid flag 'xyz'" $?
-}
-
-testValidBoolsShort()
-{
- FLAGS -b >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "-b) FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- value=${FLAGS_bool:-}
- assertTrue "-b) boolean was not true (${value})." "${value}"
- assertFalse '-b) expected no output to STDERR' "[ -s '${stderrF}' ]"
- test ${r3turn} -eq ${FLAGS_TRUE} -a ! -s "${stderrF}"
- th_showOutput $? "${stdoutF}" "${stderrF}"
-
- DEFINE_boolean bool2 true '2nd boolean' B
- FLAGS >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "-B) FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- value=${FLAGS_bool2:-}
- assertTrue "-B) boolean was not true (${value})" ${value}
- assertFalse '-B) expected no output to STDERR' "[ -s '${stderrF}' ]"
- test ${r3turn} -eq ${FLAGS_TRUE} -a ! -s "${stderrF}"
- th_showOutput $? "${stdoutF}" "${stderrF}"
-
- FLAGS -B >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "-B) FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- value=${FLAGS_bool2:-}
- assertFalse "-B) boolean was not false (${value})" ${value}
- assertFalse '-B) expected no output to STDERR' "[ -s '${stderrF}' ]"
- test ${r3turn} -eq ${FLAGS_TRUE} -a ! -s "${stderrF}"
- th_showOutput $? "${stdoutF}" "${stderrF}"
-}
-
-# TODO(kate): separate into multiple functions to reflect correct usage
-testValidBoolsLong()
-{
- flags_getoptIsEnh || return
-
- # Note: the default value of bool is 'false'.
-
- # leave flag false
- FLAGS --nobool >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- assertFalse '--noXX flag resulted in true value.' ${FLAGS_bool:-}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- # flip flag true
- FLAGS --bool >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- assertTrue '--XX flag resulted in false value.' ${FLAGS_bool:-}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- # flip flag back false
- FLAGS --nobool >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "FLAGS returned a non-zero result (${r3turn})" ${r3turn}
- assertFalse '--noXX flag resulted in true value.' ${FLAGS_bool:-}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-}
-
-testValidFloats()
-{
- _testValidFloats '-f'
- flags_getoptIsEnh || return
- _testValidFloats '--float'
-}
-
-_testValidFloats()
-{
- flag=$1
- for value in ${TH_FLOAT_VALID}; do
- FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "FLAGS ${flag} ${value} returned non-zero result (${r3turn})" \
- ${r3turn}
- assertEquals "float (${flag} ${value}) test failed." ${value} ${FLAGS_float}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
- done
-}
-
-testInvalidFloats()
-{
- _testInvalidFloats '-f'
- flags_getoptIsEnh || return
- _testInvalidFloats '--float'
-}
-
-_testInvalidFloats()
-{
- flag=$1
- for value in ${TH_FLOAT_INVALID}; do
- th_clearReturn
- (
- FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"
- echo $? >"${returnF}"
- )
- th_queryReturn
- assertFalse "FLAGS (${value}) returned a zero result" ${th_return}
- assertFalse 'expected no output to STDOUT' "[ -s '${stdoutF}' ]"
- assertTrue 'expected output to STDERR' "[ -s '${stderrF}' ]"
- done
-}
-
-testValidIntegers()
-{
- _testValidIntegers '-i'
- flags_getoptIsEnh || return
- _testValidIntegers '--int'
-}
-
-_testValidIntegers()
-{
- flag=$1
- for value in ${TH_INT_VALID}; do
- FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "FLAGS (${value}) returned a non-zero result (${r3turn})" ${r3turn}
- assertEquals "integer (${value}) test failed." ${value} ${FLAGS_int}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
- done
-}
-
-testInvalidIntegers()
-{
- _testInvalidIntegers '-i'
- flags_getoptIsEnh || return
- _testInvalidIntegers '--int'
-}
-
-_testInvalidIntegers()
-{
- flag=$1
- for value in ${TH_INT_INVALID}; do
- th_clearReturn
- (
- FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"
- echo $? >"${returnF}"
- )
- th_queryReturn
- assertFalse "invalid integer (${value}) test returned success." ${th_return}
- assertFalse 'expected no output to STDOUT' "[ -s '${stdoutF}' ]"
- assertTrue 'expected output to STDERR' "[ -s '${stderrF}' ]"
- done
-}
-
-testValidStrings()
-{
- _testValidStrings -s single_word
- if flags_getoptIsEnh; then
- _testValidStrings --str single_word
- _testValidStrings --str 'string with spaces'
- fi
-}
-
-_testValidStrings()
-{
- flag=$1
- value=$2
-
- FLAGS ${flag} "${value}" >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "'FLAGS ${flag} ${value}' returned a non-zero result (${r3turn})" \
- ${r3turn}
- assertEquals "string (${value}) test failed." "${value}" "${FLAGS_str}"
- if [ ${r3turn} -eq ${FLAGS_TRUE} ]; then
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- else
- # validate that an error is thrown for unsupported getopt uses
- assertFatalMsg '.* spaces in options'
- fi
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-}
-
-testMultipleFlags()
-{
- _testMultipleFlags '-b' '-i' '-f' '-s'
- flags_getoptIsEnh || return
- _testMultipleFlags '--bool' '--int' '--float' '--str'
-}
-
-_testMultipleFlags()
-{
- boolFlag=$1
- intFlag=$2
- floatFlag=$3
- strFlag=$4
-
- FLAGS \
- ${boolFlag} \
- ${intFlag} 567 \
- ${floatFlag} 123.45678 \
- ${strFlag} 'some_string' \
- >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue "use of multple flags returned a non-zero result" ${r3turn}
- assertTrue 'boolean test failed.' ${FLAGS_bool}
- assertNotSame 'float test failed.' 0 ${FLAGS_float}
- assertNotSame 'integer test failed.' 0 ${FLAGS_int}
- assertNotSame 'string test failed.' '' ${FLAGS_str}
- assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-}
-
-_testNonFlagArgs()
-{
- argc=$1
- shift
-
- FLAGS "$@" >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue 'parse returned non-zero value.' ${r3turn}
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- eval set -- "${FLAGS_ARGV}"
- assertEquals 'wrong count of argv arguments returned.' ${argc} $#
- assertEquals 'wrong count of argc arguments returned.' 0 ${FLAGS_ARGC}
-}
-
-testSingleNonFlagArg()
-{
- _testNonFlagArgs 1 argOne
-}
-
-testMultipleNonFlagArgs()
-{
- _testNonFlagArgs 3 argOne argTwo arg3
-}
-
-testMultipleNonFlagStringArgsWithSpaces()
-{
- flags_getoptIsEnh || return
- _testNonFlagArgs 3 argOne 'arg two' arg3
-}
-
-testFlagsWithEquals()
-{
- flags_getoptIsEnh || return
-
- FLAGS --str='str_flag' 'non_flag' >"${stdoutF}" 2>"${stderrF}"
- assertTrue 'FLAGS returned a non-zero result' $?
- assertEquals 'string flag not set properly' 'str_flag' "${FLAGS_str}"
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- eval set -- "${FLAGS_ARGV}"
- assertEquals 'wrong count of argv arguments returned.' 1 $#
- assertEquals 'wrong count of argc arguments returned.' 1 ${FLAGS_ARGC}
-}
-
-testComplicatedCommandLineStandard()
-{
- flags_getoptIsEnh && return
-
- # Note: standard getopt stops parsing after first non-flag argument, which
- # results in the remaining flags being treated as arguments instead.
- FLAGS -i 1 non_flag_1 -s 'two' non_flag_2 -f 3 non_flag_3 \
- >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue 'FLAGS returned a non-zero result' ${r3turn}
- assertEquals 'failed int test' 1 ${FLAGS_int}
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- eval set -- "${FLAGS_ARGV}"
- assertEquals 'incorrect number of argv values' 7 $#
-}
-
-testComplicatedCommandLineEnhanced()
-{
- flags_getoptIsEnh || return
-
- FLAGS -i 1 non_flag_1 --str='two' non_flag_2 --float 3 'non flag 3' \
- >"${stdoutF}" 2>"${stderrF}"
- r3turn=$?
- assertTrue 'FLAGS returned a non-zero result' ${r3turn}
- assertEquals 'failed int test' 1 ${FLAGS_int}
- assertEquals 'failed str test' 'two' "${FLAGS_str}"
- assertEquals 'failed float test' 3 ${FLAGS_float}
- th_showOutput ${r3turn} "${stdoutF}" "${stderrF}"
-
- eval set -- "${FLAGS_ARGV}"
- assertEquals 'incorrect number of argv values' 3 $#
-}
-
-#------------------------------------------------------------------------------
-# suite functions
-#
-
-oneTimeSetUp()
-{
- th_oneTimeSetUp
-
- if flags_getoptIsStd; then
- th_warn 'Standard version of getopt found. Enhanced tests will be skipped.'
- else
- th_warn 'Enhanced version of getopt found. Standard tests will be skipped.'
- fi
-}
-
-setUp()
-{
- DEFINE_boolean bool false 'boolean test' 'b'
- DEFINE_float float 0.0 'float test' 'f'
- DEFINE_integer int 0 'integer test' 'i'
- DEFINE_string str '' 'string test' 's'
-}
-
-tearDown()
-{
- flags_reset
-}
-
-# load and run shUnit2
-[ -n "${ZSH_VERSION:-}" ] && SHUNIT_PARENT=$0
-. ${TH_SHUNIT}