]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-install.c
Add SPDX license identifiers to source files under the LGPL
[thirdparty/systemd.git] / src / test / test-install.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
83096483
LP
2/***
3 This file is part of systemd.
4
5 Copyright 2011 Lennart Poettering
6
7 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
8 under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or
83096483
LP
10 (at your option) any later version.
11
12 systemd is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 15 Lesser General Public License for more details.
83096483 16
5430f7f2 17 You should have received a copy of the GNU Lesser General Public License
83096483
LP
18 along with systemd; If not, see <http://www.gnu.org/licenses/>.
19***/
20
83096483 21#include <stdio.h>
cf0fbc49 22#include <string.h>
83096483 23
83096483
LP
24#include "install.h"
25
26static void dump_changes(UnitFileChange *c, unsigned n) {
27 unsigned i;
28
bdf7026e 29 assert_se(n == 0 || c);
83096483
LP
30
31 for (i = 0; i < n; i++) {
32 if (c[i].type == UNIT_FILE_UNLINK)
33 printf("rm '%s'\n", c[i].path);
34 else if (c[i].type == UNIT_FILE_SYMLINK)
35 printf("ln -s '%s' '%s'\n", c[i].source, c[i].path);
36 }
37}
38
39int main(int argc, char* argv[]) {
40 Hashmap *h;
41 UnitFileList *p;
42 Iterator i;
43 int r;
44 const char *const files[] = { "avahi-daemon.service", NULL };
45 const char *const files2[] = { "/home/lennart/test.service", NULL };
46 UnitFileChange *changes = NULL;
47 unsigned n_changes = 0;
0ec0deaa 48 UnitFileState state = 0;
83096483 49
596fc263
ZJS
50 log_set_max_level(LOG_DEBUG);
51 log_parse_environment();
52
d5099efc 53 h = hashmap_new(&string_hash_ops);
313fe66f 54 r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL);
83096483
LP
55 assert_se(r == 0);
56
57 HASHMAP_FOREACH(p, h, i) {
0ec0deaa 58 UnitFileState s = _UNIT_FILE_STATE_INVALID;
83096483 59
0ec0deaa 60 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(p->path), &s);
83096483 61
0ec0deaa
LP
62 assert_se((r < 0 && p->state == UNIT_FILE_BAD) ||
63 (p->state == s));
83096483
LP
64
65 fprintf(stderr, "%s (%s)\n",
66 p->path,
67 unit_file_state_to_string(p->state));
68 }
69
70 unit_file_list_free(h);
71
596fc263 72 log_info("/*** enable **/");
83096483 73
b3796dd8 74 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
75 assert_se(r >= 0);
76
596fc263 77 log_info("/*** enable2 **/");
83096483 78
b3796dd8 79 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
80 assert_se(r >= 0);
81
82 dump_changes(changes, n_changes);
83 unit_file_changes_free(changes, n_changes);
84
0ec0deaa
LP
85 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
86 assert_se(r >= 0);
87 assert_se(state == UNIT_FILE_ENABLED);
83096483 88
596fc263 89 log_info("/*** disable ***/");
83096483
LP
90 changes = NULL;
91 n_changes = 0;
92
b3796dd8 93 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
94 assert_se(r >= 0);
95
96 dump_changes(changes, n_changes);
97 unit_file_changes_free(changes, n_changes);
98
0ec0deaa
LP
99 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
100 assert_se(r >= 0);
101 assert_se(state == UNIT_FILE_DISABLED);
83096483 102
596fc263 103 log_info("/*** mask ***/");
83096483
LP
104 changes = NULL;
105 n_changes = 0;
106
b3796dd8 107 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 108 assert_se(r >= 0);
596fc263 109 log_info("/*** mask2 ***/");
b3796dd8 110 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
111 assert_se(r >= 0);
112
113 dump_changes(changes, n_changes);
114 unit_file_changes_free(changes, n_changes);
115
0ec0deaa
LP
116 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
117 assert_se(r >= 0);
118 assert_se(state == UNIT_FILE_MASKED);
83096483 119
596fc263 120 log_info("/*** unmask ***/");
83096483
LP
121 changes = NULL;
122 n_changes = 0;
123
b3796dd8 124 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 125 assert_se(r >= 0);
596fc263 126 log_info("/*** unmask2 ***/");
b3796dd8 127 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
128 assert_se(r >= 0);
129
130 dump_changes(changes, n_changes);
131 unit_file_changes_free(changes, n_changes);
132
0ec0deaa
LP
133 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
134 assert_se(r >= 0);
135 assert_se(state == UNIT_FILE_DISABLED);
83096483 136
596fc263 137 log_info("/*** mask ***/");
83096483
LP
138 changes = NULL;
139 n_changes = 0;
140
b3796dd8 141 r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
142 assert_se(r >= 0);
143
144 dump_changes(changes, n_changes);
145 unit_file_changes_free(changes, n_changes);
146
0ec0deaa
LP
147 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
148 assert_se(r >= 0);
149 assert_se(state == UNIT_FILE_MASKED);
83096483 150
596fc263 151 log_info("/*** disable ***/");
83096483
LP
152 changes = NULL;
153 n_changes = 0;
154
b3796dd8 155 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483 156 assert_se(r >= 0);
596fc263 157 log_info("/*** disable2 ***/");
b3796dd8 158 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
159 assert_se(r >= 0);
160
161 dump_changes(changes, n_changes);
162 unit_file_changes_free(changes, n_changes);
163
0ec0deaa
LP
164 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
165 assert_se(r >= 0);
166 assert_se(state == UNIT_FILE_MASKED);
83096483 167
596fc263 168 log_info("/*** umask ***/");
83096483
LP
169 changes = NULL;
170 n_changes = 0;
171
b3796dd8 172 r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
83096483
LP
173 assert_se(r >= 0);
174
175 dump_changes(changes, n_changes);
176 unit_file_changes_free(changes, n_changes);
177
0ec0deaa
LP
178 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, files[0], &state);
179 assert_se(r >= 0);
180 assert_se(state == UNIT_FILE_DISABLED);
83096483 181
596fc263 182 log_info("/*** enable files2 ***/");
83096483
LP
183 changes = NULL;
184 n_changes = 0;
185
b3796dd8 186 r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
187 assert_se(r >= 0);
188
189 dump_changes(changes, n_changes);
190 unit_file_changes_free(changes, n_changes);
191
0ec0deaa
LP
192 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
193 assert_se(r >= 0);
194 assert_se(state == UNIT_FILE_ENABLED);
83096483 195
596fc263 196 log_info("/*** disable files2 ***/");
83096483
LP
197 changes = NULL;
198 n_changes = 0;
199
b3796dd8 200 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
201 assert_se(r >= 0);
202
203 dump_changes(changes, n_changes);
204 unit_file_changes_free(changes, n_changes);
205
0ec0deaa
LP
206 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
207 assert_se(r < 0);
83096483 208
596fc263 209 log_info("/*** link files2 ***/");
83096483
LP
210 changes = NULL;
211 n_changes = 0;
212
b3796dd8 213 r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
214 assert_se(r >= 0);
215
216 dump_changes(changes, n_changes);
217 unit_file_changes_free(changes, n_changes);
218
0ec0deaa
LP
219 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
220 assert_se(r >= 0);
221 assert_se(state == UNIT_FILE_LINKED);
83096483 222
596fc263 223 log_info("/*** disable files2 ***/");
83096483
LP
224 changes = NULL;
225 n_changes = 0;
226
b3796dd8 227 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
228 assert_se(r >= 0);
229
230 dump_changes(changes, n_changes);
231 unit_file_changes_free(changes, n_changes);
232
0ec0deaa
LP
233 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
234 assert_se(r < 0);
83096483 235
596fc263 236 log_info("/*** link files2 ***/");
83096483
LP
237 changes = NULL;
238 n_changes = 0;
239
b3796dd8 240 r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
241 assert_se(r >= 0);
242
243 dump_changes(changes, n_changes);
244 unit_file_changes_free(changes, n_changes);
245
0ec0deaa
LP
246 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
247 assert_se(r >= 0);
248 assert_se(state == UNIT_FILE_LINKED);
83096483 249
596fc263 250 log_info("/*** reenable files2 ***/");
83096483
LP
251 changes = NULL;
252 n_changes = 0;
253
b3796dd8 254 r = unit_file_reenable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
83096483
LP
255 assert_se(r >= 0);
256
257 dump_changes(changes, n_changes);
258 unit_file_changes_free(changes, n_changes);
259
0ec0deaa
LP
260 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
261 assert_se(r >= 0);
262 assert_se(state == UNIT_FILE_ENABLED);
83096483 263
596fc263 264 log_info("/*** disable files2 ***/");
83096483
LP
265 changes = NULL;
266 n_changes = 0;
267
b3796dd8 268 r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
83096483
LP
269 assert_se(r >= 0);
270
271 dump_changes(changes, n_changes);
272 unit_file_changes_free(changes, n_changes);
273
0ec0deaa
LP
274 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files2[0]), &state);
275 assert_se(r < 0);
596fc263 276 log_info("/*** preset files ***/");
83096483
LP
277 changes = NULL;
278 n_changes = 0;
279
b3796dd8 280 r = unit_file_preset(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes);
83096483
LP
281 assert_se(r >= 0);
282
283 dump_changes(changes, n_changes);
284 unit_file_changes_free(changes, n_changes);
285
0ec0deaa
LP
286 r = unit_file_get_state(UNIT_FILE_SYSTEM, NULL, basename(files[0]), &state);
287 assert_se(r >= 0);
288 assert_se(state == UNIT_FILE_ENABLED);
83096483
LP
289
290 return 0;
291}