Code

Some platform are missing setenv
[nagiosplug.git] / lib / tests / test_opts2.c
1 /*****************************************************************************
2
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * GNU General Public License for more details.
12
13 * You should have received a copy of the GNU General Public License
14 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 *****************************************************************************/
18 #include "common.h"
19 #include "utils_base.h"
20 #include "extra_opts.h"
22 #include "tap.h"
24 void my_free(int *argc, char **argv) {
25         int i;
26         printf ("    Arg(%i): ", *argc);
27         for (i=1; i<*argc; i++) printf ("'%s' ", argv[i]);
28         printf ("\n");
29         free(argv);
30         *argc=0;
31 }
33 int array_diff(int i1, char **a1, int i2, char **a2) {
34         int i;
36         if (i1 != i2) {
37                 printf("    Argument count doesn't match!\n");
38                 return 0;
39         }
40         for (i=0; i<=i1; i++) {
41                 if (a1[i]==NULL && a2[i]==NULL) continue;
42                 if (a1[i]==NULL || a2[i]==NULL) {
43                         printf("    Argument # %i null in one array!\n", i);
44                         return 0;
45                 }
46                 if (strcmp(a1[i], a2[i])) {
47                         printf("    Argument # %i doesn't match!\n", i);
48                         return 0;
49                 }
50         }
51         return 1;
52 }
54 int
55 main (int argc, char **argv)
56 {
57         char **argv_test=NULL, **argv_known=NULL;
58         int i, argc_test;
60         plan_tests(5);
62         argv_test=(char **)malloc(6*sizeof(char **));
63         argv_test[0] = "prog_name";
64         argv_test[1] = "arg1";
65         argv_test[2] = "--extra-opts";
66         argv_test[3] = "--arg3";
67         argv_test[4] = "val2";
68         argv_test[5] = NULL;
69         argc_test=5;
70         argv_known=(char **)realloc(argv_known, 6*sizeof(char **));
71         argv_known[0] = "prog_name";
72         argv_known[1] = "--foo=bar";
73         argv_known[2] = "arg1";
74         argv_known[3] = "--arg3";
75         argv_known[4] = "val2";
76         argv_known[5] = NULL;
77         argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
78         ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 1");
80         argv_test=(char **)malloc(3*sizeof(char **));
81         argv_test[0] = "prog_name";
82         argv_test[1] = "--extra-opts";
83         argv_test[2] = NULL;
84         argc_test=2;
85         argv_known=(char **)realloc(argv_known, 3*sizeof(char **));
86         argv_known[0] = "prog_name";
87         argv_known[1] = "--foo=bar";
88         argv_known[2] = NULL;
89         argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
90         ok(array_diff(argc_test, argv_test, 2, argv_known), "Default section 2");
91         my_free(&argc_test,argv_test);
93         argv_test=(char **)malloc(6*sizeof(char **));
94         argv_test[0] = "prog_name";
95         argv_test[1] = "arg1";
96         argv_test[2] = "--extra-opts=section1";
97         argv_test[3] = "--arg3";
98         argv_test[4] = "val2";
99         argv_test[5] = NULL;
100         argc_test=5;
101         argv_known=(char **)realloc(argv_known, 6*sizeof(char **));
102         argv_known[0] = "prog_name";
103         argv_known[1] = "--foobar=baz";
104         argv_known[2] = "arg1";
105         argv_known[3] = "--arg3";
106         argv_known[4] = "val2";
107         argv_known[5] = NULL;
108         argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
109         ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 3");
110         my_free(&argc_test,argv_test);
112         argv_test=(char **)malloc(6*sizeof(char **));
113         argv_test[0] = "prog_name";
114         argv_test[1] = "arg1";
115         argv_test[2] = "--extra-opts";
116         argv_test[3] = "-arg3";
117         argv_test[4] = "val2";
118         argv_test[5] = NULL;
119         argc_test=5;
120         argv_known=(char **)realloc(argv_known, 6*sizeof(char **));
121         argv_known[0] = "prog_name";
122         argv_known[1] = "--foo=bar";
123         argv_known[2] = "arg1";
124         argv_known[3] = "-arg3";
125         argv_known[4] = "val2";
126         argv_known[5] = NULL;
127         argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
128         ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 4");
129         my_free(&argc_test,argv_test);
131         argv_test=(char **)malloc(4*sizeof(char **));
132         argv_test[0] = "check_tcp";
133         argv_test[1] = "--extra-opts";
134         argv_test[2] = "--extra-opts=tcp_long_lines";
135         argv_test[3] = NULL;
136         argc_test=3;
137         argv_known=(char **)realloc(argv_known, 7*sizeof(char **));
138         argv_known[0] = "check_tcp";
139         argv_known[1] = "--timeout=10";
140         argv_known[2] = "--escape";
141         argv_known[3] = "--send=Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda";
142         argv_known[4] = "--expect=Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda Foo bar BAZ yadda yadda yadda";
143         argv_known[5] = "--jail";
144         argv_known[6] = NULL;
145         argv_test=np_extra_opts(&argc_test, argv_test, "check_tcp");
146         ok(array_diff(argc_test, argv_test, 6, argv_known), "Long lines test");
147         my_free(&argc_test,argv_test);
149         return exit_status();