opt: add new parse_early_args_incomplete.
[ccan] / ccan / opt / test / run-early_incomplete.c
1 /* With errlog == NULL, we never get a "failure". */
2 #include <ccan/tap/tap.h>
3 #include <stdlib.h>
4 #include <ccan/opt/opt.c>
5 #include <ccan/opt/usage.c>
6 #include <ccan/opt/helpers.c>
7 #include <ccan/opt/parse.c>
8 #include "utils.h"
9
10 int main(int argc, char *argv[])
11 {
12         plan_tests(8);
13
14         /* Simple short args.*/
15         opt_register_noarg("-a", test_noarg, NULL, "All");
16         opt_register_early_noarg("-b|--blong", test_noarg, NULL, "All");
17
18         /* This is OK. */
19         ok1(parse_early_args_incomplete(&argc, &argv, "-c", NULL));
20         ok1(test_cb_called == 0);
21
22         /* Skips letters correctly */
23         ok1(parse_early_args_incomplete(&argc, &argv, "-ca", NULL));
24         ok1(test_cb_called == 0); /* a is not an early arg! */
25
26         test_cb_called = 0;
27         ok1(parse_early_args_incomplete(&argc, &argv, "-bca", NULL));
28         ok1(test_cb_called == 1);
29
30         test_cb_called = 0;
31         ok1(parse_early_args_incomplete(&argc, &argv, "--unknown", "--also-unknown", "--blong", NULL));
32         ok1(test_cb_called == 1);
33
34         /* parse_args allocates argv */
35         free(argv);
36         return exit_status();
37 }