opt: wean off getopt_long, beef up tests.
[ccan] / ccan / opt / test / run-usage.c
index 9d448dc460b7cf6db90ff398ac0558138bfc51c1..dd5e42e72ce4bf3911ec09b09fe2e5b641c00c27 100644 (file)
@@ -8,18 +8,26 @@
 #include <ccan/opt/opt.c>
 #include <ccan/opt/usage.c>
 #include <ccan/opt/helpers.c>
+#include <ccan/opt/parse.c>
 
 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;
 
-       plan_tests(38);
+       plan_tests(42);
        opt_register_table(subtables, NULL);
        opt_register_noarg("--kkk|-k", my_cb, NULL, "magic kkk option");
        opt_register_noarg("-?", opt_usage_and_exit, "<MyArgs>...",
@@ -73,5 +81,19 @@ int main(int argc, char *argv[])
        ok1(!strstr(output, "--mmm|-m"));
        free(output);
 
+       reset_options();
+       /* Empty table test. */
+       output = opt_usage("nothing", NULL);
+       ok1(strstr(output, "Usage: nothing \n"));
+       free(output);
+
+       /* No short args. */
+       opt_register_noarg("--aaa", test_noarg, NULL, "AAAAll");
+       output = opt_usage("onearg", NULL);
+       ok1(strstr(output, "Usage: onearg \n"));
+       ok1(strstr(output, "--aaa"));
+       ok1(strstr(output, "AAAAll"));
+       free(output);
+
        return exit_status();
 }