Line data Source code
1 : //
2 : // test_specials.c
3 : // oc-runner
4 : //
5 : // Created by Danny Goossen on 4/5/18.
6 : // Copyright (c) 2018 Danny Goossen. All rights reserved.
7 : //
8 :
9 : //LCOV_EXCL_START
10 : #include <check.h>
11 : //LCOV_EXCL_STOP
12 :
13 : #include "../src/specials.h"
14 : #include "../src/cJSON_deploy.h"
15 : #include "../src/yaml2cjson.h"
16 :
17 : #include "../src/error.h"
18 :
19 : #define DOCKER_REGISTRY "registry.hub.docker.com"
20 :
21 : //LCOV_EXCL_START
22 : //Dummy for compling
23 : size_t Write_dyn_trace(void *userp,enum term_color color, const char *message, ...)
24 : {
25 : return 0;
26 : }
27 : //LCOV_EXCL_STOP
28 : // the command structure
29 :
30 :
31 : static Suite * specials_suite(void);
32 :
33 :
34 : //get_gitlab_group_url
35 :
36 4 : START_TEST(check_slugit)
37 : {
38 : struct test_data_t
39 : {
40 : char * name_space;
41 : char * name_ref;
42 : } ;
43 : static const struct test_data_t testlist[4] = {
44 : { "!@#hallo#$%^","hallo"},
45 :
46 : { "012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
47 : { "gioxa#$%image-test","gioxa-image-test"},
48 : { "@#$%",NULL},
49 : };
50 4 : char * name_ref=NULL;
51 :
52 4 : name_ref= slug_it(testlist[_i].name_space,0);
53 4 : if (testlist[_i].name_ref)
54 : {
55 3 : ck_assert_ptr_nonnull(name_ref);
56 6 : ck_assert_str_eq(name_ref,testlist[_i].name_ref );
57 : }
58 1 : else ck_assert_ptr_null(name_ref);
59 4 : if (name_ref) free(name_ref);
60 : }
61 4 : END_TEST
62 :
63 :
64 5 : START_TEST(check_chop_ns)
65 : {
66 : struct test_data_t
67 : {
68 : char * name_space;
69 : char * name_ref;
70 : } ;
71 : static const struct test_data_t testlist[6] = {
72 : { "library/centos","centos"},
73 : { "gioxa/oc-runner/oc-runner","oc-runner"},
74 : { "gioxa/oc-runner/build-image","build-image-oc-runner"},
75 : { "centos/redis","redis-centos"},
76 : { "dgoo2308/fpm-image","fpm-image-dgoo2308"},
77 : { "deployctl/test_docker_config", "test-docker-config-deployctl"},
78 : };
79 5 : char * name_ref=NULL;
80 :
81 5 : name_ref= name_space_rev_slug(testlist[_i].name_space);
82 :
83 5 : ck_assert_ptr_nonnull(name_ref);
84 10 : ck_assert_str_eq(name_ref,testlist[_i].name_ref );
85 : }
86 5 : END_TEST
87 :
88 38 : START_TEST(check_chop_image)
89 : {
90 : struct test_data_t
91 : {
92 : char * image;
93 : char * registry;
94 : char * name_space;
95 : char * reference;
96 : } ;
97 : static const struct test_data_t testlist[39] = {
98 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build",NULL},
99 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build","1"},
100 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1.1","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build","1.1"},
101 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1:1","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build","1:1"},
102 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1-1.2","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build","1-1.2"},
103 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","172.30.208.107:5000","oc-runner/is-deployctl-test-oc-build","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
104 :
105 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build","172.30.208.107","oc-runner/is-deployctl-test-oc-build",NULL},
106 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build:1","172.30.208.107","oc-runner/is-deployctl-test-oc-build","1"},
107 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build:1.1","172.30.208.107","oc-runner/is-deployctl-test-oc-build","1.1"},
108 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build:1:1","172.30.208.107","oc-runner/is-deployctl-test-oc-build","1:1"},
109 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build:1-1.2","172.30.208.107","oc-runner/is-deployctl-test-oc-build","1-1.2"},
110 : { "172.30.208.107/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","172.30.208.107","oc-runner/is-deployctl-test-oc-build","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
111 :
112 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build","a.b:5000","oc-runner/is-deployctl-test-oc-build",NULL},
113 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build:1","a.b:5000","oc-runner/is-deployctl-test-oc-build","1"},
114 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build:1.1","a.b:5000","oc-runner/is-deployctl-test-oc-build","1.1"},
115 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build:1:1","a.b:5000","oc-runner/is-deployctl-test-oc-build","1:1"},
116 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build:1-1.2","a.b:5000","oc-runner/is-deployctl-test-oc-build","1-1.2"},
117 : { "a.b:5000/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","a.b:5000","oc-runner/is-deployctl-test-oc-build","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
118 :
119 : { "a.b/oc-runner/is-deployctl-test-oc-build","a.b","oc-runner/is-deployctl-test-oc-build",NULL},
120 : { "a.b/oc-runner/is-deployctl-test-oc-build:1","a.b","oc-runner/is-deployctl-test-oc-build","1"},
121 : { "a.b/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","a.b","oc-runner/is-deployctl-test-oc-build","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
122 : { "a.b/oc-runner/is-deployctl-test-oc-build:1.1","a.b","oc-runner/is-deployctl-test-oc-build","1.1"},
123 : { "a.b/oc-runner/is-deployctl-test-oc-build:1:1","a.b","oc-runner/is-deployctl-test-oc-build","1:1"},
124 : { "a.b/oc-runner/is-deployctl-test-oc-build:1-1.2","a.b","oc-runner/is-deployctl-test-oc-build","1-1.2"},
125 :
126 :
127 : { "centos",DOCKER_REGISTRY,"library/centos",NULL},
128 : { "centos:1",DOCKER_REGISTRY,"library/centos","1"},
129 : { "centos:1.1",DOCKER_REGISTRY,"library/centos","1.1"},
130 : { "centos:1:1",DOCKER_REGISTRY,"library/centos","1:1"},
131 : { "centos:1-1.2",DOCKER_REGISTRY,"library/centos","1-1.2"},
132 : { "centos@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d",DOCKER_REGISTRY,"library/centos","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
133 :
134 : { "jekyll/builder",DOCKER_REGISTRY,"jekyll/builder",NULL},
135 : { "jekyll/builder:1",DOCKER_REGISTRY,"jekyll/builder","1"},
136 : { "jekyll/builder:1.1",DOCKER_REGISTRY,"jekyll/builder","1.1"},
137 : { "jekyll/builder:1:1",DOCKER_REGISTRY,"jekyll/builder","1:1"},
138 : { "jekyll/builder:1-1.2",DOCKER_REGISTRY,"jekyll/builder","1-1.2"},
139 : { "jekyll/builder@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d",DOCKER_REGISTRY,"jekyll/builder","sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
140 :
141 : { "dockregi.gioxa.com/docker/centos7-coreutils","dockregi.gioxa.com","docker/centos7-coreutils",NULL},
142 : { "dockregi.gioxa.com/docker/centos7-coreutils:1","dockregi.gioxa.com","docker/centos7-coreutils","1"},
143 :
144 : { "dockregi.gioxa.com/docker/centos7-coreutils:latest","dockregi.gioxa.com","docker/centos7-coreutils","latest"},
145 :
146 : };
147 :
148 38 : cJSON * env_vars=cJSON_CreateObject();
149 38 : cJSON_AddStringToObject(env_vars,"CI_PROJECT_PATH_SLUG" , "deployctl-test-oc-build");
150 38 : cJSON_AddStringToObject(env_vars,"CI_REGISTRY_IMAGE" , "dockregi.gioxa.com/deployctl/test_oc_build");
151 38 : cJSON_AddStringToObject(env_vars,"TEST_VAR" , "testvar");
152 38 : cJSON_AddStringToObject(env_vars,"" , "");
153 :
154 38 : char * reference=NULL;
155 38 : char * registry=NULL;
156 38 : char * namespace=NULL;
157 :
158 38 : chop_image(testlist[_i].image, ®istry, &namespace,&reference );
159 38 : ck_assert_ptr_nonnull(registry);
160 76 : ck_assert_ptr_nonnull(namespace);
161 76 : ck_assert_str_eq(registry,testlist[_i].registry );
162 76 : ck_assert_str_eq(namespace,testlist[_i].name_space);
163 69 : if (reference && testlist[_i].reference)ck_assert_str_eq(reference,testlist[_i].reference);
164 38 : ck_assert(!((reference && !testlist[_i].reference) || (!reference && testlist[_i].reference)));
165 69 : if (reference) free(reference);
166 38 : if(registry) free(registry);
167 38 : if (namespace) free(namespace);
168 : }
169 38 : END_TEST
170 :
171 :
172 17 : START_TEST(check_process_nick)
173 : {
174 : struct test_data_t
175 : {
176 : char * nick;
177 : char * nick_result;
178 : char * image;
179 : } ;
180 : static const struct test_data_t testlist[17] = {
181 : { "centos", "centos","registry.hub.docker.com/library/centos"},
182 : { "gioxa/oc-runner:1", "gioxa/oc-runner:1","registry.hub.docker.com/gioxa/oc-runner:1"},
183 : { "ImageStream", "ImageStream","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build"},
184 : { "ImageStream:1.1-2", "ImageStream:1.1-2","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1.1-2"},
185 : { "ImageStream/lev1", "ImageStream/lev1","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build-lev1"},
186 : { "ImageStream/$TEST_VAR", "ImageStream/testvar","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build-testvar"},
187 : { "ImageStream@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "ImageStream@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
188 : { "ImageStream/$TEST_VAR@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "ImageStream/testvar@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build-testvar@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
189 : { "Gitlab", "Gitlab","dockregi.gioxa.com/deployctl/test_oc_build"},
190 : { "Gitlab:1-2.3", "Gitlab:1-2.3","dockregi.gioxa.com/deployctl/test_oc_build:1-2.3"},
191 : { "Gitlab/lev2:1-2.3", "Gitlab/lev2:1-2.3","dockregi.gioxa.com/deployctl/test_oc_build/lev2:1-2.3"},
192 : { "Gitlab/lev2@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "Gitlab/lev2@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","dockregi.gioxa.com/deployctl/test_oc_build/lev2@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
193 : { "Gitlab@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "Gitlab@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d","dockregi.gioxa.com/deployctl/test_oc_build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d"},
194 : { "dockregi.gioxa.com/docker/centos7-coreutils","dockregi.gioxa.com/docker/centos7-coreutils","dockregi.gioxa.com/docker/centos7-coreutils"},
195 : { "dockregi.gioxa.com/docker/centos7-coreutils:1","dockregi.gioxa.com/docker/centos7-coreutils:1","dockregi.gioxa.com/docker/centos7-coreutils:1"},
196 : { "$CI_REGISTRY/docker/centos7-coreutils:latest","dockregi.gioxa.com/docker/centos7-coreutils:latest","dockregi.gioxa.com/docker/centos7-coreutils:latest"},
197 : { "Gitlab/noci","Gitlab/noci",NULL}
198 : };
199 :
200 17 : cJSON * env_vars=cJSON_CreateObject();
201 17 : cJSON_AddStringToObject(env_vars,"CI_PROJECT_PATH_SLUG" , "deployctl-test-oc-build");
202 17 : if(strcmp("Gitlab/noci",testlist[_i].nick)!=0)
203 16 : cJSON_AddStringToObject(env_vars,"CI_REGISTRY_IMAGE" , "dockregi.gioxa.com/deployctl/test_oc_build");
204 17 : cJSON_AddStringToObject(env_vars,"TEST_VAR" , "testvar");
205 17 : cJSON_AddStringToObject(env_vars,"" , "");
206 17 : cJSON_AddStringToObject(env_vars,"CI_REGISTRY" , "dockregi.gioxa.com");
207 :
208 17 : char *image_nick=strdup(testlist[_i].nick);
209 17 : char * image=NULL;
210 :
211 17 : image=process_image_nick(&image_nick, env_vars, "172.30.208.107:5000", "oc-runner", "registry.hub.docker.com");
212 17 : ck_assert_ptr_nonnull(image_nick);
213 34 : ck_assert_str_eq(image_nick,testlist[_i].nick_result );
214 17 : if (testlist[_i].image)
215 16 : ck_assert_str_eq(image,testlist[_i].image);
216 1 : else ck_assert_ptr_null(image);
217 17 : free(image_nick);
218 17 : free(image);
219 : }
220 17 : END_TEST
221 :
222 : //int change_image_tag(char ** image, const char *new_tag)
223 :
224 12 : START_TEST(check_change_image_tag)
225 : {
226 : struct test_data_t
227 : {
228 : char * image;
229 : char * tag;
230 : char * image_result;
231 : int result;
232 : } ;
233 : static const struct test_data_t testlist[13] = {
234 : { "ImageStream", "1","ImageStream:1",0},
235 : { "ImageStream:latest", "1","ImageStream:1",0},
236 : { "ImageStream:1", NULL,"ImageStream",0},
237 : { "ImageStream@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", NULL,"ImageStream",0},
238 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "1.1-2","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1.1-2",0},
239 : { "ImageStream/lev1@sha256:202ecb065b0ca74e07147606d1114a9cf2057efce4f210f7a17fc7b57da6c31d", "1","ImageStream/lev1:1",0},
240 : { "", "latest","",(int) (-1)},
241 : { NULL, "latest",NULL,(int)(-1)},
242 : { NULL, NULL,NULL,(int)(-1)},
243 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build", "1","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:1",0},
244 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:2", "3","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:3",0},
245 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build:latest", "","172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build",0},
246 : { "172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build", NULL,"172.30.208.107:5000/oc-runner/is-deployctl-test-oc-build",0}
247 : };
248 :
249 12 : char *image=NULL;
250 12 : if (testlist[_i].image) image=strdup(testlist[_i].image);
251 :
252 :
253 12 : cJSON * env_vars=cJSON_CreateObject();
254 12 : cJSON_AddStringToObject(env_vars,"CI_PROJECT_PATH_SLUG" , "deployctl-test-oc-build");
255 12 : cJSON_AddStringToObject(env_vars,"CI_REGISTRY_IMAGE" , "dockregi.gioxa.com/deployctl/test_oc_build");
256 12 : cJSON_AddStringToObject(env_vars,"TEST_VAR" , "testvar");
257 12 : cJSON_AddStringToObject(env_vars,"" , "");
258 :
259 12 : int res=change_image_tag(&image,testlist[_i].tag);
260 : //printf("%s, \'%s\' =>%d : \'%s\' whish \'%s\'\n",testlist[_i].image,testlist[_i].tag,res,image,testlist[_i].image_result);
261 12 : ck_assert_int_eq(res, testlist[_i].result);
262 12 : if (testlist[_i].image)
263 : {
264 10 : ck_assert_ptr_nonnull(image);
265 20 : ck_assert_str_eq(image,testlist[_i].image_result );
266 : }
267 : else
268 2 : ck_assert_ptr_null(image);
269 12 : if (image) free(image);
270 : }
271 12 : END_TEST
272 :
273 : struct test_data_comma_t
274 : {
275 : char * data;
276 : char *result;
277 : } ;
278 :
279 : static const struct test_data_comma_t test_data_comma[] = {
280 : {"test,hallo", "- test\n- hallo\n" },
281 : {"test", "- test\n" },
282 : {"test,hallo,", "- test\n- hallo\n" },
283 : {"test , hallo ", "- test\n- hallo\n" },
284 : NULL
285 : };
286 :
287 :
288 :
289 :
290 :
291 :
292 4 : START_TEST(check_comma_sep_list)
293 : {
294 : //printf("%d: %s",_i,test_data_comma[_i].data);
295 4 : cJSON * test=comma_sep_list_2_json_array(test_data_comma[_i].data);
296 4 : cJSON* result=yaml_sting_2_cJSON (NULL ,test_data_comma[_i].result);
297 4 : int res=0;
298 4 : cJSON * wish=cJSON_GetArrayItem(result,0);
299 4 : int len_test=cJSON_GetArraySize(test);
300 4 : int len_result=cJSON_GetArraySize(wish);
301 4 : if (len_test!=len_result)
302 : {
303 :
304 : res=-1;
305 : }
306 : else
307 : {
308 : int j=0;
309 7 : for (j=0;j<len_result;j++)
310 : {
311 7 : const char * a=cJSON_GetArrayItem(wish, j)->valuestring;
312 7 : const char * b=cJSON_GetArrayItem(test, j)->valuestring;
313 7 : if(strcmp(a,b)!=0){
314 : res=-1;
315 : break;
316 : }
317 : }
318 : }
319 4 : cJSON_Delete(test);
320 4 : cJSON_Delete(result);
321 4 : ck_assert_int_eq(res, 0);
322 : }
323 4 : END_TEST
324 :
325 :
326 : void cb(void*a,char*path);
327 :
328 3 : void cb(void*a,char*path)
329 : {
330 3 : cJSON_AddItemToBeginArray((cJSON*)a, cJSON_CreateString(path));
331 3 : }
332 :
333 :
334 :
335 :
336 1 : START_TEST(check_recursive_dir)
337 : {
338 1 : cJSON* list=cJSON_CreateArray();
339 1 : cJSON* cblist=cJSON_CreateArray();
340 1 : cJSON* wish=cJSON_CreateArray();
341 1 : cJSON_AddItemToBeginArray(wish, cJSON_CreateString("/build"));
342 1 : cJSON_AddItemToBeginArray(wish, cJSON_CreateString("/build/test3"));
343 1 : cJSON_AddItemToBeginArray(wish, cJSON_CreateString("/build/test3/test31"));
344 1 : const char test[]="/build/test";
345 1 : size_t len=strlen(test);
346 1 : recursive_dir_extract(test, len, list, cb, cblist);
347 :
348 1 : const char test2[]="/build/test2";
349 1 : size_t len2=strlen(test2);
350 1 : recursive_dir_extract(test2, len2, list, cb, cblist);
351 :
352 1 : const char test3[]="/build/test3/test31/";
353 1 : size_t len3=strlen(test3);
354 1 : recursive_dir_extract(test3, len3, list, cb, cblist);
355 :
356 1 : const char test4[]="/build/test3/test55";
357 1 : size_t len4=strlen(test4);
358 1 : recursive_dir_extract(test4, len4, list, cb, cblist);
359 1 : int i=0;
360 1 : int res=0;
361 1 : int wlen=cJSON_GetArraySize(wish);
362 1 : int llen=cJSON_GetArraySize(list);
363 1 : int cblen=cJSON_GetArraySize(cblist);
364 4 : for (i=0;i<wlen;i++)
365 : {
366 3 : res+=strcmp(cJSON_GetArrayItem(wish, i)->valuestring,cJSON_GetArrayItem(list, i)->valuestring);
367 3 : res+=strcmp(cJSON_GetArrayItem(wish, i)->valuestring,cJSON_GetArrayItem(cblist, i)->valuestring);
368 : }
369 1 : cJSON_Delete(cblist);
370 1 : cJSON_Delete(list);
371 1 : ck_assert_int_eq(res, 0);
372 2 : ck_assert_int_eq(wlen, llen);
373 2 : ck_assert_int_eq(wlen, cblen);
374 : }
375 1 : END_TEST
376 :
377 : struct test_data_bool_t
378 : {
379 : char * data;
380 : int false_test;
381 : int true_test;
382 : } ;
383 :
384 : static const struct test_data_bool_t test_data_bool[14] = {
385 : {"true",0,1 },
386 : {"True",0,1 },
387 : {"on",0,1 },
388 : {"ON",0,1 },
389 : {"1",0,1 },
390 : {"YeS",0,1 },
391 : {"False",1,0 },
392 : {"FALSE",1,0 },
393 : {"0",1,0 },
394 : {"OFF",1,0 },
395 : {"no",1,0 },
396 : {"somethingelse",0,0 },
397 : {"",0,0 },
398 : {NULL,0,0}
399 : };
400 :
401 14 : START_TEST(check_bool)
402 : {
403 14 : if (test_data_bool[_i].data)
404 13 : setenv("mybooltest", test_data_bool[_i].data, 1);
405 : else
406 1 : unsetenv("mybooltest");
407 14 : ck_assert_int_eq(env_var_is_false("mybooltest"), test_data_bool[_i].false_test);
408 28 : ck_assert_int_eq(env_var_is_true("mybooltest"), test_data_bool[_i].true_test);
409 14 : unsetenv("mybooltest");
410 : }
411 14 : END_TEST
412 :
413 :
414 : struct test_data_resolve_t
415 : {
416 : char * data;
417 : char *result;
418 : } ;
419 :
420 : static const struct test_data_resolve_t test_data_resolve[5] = {
421 : {"t${test_var}", "ttestvar" },
422 : {"${unknown}", "" },
423 : { "$test_var","testvar"},
424 : { "$test_var;",NULL},
425 : { NULL,NULL}
426 : };
427 :
428 : int resolve_vars(char ** image,const cJSON * env_vars);
429 :
430 5 : START_TEST(check_resolve)
431 : {
432 5 : cJSON*env=cJSON_CreateObject();
433 5 : cJSON_add_string(env, "test_var", "testvar");
434 5 : char * rc=resolve_const_vars(test_data_resolve[_i].data, env);
435 5 : if (test_data_resolve[_i].result)
436 : {
437 3 : ck_assert_ptr_nonnull(rc);
438 6 : ck_assert_str_eq(rc, test_data_resolve[_i].result);
439 : }
440 : else
441 2 : ck_assert_ptr_null(rc);
442 5 : char *cc=NULL;
443 5 : if (test_data_resolve[_i].data)cc=strdup(test_data_resolve[_i].data);
444 5 : int rcc=resolve_vars(&cc, env);
445 5 : if (test_data_resolve[_i].result)
446 : {
447 3 : ck_assert_int_eq(0,rcc);
448 6 : ck_assert_ptr_nonnull(rc);
449 6 : ck_assert_str_eq(rc, test_data_resolve[_i].result);
450 : }
451 : else
452 : {
453 2 : ck_assert_int_ne(0,rcc);
454 4 : ck_assert_ptr_null(rc);
455 : }
456 5 : if (env) cJSON_Delete(env);
457 5 : if(rc) free(rc);
458 5 : if(cc) free(cc);
459 : }
460 5 : END_TEST
461 :
462 :
463 :
464 101 : Suite * specials_suite(void)
465 : {
466 : Suite *s;
467 : TCase *tc_core;
468 : //TCase *tc_progress;
469 101 : s = suite_create("test_error");
470 : /* Core test case */
471 101 : tc_core = tcase_create("Core");
472 : //tcase_add_checked_fixture(tc_core, setup, teardown);
473 101 : tcase_add_loop_test (tc_core, check_slugit,0,4);
474 101 : tcase_add_loop_test (tc_core, check_chop_ns, 0, 5);
475 101 : tcase_add_loop_test (tc_core, check_chop_image, 0, 38);
476 101 : tcase_add_loop_test (tc_core, check_process_nick, 0, 17);
477 101 : tcase_add_loop_test (tc_core, check_change_image_tag, 0, 12);
478 101 : tcase_add_loop_test (tc_core, check_comma_sep_list, 0, 4);
479 101 : tcase_add_test(tc_core, check_recursive_dir);
480 101 : tcase_add_loop_test (tc_core, check_bool,0,14);
481 101 : tcase_add_loop_test (tc_core, check_resolve,0,5);
482 101 : tcase_add_unchecked_fixture(tc_core, NULL, NULL);
483 101 : tcase_set_timeout(tc_core,15);
484 101 : suite_add_tcase(s, tc_core);
485 101 : return s;
486 : }
487 :
488 :
489 101 : int main(void)
490 : {
491 : int number_failed;
492 : Suite *s;
493 : SRunner *sr;
494 :
495 101 : s = specials_suite();
496 101 : sr = srunner_create(s);
497 101 : srunner_run_all(sr, CK_NORMAL);
498 1 : number_failed = srunner_ntests_failed(sr);
499 1 : srunner_free(sr);
500 1 : return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
501 : }
|