]>
Commit | Line | Data |
---|---|---|
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 | |
9 | static 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 | ||
22 | int 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 | } |