aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xt/t0040-parse-options.sh4
-rw-r--r--test-parse-options.c18
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);