blob: 5bdceb04d081ddfdb835ecfc60683ea49eb93dbf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#! /bin/sh
# vim:et:ft=sh:sts=2:sw=2
#
# Copyright 2008 Kate Ward. All Rights Reserved.
# Released under the LGPL (GNU Lesser General Public License)
#
# Author: kate.ward@forestent.com (Kate Ward)
#
# shFlags unit test for the internal functions
# load test helpers
. ./shflags_test_helpers
# set shwordsplit for zsh
[ -n "${ZSH_VERSION:-}" ] && setopt shwordsplit
#------------------------------------------------------------------------------
# suite tests
#
testHelp()
{
#
# test short -h option
#
rslt=`FLAGS -h 2>&1`
rtrn=$?
assertFalse \
'short request for help should have returned non-zero exit code.' \
${rtrn}
echo "${rslt}" |grep -- 'show this help' >/dev/null
rtrn=$?
assertTrue \
'short request for help should have produced some help output.' \
${rtrn}
[ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
# test proper output when FLAGS_HELP set
rslt=`FLAGS_HELP='this is a test'; FLAGS -h 2>&1`
echo "${rslt}" |grep -- 'this is a test' >/dev/null
rtrn=$?
assertTrue \
'setting FLAGS_HELP did not produce expected result' \
${rtrn}
[ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
# test that "'" chars work in help string
DEFINE_boolean b false "help string containing a ' char" b
rslt=`FLAGS -h 2>&1`
echo "${rslt}" |grep -- "help string containing a ' char" >/dev/null
rtrn=$?
assertTrue \
"help strings containing apostrophes don't work" \
${rtrn}
[ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
#
# test long --help option
#
flags_getoptIsStd && startSkipping
rslt=`FLAGS --help 2>&1`
rtrn=$?
assertFalse \
'long request for help should have returned non-zero exit code.' \
${rtrn}
echo "${rslt}" |grep -- 'show this help' >/dev/null
assertTrue \
'long request for help should have produced some help output.' \
$?
}
testStandardHelpOutput()
{
flags_getoptIsEnh && startSkipping
DEFINE_boolean test_bool false 'test boolean' b
DEFINE_string test_str '' 'test string' s
help='USAGE: standard [flags] args'
cat >"${expectedF}" <<EOF
USAGE: standard [flags] args
flags:
-b test boolean
-s test string
-h show this help
EOF
( FLAGS_HELP=${help}; FLAGS -h >"${stdoutF}" 2>"${stderrF}" )
diff "${expectedF}" "${stderrF}" >/dev/null
rtrn=$?
assertTrue 'unexpected help output' ${rtrn}
[ ${__shunit_skip} -eq ${SHUNIT_FALSE} \
-a ${rtrn} -ne ${FLAGS_TRUE} ] \
&& cat "${stderrF}"
}
testEnhancedHelpOutput()
{
flags_getoptIsEnh || startSkipping
DEFINE_boolean test_bool false 'test boolean' b
DEFINE_string test_str '' 'test string' s
help='USAGE: standard [flags] args'
cat >"${expectedF}" <<EOF
USAGE: enhanced [flags] args
flags:
-b,--[no]test_bool: test boolean
-s,--test_str: test string
-h,--[no]help: show this help
EOF
( FLAGS_HELP=${help}; FLAGS -h >"${stdoutF}" 2>"${stderrF}" )
diff "${expectedF}" "${stderrF}" >/dev/null
rtrn=$?
assertTrue 'short flag help; unexpected help output' ${rtrn}
[ ${__shunit_skip} -eq ${SHUNIT_FALSE} \
-a ${rtrn} -ne ${FLAGS_TRUE} ] \
&& cat "${stderrF}"
# long option testing
flags_getoptIsStd && startSkipping
cat >"${expectedF}" <<EOF
USAGE: enhanced [flags] args
flags:
-b,--[no]test_bool: test boolean
-s,--test_str: test string
-h,--[no]help: show this help
EOF
( FLAGS_HELP=${help}; FLAGS --help >"${stdoutF}" 2>"${stderrF}" )
diff "${expectedF}" "${stderrF}" >/dev/null
rtrn=$?
assertTrue 'long flag help; unexpected help output' ${rtrn}
[ ${__shunit_skip} -eq ${SHUNIT_FALSE} \
-a ${rtrn} -ne ${FLAGS_TRUE} ] \
&& cat "${stderrF}"
}
#------------------------------------------------------------------------------
# suite functions
#
oneTimeSetUp()
{
# load flags
[ -n "${ZSH_VERSION:-}" ] && FLAGS_PARENT=$0
. ${TH_SHFLAGS}
tmpDir="${__shunit_tmpDir}/output"
mkdir "${tmpDir}"
stdoutF="${tmpDir}/stdout"
stderrF="${tmpDir}/stderr"
expectedF="${tmpDir}/expected"
}
setUp()
{
flags_reset
}
# load and run shUnit2
[ -n "${ZSH_VERSION:-}" ] && SHUNIT_PARENT=$0
. ${TH_SHUNIT}
|