LCOV - code coverage report
Current view: top level - test - test-sd-hwdb.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 36 38 94.7 %
Date: 2019-08-23 13:36:53 Functions: 3 3 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 23 42 54.8 %

           Branch data     Line data    Source code
       1                 :            : #include "sd-hwdb.h"
       2                 :            : 
       3                 :            : #include "alloc-util.h"
       4                 :            : #include "errno.h"
       5                 :            : #include "tests.h"
       6                 :            : 
       7                 :          4 : static int test_failed_enumerate(void) {
       8                 :          4 :         _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL;
       9                 :            :         const char *key, *value;
      10                 :            :         int r;
      11                 :            : 
      12         [ +  - ]:          4 :         log_info("/* %s */", __func__);
      13                 :            : 
      14                 :          4 :         r = sd_hwdb_new(&hwdb);
      15         [ -  + ]:          4 :         if (r == -ENOENT)
      16                 :          0 :                 return r;
      17         [ -  + ]:          4 :         assert_se(r == 0);
      18                 :            : 
      19         [ -  + ]:          4 :         assert_se(sd_hwdb_seek(hwdb, "no-such-modalias-should-exist") == 0);
      20                 :            : 
      21         [ -  + ]:          4 :         assert_se(sd_hwdb_enumerate(hwdb, &key, &value) == 0);
      22         [ -  + ]:          4 :         assert_se(sd_hwdb_enumerate(hwdb, &key, NULL) == -EINVAL);
      23         [ -  + ]:          4 :         assert_se(sd_hwdb_enumerate(hwdb, NULL, &value) == -EINVAL);
      24                 :            : 
      25                 :          4 :         return 0;
      26                 :            : }
      27                 :            : 
      28                 :            : #define DELL_MODALIAS \
      29                 :            :         "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY"
      30                 :            : 
      31                 :          4 : static void test_basic_enumerate(void) {
      32                 :          4 :         _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL;
      33                 :            :         const char *key, *value;
      34                 :          4 :         size_t len1 = 0, len2 = 0;
      35                 :            :         int r;
      36                 :            : 
      37         [ +  - ]:          4 :         log_info("/* %s */", __func__);
      38                 :            : 
      39         [ -  + ]:          4 :         assert_se(sd_hwdb_new(&hwdb) == 0);
      40                 :            : 
      41         [ -  + ]:          4 :         assert_se(sd_hwdb_seek(hwdb, DELL_MODALIAS) == 0);
      42                 :            : 
      43                 :            :         for (;;) {
      44                 :        120 :                 r = sd_hwdb_enumerate(hwdb, &key, &value);
      45   [ +  -  -  + ]:        120 :                 assert(IN_SET(r, 0, 1));
      46         [ +  + ]:        120 :                 if (r == 0)
      47                 :          4 :                         break;
      48         [ -  + ]:        116 :                 assert(key);
      49         [ -  + ]:        116 :                 assert(value);
      50         [ +  - ]:        116 :                 log_debug("A: \"%s\" → \"%s\"", key, value);
      51                 :        116 :                 len1 += strlen(key) + strlen(value);
      52                 :            :         }
      53                 :            : 
      54   [ +  -  +  + ]:        120 :         SD_HWDB_FOREACH_PROPERTY(hwdb, DELL_MODALIAS, key, value) {
      55         [ +  - ]:        116 :                 log_debug("B: \"%s\" → \"%s\"", key, value);
      56                 :        116 :                 len2 += strlen(key) + strlen(value);
      57                 :            :         }
      58                 :            : 
      59         [ -  + ]:          4 :         assert_se(len1 == len2);
      60                 :          4 : }
      61                 :            : 
      62                 :          4 : int main(int argc, char *argv[]) {
      63                 :            :         int r;
      64                 :            : 
      65                 :          4 :         test_setup_logging(LOG_DEBUG);
      66                 :            : 
      67                 :          4 :         r = test_failed_enumerate();
      68         [ -  + ]:          4 :         if (r < 0)
      69                 :          0 :                 return log_tests_skipped_errno(r, "cannot open hwdb");
      70                 :            : 
      71                 :          4 :         test_basic_enumerate();
      72                 :            : 
      73                 :          4 :         return 0;
      74                 :            : }

Generated by: LCOV version 1.14