]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-install.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
9 static void dump_changes(UnitFileChange
*c
, unsigned n
) {
12 assert_se(n
== 0 || c
);
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
);
22 int main(int argc
, char* argv
[]) {
27 const char *const files
[] = { "avahi-daemon.service", NULL
};
28 const char *const files2
[] = { "/home/lennart/test.service", NULL
};
29 UnitFileChange
*changes
= NULL
;
31 UnitFileState state
= 0;
33 test_setup_logging(LOG_DEBUG
);
35 h
= hashmap_new(&string_hash_ops
);
36 r
= unit_file_get_list(UNIT_FILE_SYSTEM
, NULL
, h
, NULL
, NULL
);
39 HASHMAP_FOREACH(p
, h
, i
) {
40 UnitFileState s
= _UNIT_FILE_STATE_INVALID
;
42 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(p
->path
), &s
);
44 assert_se((r
< 0 && p
->state
== UNIT_FILE_BAD
) ||
47 fprintf(stderr
, "%s (%s)\n",
49 unit_file_state_to_string(p
->state
));
52 unit_file_list_free(h
);
54 log_info("/*** enable **/");
56 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
59 log_info("/*** enable2 **/");
61 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
64 dump_changes(changes
, n_changes
);
65 unit_file_changes_free(changes
, n_changes
);
67 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
69 assert_se(state
== UNIT_FILE_ENABLED
);
71 log_info("/*** disable ***/");
75 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
78 dump_changes(changes
, n_changes
);
79 unit_file_changes_free(changes
, n_changes
);
81 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
83 assert_se(state
== UNIT_FILE_DISABLED
);
85 log_info("/*** mask ***/");
89 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
91 log_info("/*** mask2 ***/");
92 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
95 dump_changes(changes
, n_changes
);
96 unit_file_changes_free(changes
, n_changes
);
98 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
100 assert_se(state
== UNIT_FILE_MASKED
);
102 log_info("/*** unmask ***/");
106 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
108 log_info("/*** unmask2 ***/");
109 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
112 dump_changes(changes
, n_changes
);
113 unit_file_changes_free(changes
, n_changes
);
115 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
117 assert_se(state
== UNIT_FILE_DISABLED
);
119 log_info("/*** mask ***/");
123 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
126 dump_changes(changes
, n_changes
);
127 unit_file_changes_free(changes
, n_changes
);
129 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
131 assert_se(state
== UNIT_FILE_MASKED
);
133 log_info("/*** disable ***/");
137 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
139 log_info("/*** disable2 ***/");
140 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
143 dump_changes(changes
, n_changes
);
144 unit_file_changes_free(changes
, n_changes
);
146 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
148 assert_se(state
== UNIT_FILE_MASKED
);
150 log_info("/*** umask ***/");
154 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
157 dump_changes(changes
, n_changes
);
158 unit_file_changes_free(changes
, n_changes
);
160 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
162 assert_se(state
== UNIT_FILE_DISABLED
);
164 log_info("/*** enable files2 ***/");
168 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
171 dump_changes(changes
, n_changes
);
172 unit_file_changes_free(changes
, n_changes
);
174 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
176 assert_se(state
== UNIT_FILE_ENABLED
);
178 log_info("/*** disable files2 ***/");
182 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
185 dump_changes(changes
, n_changes
);
186 unit_file_changes_free(changes
, n_changes
);
188 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
191 log_info("/*** link files2 ***/");
195 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
198 dump_changes(changes
, n_changes
);
199 unit_file_changes_free(changes
, n_changes
);
201 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
203 assert_se(state
== UNIT_FILE_LINKED
);
205 log_info("/*** disable files2 ***/");
209 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
212 dump_changes(changes
, n_changes
);
213 unit_file_changes_free(changes
, n_changes
);
215 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
218 log_info("/*** link files2 ***/");
222 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
225 dump_changes(changes
, n_changes
);
226 unit_file_changes_free(changes
, n_changes
);
228 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
230 assert_se(state
== UNIT_FILE_LINKED
);
232 log_info("/*** reenable files2 ***/");
236 r
= unit_file_reenable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
239 dump_changes(changes
, n_changes
);
240 unit_file_changes_free(changes
, n_changes
);
242 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
244 assert_se(state
== UNIT_FILE_ENABLED
);
246 log_info("/*** disable files2 ***/");
250 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
253 dump_changes(changes
, n_changes
);
254 unit_file_changes_free(changes
, n_changes
);
256 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
258 log_info("/*** preset files ***/");
262 r
= unit_file_preset(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, UNIT_FILE_PRESET_FULL
, &changes
, &n_changes
);
265 dump_changes(changes
, n_changes
);
266 unit_file_changes_free(changes
, n_changes
);
268 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files
[0]), &state
);
270 assert_se(state
== UNIT_FILE_ENABLED
);