diff options
Diffstat (limited to 'src/shflags_test_parsing.sh')
-rwxr-xr-x | src/shflags_test_parsing.sh | 365 |
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} |