b51d53eb3faff7f0745db3514ac1764ed65adca1
[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 <ccan/opt/helpers.c>
8 #include "utils.h"
9
10 int main(int argc, char *argv[])
11 {
12         plan_tests(12);
13
14         /* --aaa without args. */
15         opt_register_arg("-a|--aaa", test_arg, NULL, "aaa", "");
16         ok1(!parse_args(&argc, &argv, "--aaa", NULL));
17         ok1(strstr(err_output, ": --aaa: option requires an argument"));
18         free(err_output);
19         err_output = NULL;
20         ok1(!parse_args(&argc, &argv, "-a", NULL));
21         ok1(strstr(err_output, ": -a: option requires an argument"));
22         free(err_output);
23         err_output = NULL;
24
25         /* Multiple */
26         opt_register_arg("--bbb|-b|-c|--ccc", test_arg, NULL, "aaa", "");
27         ok1(!parse_args(&argc, &argv, "--bbb", NULL));
28         ok1(strstr(err_output, ": --bbb: option requires an argument"));
29         free(err_output);
30         err_output = NULL;
31         ok1(!parse_args(&argc, &argv, "-b", NULL));
32         ok1(strstr(err_output, ": -b: option requires an argument"));
33         free(err_output);
34         err_output = NULL;
35         ok1(!parse_args(&argc, &argv, "-c", NULL));
36         ok1(strstr(err_output, ": -c: option requires an argument"));
37         free(err_output);
38         err_output = NULL;
39         ok1(!parse_args(&argc, &argv, "--ccc", NULL));
40         ok1(strstr(err_output, ": --ccc: option requires an argument"));
41         free(err_output);
42         err_output = NULL;
43
44         return exit_status();
45 }
46