LCOV - code coverage report
Current view: top level - test - test-env-file.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 74 74 100.0 %
Date: 2019-08-23 13:36:53 Functions: 6 6 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 32 64 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include "env-file.h"
       4                 :            : #include "fd-util.h"
       5                 :            : #include "fs-util.h"
       6                 :            : #include "macro.h"
       7                 :            : #include "strv.h"
       8                 :            : #include "tests.h"
       9                 :            : #include "tmpfile-util.h"
      10                 :            : 
      11                 :            : #define env_file_1                              \
      12                 :            :         "a=a\n"                                 \
      13                 :            :         "b=b\\\n"                               \
      14                 :            :         "c\n"                                   \
      15                 :            :         "d=d\\\n"                               \
      16                 :            :         "e\\\n"                                 \
      17                 :            :         "f\n"                                   \
      18                 :            :         "g=g\\ \n"                              \
      19                 :            :         "h=h\n"                                 \
      20                 :            :         "i=i\\"
      21                 :            : 
      22                 :            : #define env_file_2                              \
      23                 :            :         "a=a\\\n"
      24                 :            : 
      25                 :            : #define env_file_3 \
      26                 :            :         "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \
      27                 :            :         "#--nouser-config                                     \\\n" \
      28                 :            :         "normal=line"
      29                 :            : 
      30                 :            : #define env_file_4 \
      31                 :            :        "# Generated\n" \
      32                 :            :        "\n" \
      33                 :            :        "HWMON_MODULES=\"coretemp f71882fg\"\n" \
      34                 :            :        "\n" \
      35                 :            :        "# For compatibility reasons\n" \
      36                 :            :        "\n" \
      37                 :            :        "MODULE_0=coretemp\n" \
      38                 :            :        "MODULE_1=f71882fg"
      39                 :            : 
      40                 :            : #define env_file_5                              \
      41                 :            :         "a=\n"                                 \
      42                 :            :         "b="
      43                 :            : 
      44                 :          4 : static void test_load_env_file_1(void) {
      45                 :          4 :         _cleanup_strv_free_ char **data = NULL;
      46                 :            :         int r;
      47                 :            : 
      48                 :          4 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      49                 :          4 :         _cleanup_close_ int fd;
      50                 :            : 
      51                 :          4 :         fd = mkostemp_safe(name);
      52         [ -  + ]:          4 :         assert_se(fd >= 0);
      53         [ -  + ]:          4 :         assert_se(write(fd, env_file_1, strlen(env_file_1)) == strlen(env_file_1));
      54                 :            : 
      55                 :          4 :         r = load_env_file(NULL, name, &data);
      56         [ -  + ]:          4 :         assert_se(r == 0);
      57         [ -  + ]:          4 :         assert_se(streq(data[0], "a=a"));
      58         [ -  + ]:          4 :         assert_se(streq(data[1], "b=bc"));
      59         [ -  + ]:          4 :         assert_se(streq(data[2], "d=def"));
      60         [ -  + ]:          4 :         assert_se(streq(data[3], "g=g "));
      61         [ -  + ]:          4 :         assert_se(streq(data[4], "h=h"));
      62         [ -  + ]:          4 :         assert_se(streq(data[5], "i=i"));
      63         [ -  + ]:          4 :         assert_se(data[6] == NULL);
      64                 :          4 : }
      65                 :            : 
      66                 :          4 : static void test_load_env_file_2(void) {
      67                 :          4 :         _cleanup_strv_free_ char **data = NULL;
      68                 :            :         int r;
      69                 :            : 
      70                 :          4 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      71                 :          4 :         _cleanup_close_ int fd;
      72                 :            : 
      73                 :          4 :         fd = mkostemp_safe(name);
      74         [ -  + ]:          4 :         assert_se(fd >= 0);
      75         [ -  + ]:          4 :         assert_se(write(fd, env_file_2, strlen(env_file_2)) == strlen(env_file_2));
      76                 :            : 
      77                 :          4 :         r = load_env_file(NULL, name, &data);
      78         [ -  + ]:          4 :         assert_se(r == 0);
      79         [ -  + ]:          4 :         assert_se(streq(data[0], "a=a"));
      80         [ -  + ]:          4 :         assert_se(data[1] == NULL);
      81                 :          4 : }
      82                 :            : 
      83                 :          4 : static void test_load_env_file_3(void) {
      84                 :          4 :         _cleanup_strv_free_ char **data = NULL;
      85                 :            :         int r;
      86                 :            : 
      87                 :          4 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      88                 :          4 :         _cleanup_close_ int fd;
      89                 :            : 
      90                 :          4 :         fd = mkostemp_safe(name);
      91         [ -  + ]:          4 :         assert_se(fd >= 0);
      92         [ -  + ]:          4 :         assert_se(write(fd, env_file_3, strlen(env_file_3)) == strlen(env_file_3));
      93                 :            : 
      94                 :          4 :         r = load_env_file(NULL, name, &data);
      95         [ -  + ]:          4 :         assert_se(r == 0);
      96         [ -  + ]:          4 :         assert_se(data == NULL);
      97                 :          4 : }
      98                 :            : 
      99                 :          4 : static void test_load_env_file_4(void) {
     100                 :          4 :         _cleanup_strv_free_ char **data = NULL;
     101                 :          4 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
     102                 :          4 :         _cleanup_close_ int fd;
     103                 :            :         int r;
     104                 :            : 
     105                 :          4 :         fd = mkostemp_safe(name);
     106         [ -  + ]:          4 :         assert_se(fd >= 0);
     107         [ -  + ]:          4 :         assert_se(write(fd, env_file_4, strlen(env_file_4)) == strlen(env_file_4));
     108                 :            : 
     109                 :          4 :         r = load_env_file(NULL, name, &data);
     110         [ -  + ]:          4 :         assert_se(r == 0);
     111         [ -  + ]:          4 :         assert_se(streq(data[0], "HWMON_MODULES=coretemp f71882fg"));
     112         [ -  + ]:          4 :         assert_se(streq(data[1], "MODULE_0=coretemp"));
     113         [ -  + ]:          4 :         assert_se(streq(data[2], "MODULE_1=f71882fg"));
     114         [ -  + ]:          4 :         assert_se(data[3] == NULL);
     115                 :          4 : }
     116                 :            : 
     117                 :          4 : static void test_load_env_file_5(void) {
     118                 :          4 :         _cleanup_strv_free_ char **data = NULL;
     119                 :            :         int r;
     120                 :            : 
     121                 :          4 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
     122                 :          4 :         _cleanup_close_ int fd;
     123                 :            : 
     124                 :          4 :         fd = mkostemp_safe(name);
     125         [ -  + ]:          4 :         assert_se(fd >= 0);
     126         [ -  + ]:          4 :         assert_se(write(fd, env_file_5, strlen(env_file_5)) == strlen(env_file_5));
     127                 :            : 
     128                 :          4 :         r = load_env_file(NULL, name, &data);
     129         [ -  + ]:          4 :         assert_se(r == 0);
     130         [ -  + ]:          4 :         assert_se(streq(data[0], "a="));
     131         [ -  + ]:          4 :         assert_se(streq(data[1], "b="));
     132         [ -  + ]:          4 :         assert_se(data[2] == NULL);
     133                 :          4 : }
     134                 :            : 
     135                 :          4 : int main(int argc, char *argv[]) {
     136                 :          4 :         test_setup_logging(LOG_INFO);
     137                 :            : 
     138                 :          4 :         test_load_env_file_1();
     139                 :          4 :         test_load_env_file_2();
     140                 :          4 :         test_load_env_file_3();
     141                 :          4 :         test_load_env_file_4();
     142                 :          4 :         test_load_env_file_5();
     143                 :            : }

Generated by: LCOV version 1.14