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