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