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