]>
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 | 8 | |
cd44ec5a | 9 | static 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 | ||
22 | int 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 | } |