LCOV - code coverage report
Current view: top level - tests - test_specials.c (source / functions) Hit Total Coverage
Test: oc-runner-0.0.51.5.29c69 Code Coverage Lines: 174 174 100.0 %
Date: 2018-10-15 12:44:38 Functions: 12 12 100.0 %
Legend: Lines: hit not hit

          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, &registry, &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             : }

Generated by: LCOV version 1.13