1 #include <ccan/tap/tap.h>
7 #include <ccan/opt/opt.c>
8 #include <ccan/opt/usage.c>
9 #include <ccan/opt/helpers.c>
10 #include <ccan/opt/parse.c>
12 static char *my_cb(void *p)
18 int main(int argc, char *argv[])
21 char *longname = strdup("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
22 char *shortname = strdup("shortname");
25 opt_register_table(subtables, NULL);
26 opt_register_noarg("--kkk|-k", my_cb, NULL, "magic kkk option");
27 opt_register_noarg("-?", opt_usage_and_exit, "<MyArgs>...",
29 opt_register_arg("--longname", opt_set_charp, opt_show_charp,
30 &longname, "a really long option default");
31 opt_register_arg("--shortname", opt_set_charp, opt_show_charp,
32 &shortname, "a short option default");
33 output = opt_usage("my name", "ExTrA Args");
35 ok1(strstr(output, "Usage: my name"));
36 ok1(strstr(output, "--jjj|-j|--lll|-l <arg>"));
37 ok1(strstr(output, "ExTrA Args"));
38 ok1(strstr(output, "-a "));
39 ok1(strstr(output, " Description of a\n"));
40 ok1(strstr(output, "-b <arg>"));
41 ok1(strstr(output, " Description of b (default: b)\n"));
42 ok1(strstr(output, "--ddd "));
43 ok1(strstr(output, " Description of ddd\n"));
44 ok1(strstr(output, "--eee <filename> "));
45 ok1(strstr(output, " (default: eee)\n"));
46 ok1(strstr(output, "long table options:\n"));
47 ok1(strstr(output, "--ggg|-g "));
48 ok1(strstr(output, " Description of ggg\n"));
49 ok1(strstr(output, "-h|--hhh <arg>"));
50 ok1(strstr(output, " Description of hhh\n"));
51 ok1(strstr(output, "--kkk|-k"));
52 ok1(strstr(output, "magic kkk option"));
53 /* This entry is hidden. */
54 ok1(!strstr(output, "--mmm|-m"));
57 /* NULL should use string from registered options. */
58 output = opt_usage("my name", NULL);
60 ok1(strstr(output, "Usage: my name"));
61 ok1(strstr(output, "--jjj|-j|--lll|-l <arg>"));
62 ok1(strstr(output, "<MyArgs>..."));
63 ok1(strstr(output, "-a "));
64 ok1(strstr(output, " Description of a\n"));
65 ok1(strstr(output, "-b <arg>"));
66 ok1(strstr(output, " Description of b (default: b)\n"));
67 ok1(strstr(output, "--ddd "));
68 ok1(strstr(output, " Description of ddd\n"));
69 ok1(strstr(output, "--eee <filename> "));
70 ok1(strstr(output, " (default: eee)\n"));
71 ok1(strstr(output, "long table options:\n"));
72 ok1(strstr(output, "--ggg|-g "));
73 ok1(strstr(output, " Description of ggg\n"));
74 ok1(strstr(output, "-h|--hhh <arg>"));
75 ok1(strstr(output, " Description of hhh\n"));
76 ok1(strstr(output, "--kkk|-k"));
77 ok1(strstr(output, "magic kkk option"));
78 ok1(strstr(output, "--longname"));
79 ok1(strstr(output, "a really long option default"));
80 ok1(strstr(output, "(default: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"...)"));
81 ok1(strstr(output, "--shortname"));
82 ok1(strstr(output, "a short option default"));
83 ok1(strstr(output, "(default: \"shortname\")"));
84 /* This entry is hidden. */
85 ok1(!strstr(output, "--mmm|-m"));
89 /* Empty table test. */
90 output = opt_usage("nothing", NULL);
91 ok1(strstr(output, "Usage: nothing \n"));
95 opt_register_noarg("--aaa", test_noarg, NULL, "AAAAll");
96 output = opt_usage("onearg", NULL);
97 ok1(strstr(output, "Usage: onearg \n"));
98 ok1(strstr(output, "--aaa"));
99 ok1(strstr(output, "AAAAll"));
104 return exit_status();