opt: fix warnings with gcc and -O.
[ccan] / ccan / opt / test / run-correct-reporting.c
1 /* Make sure when multiple equivalent options, correct one is used for errors */
2
3 #include <ccan/tap/tap.h>
4 #include <stdlib.h>
5 #include <ccan/opt/opt.c>
6 #include <ccan/opt/usage.c>
7 #include "utils.h"
8
9 int main(int argc, char *argv[])
10 {
11         plan_tests(12);
12
13         /* --aaa without args. */
14         opt_register_arg("-a/--aaa", test_arg, NULL, "aaa", "");
15         ok1(!parse_args(&argc, &argv, "--aaa", NULL));
16         ok1(strstr(err_output, ": --aaa: option requires an argument"));
17         free(err_output);
18         err_output = NULL;
19         ok1(!parse_args(&argc, &argv, "-a", NULL));
20         ok1(strstr(err_output, ": -a: option requires an argument"));
21         free(err_output);
22         err_output = NULL;
23
24         /* Multiple */
25         opt_register_arg("--bbb/-b/-c/--ccc", test_arg, NULL, "aaa", "");
26         ok1(!parse_args(&argc, &argv, "--bbb", NULL));
27         ok1(strstr(err_output, ": --bbb: option requires an argument"));
28         free(err_output);
29         err_output = NULL;
30         ok1(!parse_args(&argc, &argv, "-b", NULL));
31         ok1(strstr(err_output, ": -b: option requires an argument"));
32         free(err_output);
33         err_output = NULL;
34         ok1(!parse_args(&argc, &argv, "-c", NULL));
35         ok1(strstr(err_output, ": -c: option requires an argument"));
36         free(err_output);
37         err_output = NULL;
38         ok1(!parse_args(&argc, &argv, "--ccc", NULL));
39         ok1(strstr(err_output, ": --ccc: option requires an argument"));
40         free(err_output);
41         err_output = NULL;
42
43         return exit_status();
44 }
45