X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-helpers.c;h=48b7cd8b11dfba607bdc32a501bde99f37370487;hp=8e1a751fc2da88b3a651f9e51f65747408a6b624;hb=f20e4f235ac89f3901f248f91c3ac5a33088349d;hpb=f8b1841d26dabd23c053f5fc61dbd1536cdad43c diff --git a/ccan/opt/test/run-helpers.c b/ccan/opt/test/run-helpers.c index 8e1a751f..48b7cd8b 100644 --- a/ccan/opt/test/run-helpers.c +++ b/ccan/opt/test/run-helpers.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "utils.h" /* We don't actually want it to exit... */ @@ -20,7 +21,7 @@ static void reset_options(void) { free(opt_table); opt_table = NULL; - opt_count = 0; + opt_count = opt_num_short = opt_num_short_arg = opt_num_long = 0; } static char *output = NULL; @@ -48,16 +49,16 @@ static int saved_printf(const char *fmt, ...) /* Test helpers. */ int main(int argc, char *argv[]) { - plan_tests(88); + plan_tests(96); /* opt_set_bool */ { bool arg = false; reset_options(); - opt_register_noarg(NULL, 'a', opt_set_bool, &arg, NULL); + opt_register_noarg("-a", opt_set_bool, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", NULL)); ok1(arg); - opt_register_arg(NULL, 'b', opt_set_bool_arg, NULL, &arg, NULL); + opt_register_arg("-b", opt_set_bool_arg, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-b", "no", NULL)); ok1(!arg); ok1(parse_args(&argc, &argv, "-b", "yes", NULL)); @@ -66,15 +67,18 @@ int main(int argc, char *argv[]) ok1(!arg); ok1(parse_args(&argc, &argv, "-b", "true", NULL)); ok1(arg); + ok1(!parse_args(&argc, &argv, "-b", "unknown", NULL)); + ok1(arg); + ok1(strstr(err_output, ": -b: Invalid argument 'unknown'")); } /* opt_set_invbool */ { bool arg = true; reset_options(); - opt_register_noarg(NULL, 'a', opt_set_invbool, &arg, NULL); + opt_register_noarg("-a", opt_set_invbool, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", NULL)); ok1(!arg); - opt_register_arg(NULL, 'b', opt_set_invbool_arg, NULL, + opt_register_arg("-b", opt_set_invbool_arg, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-b", "no", NULL)); ok1(arg); @@ -84,12 +88,15 @@ int main(int argc, char *argv[]) ok1(arg); ok1(parse_args(&argc, &argv, "-b", "true", NULL)); ok1(!arg); + ok1(!parse_args(&argc, &argv, "-b", "unknown", NULL)); + ok1(!arg); + ok1(strstr(err_output, ": -b: Invalid argument 'unknown'")); } /* opt_set_charp */ { char *arg = (char *)"wrong"; reset_options(); - opt_register_arg(NULL, 'a', opt_set_charp, NULL, &arg, NULL); + opt_register_arg("-a", opt_set_charp, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", "string", NULL)); ok1(strcmp(arg, "string") == 0); } @@ -97,7 +104,7 @@ int main(int argc, char *argv[]) { int arg = 1000; reset_options(); - opt_register_arg(NULL, 'a', opt_set_intval, NULL, &arg, NULL); + opt_register_arg("-a", opt_set_intval, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", "9999", NULL)); ok1(arg == 9999); ok1(parse_args(&argc, &argv, "-a", "-9999", NULL)); @@ -114,7 +121,7 @@ int main(int argc, char *argv[]) { unsigned int arg = 1000; reset_options(); - opt_register_arg(NULL, 'a', opt_set_uintval, NULL, &arg, NULL); + opt_register_arg("-a", opt_set_uintval, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", "9999", NULL)); ok1(arg == 9999); ok1(!parse_args(&argc, &argv, "-a", "-9999", NULL)); @@ -122,12 +129,23 @@ int main(int argc, char *argv[]) ok1(arg == 0); ok1(!parse_args(&argc, &argv, "-a", "100crap", NULL)); ok1(!parse_args(&argc, &argv, "-a", "4294967296", NULL)); + if (ULONG_MAX == UINT_MAX) { + pass("Can't test overflow"); + pass("Can't test error message"); + } else { + char buf[30]; + sprintf(buf, "%lu", ULONG_MAX); + ok1(!parse_args(&argc, &argv, "-a", buf, NULL)); + ok1(strstr(err_output, ": -a: value '") + && strstr(err_output, buf) + && strstr(err_output, "' does not fit into an integer")); + } } /* opt_set_longval */ { long int arg = 1000; reset_options(); - opt_register_arg(NULL, 'a', opt_set_longval, NULL, &arg, NULL); + opt_register_arg("-a", opt_set_longval, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", "9999", NULL)); ok1(arg == 9999); ok1(parse_args(&argc, &argv, "-a", "-9999", NULL)); @@ -146,7 +164,7 @@ int main(int argc, char *argv[]) { unsigned long int arg = 1000; reset_options(); - opt_register_arg(NULL, 'a', opt_set_ulongval, NULL, &arg, NULL); + opt_register_arg("-a", opt_set_ulongval, NULL, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", "9999", NULL)); ok1(arg == 9999); ok1(!parse_args(&argc, &argv, "-a", "-9999", NULL)); @@ -164,7 +182,7 @@ int main(int argc, char *argv[]) { int arg = 1000; reset_options(); - opt_register_noarg(NULL, 'a', opt_inc_intval, &arg, NULL); + opt_register_noarg("-a", opt_inc_intval, &arg, NULL); ok1(parse_args(&argc, &argv, "-a", NULL)); ok1(arg == 1001); ok1(parse_args(&argc, &argv, "-a", "-a", NULL)); @@ -177,7 +195,7 @@ int main(int argc, char *argv[]) { int exitval; reset_options(); - opt_register_noarg(NULL, 'a', + opt_register_noarg("-a", opt_version_and_exit, "1.2.3", NULL); exitval = setjmp(exited); if (exitval == 0) { @@ -195,7 +213,7 @@ int main(int argc, char *argv[]) { int exitval; reset_options(); - opt_register_noarg(NULL, 'a', + opt_register_noarg("-a", opt_usage_and_exit, "[args]", NULL); exitval = setjmp(exited); if (exitval == 0) {