kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 1 | #! /bin/sh |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 2 | # $Id$ |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 3 | # vim:et:ft=sh:sts=2:sw=2 |
| 4 | # |
| 5 | # Copyright 2008 Kate Ward. All Rights Reserved. |
| 6 | # Released under the LGPL (GNU Lesser General Public License) |
| 7 | # |
| 8 | # Author: kate.ward@forestent.com (Kate Ward) |
| 9 | # |
| 10 | # shFlags unit test for the flag definition methods |
| 11 | # |
| 12 | # TODO(kward): assert on FLAGS errors |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 13 | # TODO(kward): testNonStandardIFS() |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 14 | |
| 15 | # load test helpers |
| 16 | . ./shflags_test_helpers |
| 17 | |
| 18 | #------------------------------------------------------------------------------ |
| 19 | # suite tests |
| 20 | # |
| 21 | |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 22 | testGetoptStandard() |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 23 | { |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 24 | _flags_getoptStandard '-b' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 619806d | 2008-11-15 19:59:57 +0000 | [diff] [blame] | 25 | rslt=$? |
| 26 | assertTrue "didn't parse valid flag 'b'" ${rslt} |
| 27 | th_showOutput ${rslt} "${stdoutF}" "${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 28 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 29 | _flags_getoptStandard '-x' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 30 | assertFalse "parsed invalid flag 'x'" $? |
| 31 | } |
| 32 | |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 33 | testGetoptEnhanced() |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 34 | { |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 35 | flags_getoptIsEnh || return |
kate.ward | 271aece | 2008-11-13 01:12:35 +0000 | [diff] [blame] | 36 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 37 | _flags_getoptEnhanced '-b' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 38 | assertTrue "didn't parse valid flag 'b'" $? |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 39 | _flags_getoptEnhanced '--bool' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 40 | assertTrue "didn't parse valid flag 'bool'" $? |
| 41 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 42 | _flags_getoptEnhanced '-x' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 43 | assertFalse "parsed invalid flag 'x'" $? |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 44 | _flags_getoptEnhanced '--xyz' >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 45 | assertFalse "parsed invalid flag 'xyz'" $? |
| 46 | } |
| 47 | |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 48 | testValidBoolsShort() |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 49 | { |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 50 | # flip flag to true |
| 51 | FLAGS -b >"${stdoutF}" 2>"${stderrF}" |
| 52 | rtrn=$? |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 53 | assertTrue "FLAGS returned a non-zero result (${rtrn})" ${rtrn} |
| 54 | value=${FLAGS_bool:-} |
| 55 | assertTrue "boolean was not true (${value})." "${value}" |
| 56 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | abae05d | 2008-11-12 22:37:05 +0000 | [diff] [blame] | 57 | test ${rtrn} -eq ${FLAGS_TRUE} -a ! -s "${stderrF}" |
| 58 | th_showOutput $? "${stdoutF}" "${stderrF}" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 59 | |
| 60 | # verify that passing the option a second time leaves the flag true |
| 61 | FLAGS -b >"${stdoutF}" 2>"${stderrF}" |
| 62 | rtrn=$? |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 63 | assertTrue "repeat: FLAGS returned a non-zero result (${rtrn})" ${rtrn} |
| 64 | value=${FLAGS_bool:-} |
| 65 | assertTrue "repeat: boolean was not true (${value})" ${value} |
| 66 | assertFalse 'repeat: expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | abae05d | 2008-11-12 22:37:05 +0000 | [diff] [blame] | 67 | test ${rtrn} -eq ${FLAGS_TRUE} -a ! -s "${stderrF}" |
| 68 | th_showOutput $? "${stdoutF}" "${stderrF}" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 69 | } |
| 70 | |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 71 | # TODO(kate): separate into multiple functions to reflect correct usage |
| 72 | testValidBoolsLong() |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 73 | { |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 74 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 75 | |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 76 | # Note: the default value of bool is 'false'. |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 77 | |
| 78 | # leave flag false |
| 79 | FLAGS --nobool >"${stdoutF}" 2>"${stderrF}" |
| 80 | rtrn=$? |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 81 | assertTrue "FLAGS returned a non-zero result (${rtrn})" ${rtrn} |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 82 | assertFalse '--noXX flag resulted in true value.' ${FLAGS_bool:-} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 83 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 84 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 85 | |
| 86 | # flip flag true |
| 87 | FLAGS --bool >"${stdoutF}" 2>"${stderrF}" |
| 88 | rtrn=$? |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 89 | assertTrue "FLAGS returned a non-zero result (${rtrn})" ${rtrn} |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 90 | assertTrue '--XX flag resulted in false value.' ${FLAGS_bool:-} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 91 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 92 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 93 | |
| 94 | # flip flag back false |
| 95 | FLAGS --nobool >"${stdoutF}" 2>"${stderrF}" |
| 96 | rtrn=$? |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 97 | assertTrue "FLAGS returned a non-zero result (${rtrn})" ${rtrn} |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 98 | assertFalse '--noXX flag resulted in true value.' ${FLAGS_bool:-} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 99 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 100 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 101 | } |
| 102 | |
| 103 | testValidFloats() |
| 104 | { |
| 105 | _testValidFloats '-f' |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 106 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 107 | _testValidFloats '--float' |
| 108 | } |
| 109 | |
| 110 | _testValidFloats() |
| 111 | { |
| 112 | flag=$1 |
| 113 | for value in ${TH_FLOAT_VALID}; do |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 114 | FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}" |
| 115 | rtrn=$? |
kate.ward | 8fe62e6 | 2010-03-28 23:07:35 +0000 | [diff] [blame] | 116 | assertTrue "FLAGS ${flag} ${value} returned non-zero result (${rtrn})" \ |
| 117 | ${rtrn} |
| 118 | assertEquals "float (${flag} ${value}) test failed." ${value} ${FLAGS_float} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 119 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 120 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 121 | done |
| 122 | } |
| 123 | |
| 124 | testInvalidFloats() |
| 125 | { |
| 126 | _testInvalidFloats '-f' |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 127 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 128 | _testInvalidFloats '--float' |
| 129 | } |
| 130 | |
| 131 | _testInvalidFloats() |
| 132 | { |
| 133 | flag=$1 |
| 134 | for value in ${TH_FLOAT_INVALID}; do |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 135 | ( FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"; ) |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 136 | rtrn=$? |
| 137 | assertFalse "FLAGS (${value}) returned a zero result" ${rtrn} |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 138 | assertFalse 'expected no output to STDOUT' "[ -s '${stdoutF}' ]" |
| 139 | assertTrue 'expected output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 140 | done |
| 141 | } |
| 142 | |
| 143 | testValidIntegers() |
| 144 | { |
| 145 | _testValidIntegers '-i' |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 146 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 147 | _testValidIntegers '--int' |
| 148 | } |
| 149 | |
| 150 | _testValidIntegers() |
| 151 | { |
| 152 | flag=$1 |
| 153 | for value in ${TH_INT_VALID}; do |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 154 | FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}" |
| 155 | rtrn=$? |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 156 | assertTrue "FLAGS (${value}) returned a non-zero result (${rtrn})" ${rtrn} |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 157 | assertEquals "integer (${value}) test failed." ${value} ${FLAGS_int} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 158 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 159 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 160 | done |
| 161 | } |
| 162 | |
| 163 | testInvalidIntegers() |
| 164 | { |
| 165 | _testInvalidIntegers '-i' |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 166 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 167 | _testInvalidIntegers '--int' |
| 168 | } |
| 169 | |
| 170 | _testInvalidIntegers() |
| 171 | { |
| 172 | flag=$1 |
| 173 | for value in ${TH_INT_INVALID}; do |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 174 | ( FLAGS ${flag} ${value} >"${stdoutF}" 2>"${stderrF}"; ) |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 175 | rtrn=$? |
| 176 | assertFalse "invalid integer (${value}) test returned success." ${rtrn} |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 177 | assertFalse 'expected no output to STDOUT' "[ -s '${stdoutF}' ]" |
| 178 | assertTrue 'expected output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 179 | done |
| 180 | } |
| 181 | |
| 182 | testValidStrings() |
| 183 | { |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 184 | _testValidStrings -s single_word |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 185 | if flags_getoptIsEnh; then |
| 186 | _testValidStrings --str single_word |
| 187 | _testValidStrings --str 'string with spaces' |
| 188 | fi |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 189 | } |
| 190 | |
| 191 | _testValidStrings() |
| 192 | { |
| 193 | flag=$1 |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 194 | value=$2 |
| 195 | |
| 196 | FLAGS ${flag} "${value}" >"${stdoutF}" 2>"${stderrF}" |
| 197 | rtrn=$? |
| 198 | assertTrue "'FLAGS ${flag} ${value}' returned a non-zero result (${rtrn})" \ |
| 199 | ${rtrn} |
| 200 | assertEquals "string (${value}) test failed." "${value}" "${FLAGS_str}" |
| 201 | if [ ${rtrn} -eq ${FLAGS_TRUE} ]; then |
| 202 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
| 203 | else |
| 204 | # validate that an error is thrown for unsupported getopt uses |
| 205 | assertFatalMsg '.* spaces in options' |
| 206 | fi |
| 207 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 208 | } |
| 209 | |
| 210 | testMultipleFlags() |
| 211 | { |
| 212 | _testMultipleFlags '-b' '-i' '-f' '-s' |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 213 | flags_getoptIsEnh || return |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 214 | _testMultipleFlags '--bool' '--int' '--float' '--str' |
| 215 | } |
| 216 | |
| 217 | _testMultipleFlags() |
| 218 | { |
| 219 | boolFlag=$1 |
| 220 | intFlag=$2 |
| 221 | floatFlag=$3 |
| 222 | strFlag=$4 |
| 223 | |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 224 | FLAGS \ |
| 225 | ${boolFlag} \ |
| 226 | ${intFlag} 567 \ |
| 227 | ${floatFlag} 123.45678 \ |
| 228 | ${strFlag} 'some_string' \ |
| 229 | >"${stdoutF}" 2>"${stderrF}" |
| 230 | rtrn=$? |
| 231 | assertTrue "use of multple flags returned a non-zero result" ${rtrn} |
| 232 | assertTrue 'boolean test failed.' ${FLAGS_bool} |
| 233 | assertNotSame 'float test failed.' 0 ${FLAGS_float} |
| 234 | assertNotSame 'integer test failed.' 0 ${FLAGS_int} |
| 235 | assertNotSame 'string test failed.' '' ${FLAGS_str} |
kate.ward | e556cbf | 2008-11-13 00:41:59 +0000 | [diff] [blame] | 236 | assertFalse 'expected no output to STDERR' "[ -s '${stderrF}' ]" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 237 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 238 | } |
| 239 | |
| 240 | _testNonFlagArgs() |
| 241 | { |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 242 | argc=$1 |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 243 | shift |
| 244 | |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 245 | FLAGS "$@" >"${stdoutF}" 2>"${stderrF}" |
| 246 | rtrn=$? |
| 247 | assertTrue 'parse returned non-zero value.' ${rtrn} |
| 248 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 249 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 250 | eval set -- "${FLAGS_ARGV}" |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 251 | assertEquals 'wrong count of argv arguments returned.' ${argc} $# |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 252 | assertEquals 'wrong count of argc arguments returned.' 0 ${FLAGS_ARGC} |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 253 | } |
| 254 | |
| 255 | testSingleNonFlagArg() |
| 256 | { |
| 257 | _testNonFlagArgs 1 argOne |
| 258 | } |
| 259 | |
| 260 | testMultipleNonFlagArgs() |
| 261 | { |
| 262 | _testNonFlagArgs 3 argOne argTwo arg3 |
| 263 | } |
| 264 | |
| 265 | testMultipleNonFlagStringArgsWithSpaces() |
| 266 | { |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 267 | flags_getoptIsEnh || return |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 268 | _testNonFlagArgs 3 argOne 'arg two' arg3 |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 269 | } |
| 270 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 271 | testFlagsWithEquals() |
| 272 | { |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 273 | flags_getoptIsEnh || return |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 274 | |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 275 | FLAGS --str='str_flag' 'non_flag' >"${stdoutF}" 2>"${stderrF}" |
| 276 | assertTrue 'FLAGS returned a non-zero result' $? |
| 277 | assertEquals 'string flag not set properly' 'str_flag' "${FLAGS_str}" |
| 278 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 279 | |
| 280 | eval set -- "${FLAGS_ARGV}" |
| 281 | assertEquals 'wrong count of argv arguments returned.' 1 $# |
| 282 | assertEquals 'wrong count of argc arguments returned.' 1 ${FLAGS_ARGC} |
| 283 | } |
| 284 | |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 285 | testComplicatedCommandLineStandard() |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 286 | { |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 287 | # note: standard getopt stops parsing after first non-flag argument :-( |
| 288 | FLAGS -i 1 non_flag_1 -s 'two' non_flag_2 -f 3 non_flag_3 \ |
| 289 | >"${stdoutF}" 2>"${stderrF}" |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 290 | rtrn=$? |
| 291 | assertTrue 'FLAGS returned a non-zero result' ${rtrn} |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 292 | assertEquals 'failed int test' 1 ${FLAGS_int} |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 293 | assertEquals 'failed str test' 'two' "${FLAGS_str}" |
| 294 | assertEquals 'failed float test' 3 ${FLAGS_float} |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 295 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 296 | |
| 297 | eval set -- "${FLAGS_ARGV}" |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 298 | assertEquals 'incorrect number of argv values' 3 $# |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 299 | } |
| 300 | |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 301 | testComplicatedCommandLineEnhanced() |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 302 | { |
kate.ward | 20d9ef5 | 2013-01-06 15:56:46 +0000 | [diff] [blame^] | 303 | flags_getoptIsEnh || return |
kate.ward | 812aeae | 2009-04-01 02:49:51 +0000 | [diff] [blame] | 304 | |
kate.ward | 7a3c9c4 | 2009-04-24 00:12:35 +0000 | [diff] [blame] | 305 | FLAGS -i 1 non_flag_1 --str='two' non_flag_2 --float 3 'non flag 3' \ |
| 306 | >"${stdoutF}" 2>"${stderrF}" |
| 307 | rtrn=$? |
| 308 | assertTrue 'FLAGS returned a non-zero result' ${rtrn} |
| 309 | assertEquals 'failed int test' 1 ${FLAGS_int} |
| 310 | assertEquals 'failed str test' 'two' "${FLAGS_str}" |
| 311 | assertEquals 'failed float test' 3 ${FLAGS_float} |
| 312 | th_showOutput ${rtrn} "${stdoutF}" "${stderrF}" |
| 313 | |
| 314 | eval set -- "${FLAGS_ARGV}" |
| 315 | assertEquals 'incorrect number of argv values' 3 $# |
kate.ward | c521068 | 2009-03-30 18:54:36 +0000 | [diff] [blame] | 316 | } |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 317 | |
| 318 | #------------------------------------------------------------------------------ |
| 319 | # suite functions |
| 320 | # |
| 321 | |
| 322 | oneTimeSetUp() |
| 323 | { |
kate.ward | 1b600c5 | 2008-11-12 21:26:05 +0000 | [diff] [blame] | 324 | th_oneTimeSetUp |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 325 | |
kate.ward | 619806d | 2008-11-15 19:59:57 +0000 | [diff] [blame] | 326 | if flags_getoptIsStd; then |
| 327 | th_warn 'Standard version of getopt found. Enhanced tests will be skipped.' |
| 328 | else |
| 329 | th_warn 'Enhanced version of getopt found. Standard tests will be skipped.' |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 330 | fi |
| 331 | } |
| 332 | |
| 333 | setUp() |
| 334 | { |
kate.ward | 8fe62e6 | 2010-03-28 23:07:35 +0000 | [diff] [blame] | 335 | DEFINE_boolean bool false 'boolean test' 'b' |
kate.ward | 9ebdd16 | 2008-11-12 20:11:57 +0000 | [diff] [blame] | 336 | DEFINE_float float 0.0 'float test' 'f' |
| 337 | DEFINE_integer int 0 'integer test' 'i' |
| 338 | DEFINE_string str '' 'string test' 's' |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 339 | } |
| 340 | |
kate.ward | e10dd53 | 2013-01-04 21:52:23 +0000 | [diff] [blame] | 341 | tearDown() |
| 342 | { |
| 343 | flags_reset |
| 344 | } |
| 345 | |
kate.ward | f51c616 | 2008-06-17 16:38:35 +0000 | [diff] [blame] | 346 | # load and run shUnit2 |
| 347 | [ -n "${ZSH_VERSION:-}" ] && SHUNIT_PARENT=$0 |
| 348 | . ${TH_SHUNIT} |