]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-install.c
license: LGPL-2.1+ -> LGPL-2.1-or-later
[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
LP
8
9static void dump_changes(UnitFileChange *c, unsigned n) {
10 unsigned i;
11
bdf7026e 12 assert_se(n == 0 || c);
83096483
LP
13
14 for (i = 0; i < n; i++) {
15 if (c[i].type == UNIT_FILE_UNLINK)
16 printf("rm '%s'\n", c[i].path);
17 else if (c[i].type == UNIT_FILE_SYMLINK)
18 printf("ln -s '%s' '%s'\n", c[i].source, c[i].path);
19 }
20}
21
22int main(int argc, char* argv[]) {
23 Hashmap *h;
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 };
28 UnitFileChange *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
d5099efc 34 h = hashmap_new(&string_hash_ops);
313fe66f 35 r = unit_file_get_list(UNIT_FILE_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
0ec0deaa 41 r = unit_file_get_state(UNIT_FILE_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
51 unit_file_list_free(h);
52
596fc263 53 log_info("/*** enable **/");
83096483 54
b3796dd8 55 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
56 assert_se(r >= 0);
57
596fc263 58 log_info("/*** enable2 **/");
83096483 59
b3796dd8 60 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
61 assert_se(r >= 0);
62
63 dump_changes(changes, n_changes);
64 unit_file_changes_free(changes, n_changes);
65
0ec0deaa
LP
66 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
67 assert_se(r >= 0);
68 assert_se(state == UNIT_FILE_ENABLED);
83096483 69
596fc263 70 log_info("/*** disable ***/");
83096483
LP
71 changes = NULL;
72 n_changes = 0;
73
b3796dd8 74 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
75 assert_se(r >= 0);
76
77 dump_changes(changes, n_changes);
78 unit_file_changes_free(changes, n_changes);
79
0ec0deaa
LP
80 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
81 assert_se(r >= 0);
82 assert_se(state == UNIT_FILE_DISABLED);
83096483 83
596fc263 84 log_info("/*** mask ***/");
83096483
LP
85 changes = NULL;
86 n_changes = 0;
87
b3796dd8 88 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 89 assert_se(r >= 0);
596fc263 90 log_info("/*** mask2 ***/");
b3796dd8 91 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
92 assert_se(r >= 0);
93
94 dump_changes(changes, n_changes);
95 unit_file_changes_free(changes, n_changes);
96
0ec0deaa
LP
97 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
98 assert_se(r >= 0);
99 assert_se(state == UNIT_FILE_MASKED);
83096483 100
596fc263 101 log_info("/*** unmask ***/");
83096483
LP
102 changes = NULL;
103 n_changes = 0;
104
b3796dd8 105 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 106 assert_se(r >= 0);
596fc263 107 log_info("/*** unmask2 ***/");
b3796dd8 108 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
109 assert_se(r >= 0);
110
111 dump_changes(changes, n_changes);
112 unit_file_changes_free(changes, n_changes);
113
0ec0deaa
LP
114 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
115 assert_se(r >= 0);
116 assert_se(state == UNIT_FILE_DISABLED);
83096483 117
596fc263 118 log_info("/*** mask ***/");
83096483
LP
119 changes = NULL;
120 n_changes = 0;
121
b3796dd8 122 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
123 assert_se(r >= 0);
124
125 dump_changes(changes, n_changes);
126 unit_file_changes_free(changes, n_changes);
127
0ec0deaa
LP
128 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
129 assert_se(r >= 0);
130 assert_se(state == UNIT_FILE_MASKED);
83096483 131
596fc263 132 log_info("/*** disable ***/");
83096483
LP
133 changes = NULL;
134 n_changes = 0;
135
b3796dd8 136 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 137 assert_se(r >= 0);
596fc263 138 log_info("/*** disable2 ***/");
b3796dd8 139 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
140 assert_se(r >= 0);
141
142 dump_changes(changes, n_changes);
143 unit_file_changes_free(changes, n_changes);
144
0ec0deaa
LP
145 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
146 assert_se(r >= 0);
147 assert_se(state == UNIT_FILE_MASKED);
83096483 148
596fc263 149 log_info("/*** umask ***/");
83096483
LP
150 changes = NULL;
151 n_changes = 0;
152
b3796dd8 153 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
154 assert_se(r >= 0);
155
156 dump_changes(changes, n_changes);
157 unit_file_changes_free(changes, n_changes);
158
0ec0deaa
LP
159 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
160 assert_se(r >= 0);
161 assert_se(state == UNIT_FILE_DISABLED);
83096483 162
596fc263 163 log_info("/*** enable files2 ***/");
83096483
LP
164 changes = NULL;
165 n_changes = 0;
166
b3796dd8 167 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
168 assert_se(r >= 0);
169
170 dump_changes(changes, n_changes);
171 unit_file_changes_free(changes, n_changes);
172
0ec0deaa
LP
173 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
174 assert_se(r >= 0);
175 assert_se(state == UNIT_FILE_ENABLED);
83096483 176
596fc263 177 log_info("/*** disable files2 ***/");
83096483
LP
178 changes = NULL;
179 n_changes = 0;
180
b3796dd8 181 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
182 assert_se(r >= 0);
183
184 dump_changes(changes, n_changes);
185 unit_file_changes_free(changes, n_changes);
186
0ec0deaa
LP
187 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
188 assert_se(r < 0);
83096483 189
596fc263 190 log_info("/*** link files2 ***/");
83096483
LP
191 changes = NULL;
192 n_changes = 0;
193
b3796dd8 194 r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
195 assert_se(r >= 0);
196
197 dump_changes(changes, n_changes);
198 unit_file_changes_free(changes, n_changes);
199
0ec0deaa
LP
200 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
201 assert_se(r >= 0);
202 assert_se(state == UNIT_FILE_LINKED);
83096483 203
596fc263 204 log_info("/*** disable files2 ***/");
83096483
LP
205 changes = NULL;
206 n_changes = 0;
207
b3796dd8 208 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
209 assert_se(r >= 0);
210
211 dump_changes(changes, n_changes);
212 unit_file_changes_free(changes, n_changes);
213
0ec0deaa
LP
214 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
215 assert_se(r < 0);
83096483 216
596fc263 217 log_info("/*** link files2 ***/");
83096483
LP
218 changes = NULL;
219 n_changes = 0;
220
b3796dd8 221 r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
222 assert_se(r >= 0);
223
224 dump_changes(changes, n_changes);
225 unit_file_changes_free(changes, n_changes);
226
0ec0deaa
LP
227 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
228 assert_se(r >= 0);
229 assert_se(state == UNIT_FILE_LINKED);
83096483 230
596fc263 231 log_info("/*** reenable files2 ***/");
83096483
LP
232 changes = NULL;
233 n_changes = 0;
234
b3796dd8 235 r = unit_file_reenable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
236 assert_se(r >= 0);
237
238 dump_changes(changes, n_changes);
239 unit_file_changes_free(changes, n_changes);
240
0ec0deaa
LP
241 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
242 assert_se(r >= 0);
243 assert_se(state == UNIT_FILE_ENABLED);
83096483 244
596fc263 245 log_info("/*** disable files2 ***/");
83096483
LP
246 changes = NULL;
247 n_changes = 0;
248
b3796dd8 249 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
250 assert_se(r >= 0);
251
252 dump_changes(changes, n_changes);
253 unit_file_changes_free(changes, n_changes);
254
0ec0deaa
LP
255 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
256 assert_se(r < 0);
596fc263 257 log_info("/*** preset files ***/");
83096483
LP
258 changes = NULL;
259 n_changes = 0;
260
b3796dd8 261 r = unit_file_preset(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes);
83096483
LP
262 assert_se(r >= 0);
263
264 dump_changes(changes, n_changes);
265 unit_file_changes_free(changes, n_changes);
266
0ec0deaa
LP
267 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files[0]), &state);
268 assert_se(r >= 0);
269 assert_se(state == UNIT_FILE_ENABLED);
83096483
LP
270
271 return 0;
272}