diff options
-rwxr-xr-x | t/t0040-parse-options.sh | 4 | ||||
-rw-r--r-- | test-parse-options.c | 18 |
2 files changed, 17 insertions, 5 deletions
diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh index fec3fef9a..dbaee5526 100755 --- a/t/t0040-parse-options.sh +++ b/t/t0040-parse-options.sh @@ -356,9 +356,7 @@ test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' ' test_cmp expect output ' -cat >expect <<\EOF -Callback: "not set", 1 -EOF +>expect test_expect_success 'OPT_CALLBACK() and callback errors work' ' test_must_fail test-parse-options --no-length >output 2>output.err && diff --git a/test-parse-options.c b/test-parse-options.c index f02c275f3..b5f4e900b 100644 --- a/test-parse-options.c +++ b/test-parse-options.c @@ -14,10 +14,18 @@ static char *file = NULL; static int ambiguous; static struct string_list list; +static struct { + int called; + const char *arg; + int unset; +} length_cb; + static int length_callback(const struct option *opt, const char *arg, int unset) { - printf("Callback: \"%s\", %d\n", - (arg ? arg : "not set"), unset); + length_cb.called = 1; + length_cb.arg = arg; + length_cb.unset = unset; + if (unset) return 1; /* do not support unset */ @@ -84,6 +92,12 @@ int main(int argc, char **argv) argc = parse_options(argc, (const char **)argv, prefix, options, usage, 0); + if (length_cb.called) { + const char *arg = length_cb.arg; + int unset = length_cb.unset; + printf("Callback: \"%s\", %d\n", + (arg ? arg : "not set"), unset); + } printf("boolean: %d\n", boolean); printf("integer: %d\n", integer); printf("magnitude: %lu\n", magnitude); |