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