LCOV - code coverage report
Current view: top level - test - test-install.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 0 184 0.0 %
Date: 2019-08-23 13:36:53 Functions: 0 2 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 152 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include <stdio.h>
       4                 :            : #include <string.h>
       5                 :            : 
       6                 :            : #include "install.h"
       7                 :            : #include "tests.h"
       8                 :            : 
       9                 :          0 : static void dump_changes(UnitFileChange *c, unsigned n) {
      10                 :            :         unsigned i;
      11                 :            : 
      12   [ #  #  #  # ]:          0 :         assert_se(n == 0 || c);
      13                 :            : 
      14         [ #  # ]:          0 :         for (i = 0; i < n; i++) {
      15         [ #  # ]:          0 :                 if (c[i].type == UNIT_FILE_UNLINK)
      16                 :          0 :                         printf("rm '%s'\n", c[i].path);
      17         [ #  # ]:          0 :                 else if (c[i].type == UNIT_FILE_SYMLINK)
      18                 :          0 :                         printf("ln -s '%s' '%s'\n", c[i].source, c[i].path);
      19                 :            :         }
      20                 :          0 : }
      21                 :            : 
      22                 :          0 : int main(int argc, char* argv[]) {
      23                 :            :         Hashmap *h;
      24                 :            :         UnitFileList *p;
      25                 :            :         Iterator i;
      26                 :            :         int r;
      27                 :          0 :         const char *const files[] = { "avahi-daemon.service", NULL };
      28                 :          0 :         const char *const files2[] = { "/home/lennart/test.service", NULL };
      29                 :          0 :         UnitFileChange *changes = NULL;
      30                 :          0 :         size_t n_changes = 0;
      31                 :          0 :         UnitFileState state = 0;
      32                 :            : 
      33                 :          0 :         test_setup_logging(LOG_DEBUG);
      34                 :            : 
      35                 :          0 :         h = hashmap_new(&string_hash_ops);
      36                 :          0 :         r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL);
      37         [ #  # ]:          0 :         assert_se(r == 0);
      38                 :            : 
      39         [ #  # ]:          0 :         HASHMAP_FOREACH(p, h, i) {
      40                 :          0 :                 UnitFileState s = _UNIT_FILE_STATE_INVALID;
      41                 :            : 
      42                 :          0 :                 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(p->path), &s);
      43                 :            : 
      44   [ #  #  #  #  :          0 :                 assert_se((r < 0 && p->state == UNIT_FILE_BAD) ||
             #  #  #  # ]
      45                 :            :                           (p->state == s));
      46                 :            : 
      47                 :          0 :                 fprintf(stderr, "%s (%s)\n",
      48                 :          0 :                         p->path,
      49                 :          0 :                         unit_file_state_to_string(p->state));
      50                 :            :         }
      51                 :            : 
      52                 :          0 :         unit_file_list_free(h);
      53                 :            : 
      54         [ #  # ]:          0 :         log_info("/*** enable **/");
      55                 :            : 
      56                 :          0 :         r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
      57         [ #  # ]:          0 :         assert_se(r >= 0);
      58                 :            : 
      59         [ #  # ]:          0 :         log_info("/*** enable2 **/");
      60                 :            : 
      61                 :          0 :         r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
      62         [ #  # ]:          0 :         assert_se(r >= 0);
      63                 :            : 
      64                 :          0 :         dump_changes(changes, n_changes);
      65                 :          0 :         unit_file_changes_free(changes, n_changes);
      66                 :            : 
      67                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
      68         [ #  # ]:          0 :         assert_se(r >= 0);
      69         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_ENABLED);
      70                 :            : 
      71         [ #  # ]:          0 :         log_info("/*** disable ***/");
      72                 :          0 :         changes = NULL;
      73                 :          0 :         n_changes = 0;
      74                 :            : 
      75                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
      76         [ #  # ]:          0 :         assert_se(r >= 0);
      77                 :            : 
      78                 :          0 :         dump_changes(changes, n_changes);
      79                 :          0 :         unit_file_changes_free(changes, n_changes);
      80                 :            : 
      81                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
      82         [ #  # ]:          0 :         assert_se(r >= 0);
      83         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_DISABLED);
      84                 :            : 
      85         [ #  # ]:          0 :         log_info("/*** mask ***/");
      86                 :          0 :         changes = NULL;
      87                 :          0 :         n_changes = 0;
      88                 :            : 
      89                 :          0 :         r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
      90         [ #  # ]:          0 :         assert_se(r >= 0);
      91         [ #  # ]:          0 :         log_info("/*** mask2 ***/");
      92                 :          0 :         r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
      93         [ #  # ]:          0 :         assert_se(r >= 0);
      94                 :            : 
      95                 :          0 :         dump_changes(changes, n_changes);
      96                 :          0 :         unit_file_changes_free(changes, n_changes);
      97                 :            : 
      98                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
      99         [ #  # ]:          0 :         assert_se(r >= 0);
     100         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_MASKED);
     101                 :            : 
     102         [ #  # ]:          0 :         log_info("/*** unmask ***/");
     103                 :          0 :         changes = NULL;
     104                 :          0 :         n_changes = 0;
     105                 :            : 
     106                 :          0 :         r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     107         [ #  # ]:          0 :         assert_se(r >= 0);
     108         [ #  # ]:          0 :         log_info("/*** unmask2 ***/");
     109                 :          0 :         r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     110         [ #  # ]:          0 :         assert_se(r >= 0);
     111                 :            : 
     112                 :          0 :         dump_changes(changes, n_changes);
     113                 :          0 :         unit_file_changes_free(changes, n_changes);
     114                 :            : 
     115                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
     116         [ #  # ]:          0 :         assert_se(r >= 0);
     117         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_DISABLED);
     118                 :            : 
     119         [ #  # ]:          0 :         log_info("/*** mask ***/");
     120                 :          0 :         changes = NULL;
     121                 :          0 :         n_changes = 0;
     122                 :            : 
     123                 :          0 :         r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     124         [ #  # ]:          0 :         assert_se(r >= 0);
     125                 :            : 
     126                 :          0 :         dump_changes(changes, n_changes);
     127                 :          0 :         unit_file_changes_free(changes, n_changes);
     128                 :            : 
     129                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
     130         [ #  # ]:          0 :         assert_se(r >= 0);
     131         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_MASKED);
     132                 :            : 
     133         [ #  # ]:          0 :         log_info("/*** disable ***/");
     134                 :          0 :         changes = NULL;
     135                 :          0 :         n_changes = 0;
     136                 :            : 
     137                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     138         [ #  # ]:          0 :         assert_se(r >= 0);
     139         [ #  # ]:          0 :         log_info("/*** disable2 ***/");
     140                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     141         [ #  # ]:          0 :         assert_se(r >= 0);
     142                 :            : 
     143                 :          0 :         dump_changes(changes, n_changes);
     144                 :          0 :         unit_file_changes_free(changes, n_changes);
     145                 :            : 
     146                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
     147         [ #  # ]:          0 :         assert_se(r >= 0);
     148         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_MASKED);
     149                 :            : 
     150         [ #  # ]:          0 :         log_info("/*** umask ***/");
     151                 :          0 :         changes = NULL;
     152                 :          0 :         n_changes = 0;
     153                 :            : 
     154                 :          0 :         r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
     155         [ #  # ]:          0 :         assert_se(r >= 0);
     156                 :            : 
     157                 :          0 :         dump_changes(changes, n_changes);
     158                 :          0 :         unit_file_changes_free(changes, n_changes);
     159                 :            : 
     160                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
     161         [ #  # ]:          0 :         assert_se(r >= 0);
     162         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_DISABLED);
     163                 :            : 
     164         [ #  # ]:          0 :         log_info("/*** enable files2 ***/");
     165                 :          0 :         changes = NULL;
     166                 :          0 :         n_changes = 0;
     167                 :            : 
     168                 :          0 :         r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
     169         [ #  # ]:          0 :         assert_se(r >= 0);
     170                 :            : 
     171                 :          0 :         dump_changes(changes, n_changes);
     172                 :          0 :         unit_file_changes_free(changes, n_changes);
     173                 :            : 
     174                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     175         [ #  # ]:          0 :         assert_se(r >= 0);
     176         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_ENABLED);
     177                 :            : 
     178         [ #  # ]:          0 :         log_info("/*** disable files2 ***/");
     179                 :          0 :         changes = NULL;
     180                 :          0 :         n_changes = 0;
     181                 :            : 
     182                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
     183         [ #  # ]:          0 :         assert_se(r >= 0);
     184                 :            : 
     185                 :          0 :         dump_changes(changes, n_changes);
     186                 :          0 :         unit_file_changes_free(changes, n_changes);
     187                 :            : 
     188                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     189         [ #  # ]:          0 :         assert_se(r < 0);
     190                 :            : 
     191         [ #  # ]:          0 :         log_info("/*** link files2 ***/");
     192                 :          0 :         changes = NULL;
     193                 :          0 :         n_changes = 0;
     194                 :            : 
     195                 :          0 :         r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
     196         [ #  # ]:          0 :         assert_se(r >= 0);
     197                 :            : 
     198                 :          0 :         dump_changes(changes, n_changes);
     199                 :          0 :         unit_file_changes_free(changes, n_changes);
     200                 :            : 
     201                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     202         [ #  # ]:          0 :         assert_se(r >= 0);
     203         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_LINKED);
     204                 :            : 
     205         [ #  # ]:          0 :         log_info("/*** disable files2 ***/");
     206                 :          0 :         changes = NULL;
     207                 :          0 :         n_changes = 0;
     208                 :            : 
     209                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
     210         [ #  # ]:          0 :         assert_se(r >= 0);
     211                 :            : 
     212                 :          0 :         dump_changes(changes, n_changes);
     213                 :          0 :         unit_file_changes_free(changes, n_changes);
     214                 :            : 
     215                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     216         [ #  # ]:          0 :         assert_se(r < 0);
     217                 :            : 
     218         [ #  # ]:          0 :         log_info("/*** link files2 ***/");
     219                 :          0 :         changes = NULL;
     220                 :          0 :         n_changes = 0;
     221                 :            : 
     222                 :          0 :         r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
     223         [ #  # ]:          0 :         assert_se(r >= 0);
     224                 :            : 
     225                 :          0 :         dump_changes(changes, n_changes);
     226                 :          0 :         unit_file_changes_free(changes, n_changes);
     227                 :            : 
     228                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     229         [ #  # ]:          0 :         assert_se(r >= 0);
     230         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_LINKED);
     231                 :            : 
     232         [ #  # ]:          0 :         log_info("/*** reenable files2 ***/");
     233                 :          0 :         changes = NULL;
     234                 :          0 :         n_changes = 0;
     235                 :            : 
     236                 :          0 :         r = unit_file_reenable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
     237         [ #  # ]:          0 :         assert_se(r >= 0);
     238                 :            : 
     239                 :          0 :         dump_changes(changes, n_changes);
     240                 :          0 :         unit_file_changes_free(changes, n_changes);
     241                 :            : 
     242                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     243         [ #  # ]:          0 :         assert_se(r >= 0);
     244         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_ENABLED);
     245                 :            : 
     246         [ #  # ]:          0 :         log_info("/*** disable files2 ***/");
     247                 :          0 :         changes = NULL;
     248                 :          0 :         n_changes = 0;
     249                 :            : 
     250                 :          0 :         r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
     251         [ #  # ]:          0 :         assert_se(r >= 0);
     252                 :            : 
     253                 :          0 :         dump_changes(changes, n_changes);
     254                 :          0 :         unit_file_changes_free(changes, n_changes);
     255                 :            : 
     256                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
     257         [ #  # ]:          0 :         assert_se(r < 0);
     258         [ #  # ]:          0 :         log_info("/*** preset files ***/");
     259                 :          0 :         changes = NULL;
     260                 :          0 :         n_changes = 0;
     261                 :            : 
     262                 :          0 :         r = unit_file_preset(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes);
     263         [ #  # ]:          0 :         assert_se(r >= 0);
     264                 :            : 
     265                 :          0 :         dump_changes(changes, n_changes);
     266                 :          0 :         unit_file_changes_free(changes, n_changes);
     267                 :            : 
     268                 :          0 :         r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files[0]), &state);
     269         [ #  # ]:          0 :         assert_se(r >= 0);
     270         [ #  # ]:          0 :         assert_se(state == UNIT_FILE_ENABLED);
     271                 :            : 
     272                 :          0 :         return 0;
     273                 :            : }

Generated by: LCOV version 1.14