X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-usage.c;h=c647537058860e03e1cbf42ec6ff9f545b2d762b;hp=dd5e42e72ce4bf3911ec09b09fe2e5b641c00c27;hb=2e26b06e6384c4483dde844cf8991846075e552c;hpb=9056c31b46452c92c7dd9c276664f514720a84c6 diff --git a/ccan/opt/test/run-usage.c b/ccan/opt/test/run-usage.c index dd5e42e7..c6475370 100644 --- a/ccan/opt/test/run-usage.c +++ b/ccan/opt/test/run-usage.c @@ -1,10 +1,18 @@ -#define _GNU_SOURCE #include #include #include #include #include #include "utils.h" + +/* Ensure width is sane. */ +static const char *getenv_override(const char *name) +{ + return "100"; +} + +#define getenv getenv_override + #include #include #include @@ -15,23 +23,22 @@ static char *my_cb(void *p) return NULL; } -static void reset_options(void) -{ - free(opt_table); - opt_table = NULL; - opt_count = opt_num_short = opt_num_short_arg = opt_num_long = 0; -} - /* Test helpers. */ int main(int argc, char *argv[]) { char *output; + char *longname = strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + char *shortname = strdup("shortname"); - plan_tests(42); + plan_tests(50); opt_register_table(subtables, NULL); opt_register_noarg("--kkk|-k", my_cb, NULL, "magic kkk option"); opt_register_noarg("-?", opt_usage_and_exit, "...", "This message"); + opt_register_arg("--longname", opt_set_charp, opt_show_charp, + &longname, "a really long option default"); + opt_register_arg("--shortname", opt_set_charp, opt_show_charp, + &shortname, "a short option default"); output = opt_usage("my name", "ExTrA Args"); diag("%s", output); ok1(strstr(output, "Usage: my name")); @@ -77,6 +84,12 @@ int main(int argc, char *argv[]) ok1(strstr(output, " Description of hhh\n")); ok1(strstr(output, "--kkk|-k")); ok1(strstr(output, "magic kkk option")); + ok1(strstr(output, "--longname")); + ok1(strstr(output, "a really long option default")); + ok1(strstr(output, "(default: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"...)")); + ok1(strstr(output, "--shortname")); + ok1(strstr(output, "a short option default")); + ok1(strstr(output, "(default: \"shortname\")")); /* This entry is hidden. */ ok1(!strstr(output, "--mmm|-m")); free(output); @@ -95,5 +108,18 @@ int main(int argc, char *argv[]) ok1(strstr(output, "AAAAll")); free(output); + reset_options(); + /* Valgrind nails this to 100 anyway :( */ + setenv("COLUMNS", "100", 1); + opt_register_noarg("--long", my_cb, NULL, "Extremely long option which requires more than one line for its full description to be shown in the usage message."); + output = opt_usage("longarg", NULL); + diag("%s", output); + ok1(strstr(output, "Usage: longarg \n")); + ok1(strstr(output, "\n--long Extremely long option which requires more than one line for its full description to be shown\n" + " in the usage message.\n")); + free(output); + + free(shortname); + free(longname); return exit_status(); }