X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-usage.c;h=aec8324474f2b2a547574d870968c92b476e3e3e;hb=43185ec669720903fa86aac5f2d1b1ee62e3a12b;hp=73e6a949e912a161ea916adfcb46b73c500e304c;hpb=39dc9e4612339af669e934c47500605f826a2bb4;p=ccan diff --git a/ccan/opt/test/run-usage.c b/ccan/opt/test/run-usage.c index 73e6a949..aec83244 100644 --- a/ccan/opt/test/run-usage.c +++ b/ccan/opt/test/run-usage.c @@ -4,6 +4,15 @@ #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 @@ -14,13 +23,6 @@ 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[]) { @@ -28,7 +30,7 @@ int main(int argc, char *argv[]) char *longname = strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); char *shortname = strdup("shortname"); - plan_tests(48); + plan_tests(51); opt_register_table(subtables, NULL); opt_register_noarg("--kkk|-k", my_cb, NULL, "magic kkk option"); opt_register_noarg("-?", opt_usage_and_exit, "...", @@ -106,5 +108,24 @@ 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."); + opt_register_noarg("--split", my_cb, NULL, "New line in\nlong 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\n" + " shown in the usage message.\n")); + ok1(strstr(output, "\n" + "--split New line in\n" + " long option which requires more than one line for its full description to be shown in the\n" + " usage message.\n")); + free(output); + + free(shortname); + free(longname); return exit_status(); }