LCOV - code coverage report
Current view: top level - test - test-env-file.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 74 74 100.0 %
Date: 2019-08-22 15:41:25 Functions: 6 6 100.0 %

          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           1 : static void test_load_env_file_1(void) {
      45           1 :         _cleanup_strv_free_ char **data = NULL;
      46             :         int r;
      47             : 
      48           1 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      49           1 :         _cleanup_close_ int fd;
      50             : 
      51           1 :         fd = mkostemp_safe(name);
      52           1 :         assert_se(fd >= 0);
      53           1 :         assert_se(write(fd, env_file_1, strlen(env_file_1)) == strlen(env_file_1));
      54             : 
      55           1 :         r = load_env_file(NULL, name, &data);
      56           1 :         assert_se(r == 0);
      57           1 :         assert_se(streq(data[0], "a=a"));
      58           1 :         assert_se(streq(data[1], "b=bc"));
      59           1 :         assert_se(streq(data[2], "d=def"));
      60           1 :         assert_se(streq(data[3], "g=g "));
      61           1 :         assert_se(streq(data[4], "h=h"));
      62           1 :         assert_se(streq(data[5], "i=i"));
      63           1 :         assert_se(data[6] == NULL);
      64           1 : }
      65             : 
      66           1 : static void test_load_env_file_2(void) {
      67           1 :         _cleanup_strv_free_ char **data = NULL;
      68             :         int r;
      69             : 
      70           1 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      71           1 :         _cleanup_close_ int fd;
      72             : 
      73           1 :         fd = mkostemp_safe(name);
      74           1 :         assert_se(fd >= 0);
      75           1 :         assert_se(write(fd, env_file_2, strlen(env_file_2)) == strlen(env_file_2));
      76             : 
      77           1 :         r = load_env_file(NULL, name, &data);
      78           1 :         assert_se(r == 0);
      79           1 :         assert_se(streq(data[0], "a=a"));
      80           1 :         assert_se(data[1] == NULL);
      81           1 : }
      82             : 
      83           1 : static void test_load_env_file_3(void) {
      84           1 :         _cleanup_strv_free_ char **data = NULL;
      85             :         int r;
      86             : 
      87           1 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
      88           1 :         _cleanup_close_ int fd;
      89             : 
      90           1 :         fd = mkostemp_safe(name);
      91           1 :         assert_se(fd >= 0);
      92           1 :         assert_se(write(fd, env_file_3, strlen(env_file_3)) == strlen(env_file_3));
      93             : 
      94           1 :         r = load_env_file(NULL, name, &data);
      95           1 :         assert_se(r == 0);
      96           1 :         assert_se(data == NULL);
      97           1 : }
      98             : 
      99           1 : static void test_load_env_file_4(void) {
     100           1 :         _cleanup_strv_free_ char **data = NULL;
     101           1 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
     102           1 :         _cleanup_close_ int fd;
     103             :         int r;
     104             : 
     105           1 :         fd = mkostemp_safe(name);
     106           1 :         assert_se(fd >= 0);
     107           1 :         assert_se(write(fd, env_file_4, strlen(env_file_4)) == strlen(env_file_4));
     108             : 
     109           1 :         r = load_env_file(NULL, name, &data);
     110           1 :         assert_se(r == 0);
     111           1 :         assert_se(streq(data[0], "HWMON_MODULES=coretemp f71882fg"));
     112           1 :         assert_se(streq(data[1], "MODULE_0=coretemp"));
     113           1 :         assert_se(streq(data[2], "MODULE_1=f71882fg"));
     114           1 :         assert_se(data[3] == NULL);
     115           1 : }
     116             : 
     117           1 : static void test_load_env_file_5(void) {
     118           1 :         _cleanup_strv_free_ char **data = NULL;
     119             :         int r;
     120             : 
     121           1 :         _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
     122           1 :         _cleanup_close_ int fd;
     123             : 
     124           1 :         fd = mkostemp_safe(name);
     125           1 :         assert_se(fd >= 0);
     126           1 :         assert_se(write(fd, env_file_5, strlen(env_file_5)) == strlen(env_file_5));
     127             : 
     128           1 :         r = load_env_file(NULL, name, &data);
     129           1 :         assert_se(r == 0);
     130           1 :         assert_se(streq(data[0], "a="));
     131           1 :         assert_se(streq(data[1], "b="));
     132           1 :         assert_se(data[2] == NULL);
     133           1 : }
     134             : 
     135           1 : int main(int argc, char *argv[]) {
     136           1 :         test_setup_logging(LOG_INFO);
     137             : 
     138           1 :         test_load_env_file_1();
     139           1 :         test_load_env_file_2();
     140           1 :         test_load_env_file_3();
     141           1 :         test_load_env_file_4();
     142           1 :         test_load_env_file_5();
     143             : }

Generated by: LCOV version 1.14