]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-unit-name.c
test-unit-name: add usual headers and add more verbose output
[thirdparty/systemd.git] / src / test / test-unit-name.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
b0193f1c
LP
2
3#include <stdio.h>
4#include <stdlib.h>
b0193f1c 5
b5efdb8a 6#include "alloc-util.h"
57b7a260 7#include "all-units.h"
2aaafcf5 8#include "glob-util.h"
ca78ad1d 9#include "format-util.h"
07630cea
LP
10#include "hostname-util.h"
11#include "macro.h"
1682ff60 12#include "manager.h"
07630cea 13#include "path-util.h"
a04efff8 14#include "rm-rf.h"
e5af6e0e 15#include "special.h"
07630cea
LP
16#include "specifier.h"
17#include "string-util.h"
18#include "test-helper.h"
a04efff8 19#include "tests.h"
b4152e9b 20#include "unit-def.h"
b0193f1c 21#include "unit-name.h"
1682ff60 22#include "unit-printf.h"
07630cea 23#include "unit.h"
79413b67 24#include "user-util.h"
b0193f1c
LP
25#include "util.h"
26
c86ebcf3
ZJS
27static void test_unit_name_is_valid_one(const char *name, UnitNameFlags flags, bool expected) {
28 log_info("%s ( %s%s%s ): %s",
29 name,
30 (flags & UNIT_NAME_PLAIN) ? "plain" : "",
31 (flags & UNIT_NAME_INSTANCE) ? " instance" : "",
32 (flags & UNIT_NAME_TEMPLATE) ? " template" : "",
33 yes_no(expected));
34 assert_se(unit_name_is_valid(name, flags) == expected);
35}
36
7410616c 37static void test_unit_name_is_valid(void) {
c86ebcf3
ZJS
38 log_info("/* %s */", __func__);
39
40 test_unit_name_is_valid_one("foo.service", UNIT_NAME_ANY, true);
41 test_unit_name_is_valid_one("foo.service", UNIT_NAME_PLAIN, true);
42 test_unit_name_is_valid_one("foo.service", UNIT_NAME_INSTANCE, false);
43 test_unit_name_is_valid_one("foo.service", UNIT_NAME_TEMPLATE, false);
44 test_unit_name_is_valid_one("foo.service", UNIT_NAME_INSTANCE|UNIT_NAME_TEMPLATE, false);
45
46 test_unit_name_is_valid_one("foo@bar.service", UNIT_NAME_ANY, true);
47 test_unit_name_is_valid_one("foo@bar.service", UNIT_NAME_PLAIN, false);
48 test_unit_name_is_valid_one("foo@bar.service", UNIT_NAME_INSTANCE, true);
49 test_unit_name_is_valid_one("foo@bar.service", UNIT_NAME_TEMPLATE, false);
50 test_unit_name_is_valid_one("foo@bar.service", UNIT_NAME_INSTANCE|UNIT_NAME_TEMPLATE, true);
51
52 test_unit_name_is_valid_one("foo@bar@bar.service", UNIT_NAME_ANY, true);
53 test_unit_name_is_valid_one("foo@bar@bar.service", UNIT_NAME_PLAIN, false);
54 test_unit_name_is_valid_one("foo@bar@bar.service", UNIT_NAME_INSTANCE, true);
55 test_unit_name_is_valid_one("foo@bar@bar.service", UNIT_NAME_TEMPLATE, false);
56 test_unit_name_is_valid_one("foo@bar@bar.service", UNIT_NAME_INSTANCE|UNIT_NAME_TEMPLATE, true);
57
58 test_unit_name_is_valid_one("foo@.service", UNIT_NAME_ANY, true);
59 test_unit_name_is_valid_one("foo@.service", UNIT_NAME_PLAIN, false);
60 test_unit_name_is_valid_one("foo@.service", UNIT_NAME_INSTANCE, false);
61 test_unit_name_is_valid_one("foo@.service", UNIT_NAME_TEMPLATE, true);
62 test_unit_name_is_valid_one("foo@.service", UNIT_NAME_INSTANCE|UNIT_NAME_TEMPLATE, true);
63 test_unit_name_is_valid_one(".test.service", UNIT_NAME_PLAIN, true);
64 test_unit_name_is_valid_one(".test@.service", UNIT_NAME_TEMPLATE, true);
65 test_unit_name_is_valid_one("_strange::::.service", UNIT_NAME_ANY, true);
66
67 test_unit_name_is_valid_one(".service", UNIT_NAME_ANY, false);
68 test_unit_name_is_valid_one("", UNIT_NAME_ANY, false);
69 test_unit_name_is_valid_one("foo.waldo", UNIT_NAME_ANY, false);
70 test_unit_name_is_valid_one("@.service", UNIT_NAME_ANY, false);
71 test_unit_name_is_valid_one("@piep.service", UNIT_NAME_ANY, false);
72
73 test_unit_name_is_valid_one("user@1000.slice", UNIT_NAME_ANY, true);
74 test_unit_name_is_valid_one("user@1000.slice", UNIT_NAME_INSTANCE, true);
75 test_unit_name_is_valid_one("user@1000.slice", UNIT_NAME_TEMPLATE, false);
7410616c 76}
3251c0d2 77
21868586 78static void test_unit_name_replace_instance_one(const char *pattern, const char *repl, const char *expected, int ret) {
7410616c
LP
79 _cleanup_free_ char *t = NULL;
80 assert_se(unit_name_replace_instance(pattern, repl, &t) == ret);
81 puts(strna(t));
82 assert_se(streq_ptr(t, expected));
83}
3251c0d2 84
21868586 85static void test_unit_name_replace_instance(void) {
c86ebcf3
ZJS
86 log_info("/* %s */", __func__);
87
21868586
LP
88 test_unit_name_replace_instance_one("foo@.service", "waldo", "foo@waldo.service", 0);
89 test_unit_name_replace_instance_one("foo@xyz.service", "waldo", "foo@waldo.service", 0);
90 test_unit_name_replace_instance_one("xyz", "waldo", NULL, -EINVAL);
91 test_unit_name_replace_instance_one("", "waldo", NULL, -EINVAL);
92 test_unit_name_replace_instance_one("foo.service", "waldo", NULL, -EINVAL);
93 test_unit_name_replace_instance_one(".service", "waldo", NULL, -EINVAL);
94 test_unit_name_replace_instance_one("foo@", "waldo", NULL, -EINVAL);
95 test_unit_name_replace_instance_one("@bar", "waldo", NULL, -EINVAL);
7410616c 96}
3251c0d2 97
21868586 98static void test_unit_name_from_path_one(const char *path, const char *suffix, const char *expected, int ret) {
7410616c 99 _cleanup_free_ char *t = NULL;
3251c0d2 100
7410616c
LP
101 assert_se(unit_name_from_path(path, suffix, &t) == ret);
102 puts(strna(t));
103 assert_se(streq_ptr(t, expected));
3251c0d2 104
7410616c
LP
105 if (t) {
106 _cleanup_free_ char *k = NULL;
107 assert_se(unit_name_to_path(t, &k) == 0);
108 puts(strna(k));
945403e6 109 assert_se(path_equal(k, empty_to_root(path)));
7410616c
LP
110 }
111}
3251c0d2 112
21868586 113static void test_unit_name_from_path(void) {
c86ebcf3
ZJS
114 log_info("/* %s */", __func__);
115
21868586
LP
116 test_unit_name_from_path_one("/waldo", ".mount", "waldo.mount", 0);
117 test_unit_name_from_path_one("/waldo/quuix", ".mount", "waldo-quuix.mount", 0);
118 test_unit_name_from_path_one("/waldo/quuix/", ".mount", "waldo-quuix.mount", 0);
119 test_unit_name_from_path_one("", ".mount", "-.mount", 0);
120 test_unit_name_from_path_one("/", ".mount", "-.mount", 0);
121 test_unit_name_from_path_one("///", ".mount", "-.mount", 0);
122 test_unit_name_from_path_one("/foo/../bar", ".mount", NULL, -EINVAL);
123 test_unit_name_from_path_one("/foo/./bar", ".mount", NULL, -EINVAL);
7410616c
LP
124}
125
21868586 126static void test_unit_name_from_path_instance_one(const char *pattern, const char *path, const char *suffix, const char *expected, int ret) {
7410616c
LP
127 _cleanup_free_ char *t = NULL;
128
129 assert_se(unit_name_from_path_instance(pattern, path, suffix, &t) == ret);
130 puts(strna(t));
131 assert_se(streq_ptr(t, expected));
132
133 if (t) {
134 _cleanup_free_ char *k = NULL, *v = NULL;
135
136 assert_se(unit_name_to_instance(t, &k) > 0);
137 assert_se(unit_name_path_unescape(k, &v) == 0);
945403e6 138 assert_se(path_equal(v, empty_to_root(path)));
3251c0d2 139 }
7410616c 140}
3251c0d2 141
21868586 142static void test_unit_name_from_path_instance(void) {
c86ebcf3 143 log_info("/* %s */", __func__);
b0193f1c 144
21868586
LP
145 test_unit_name_from_path_instance_one("waldo", "/waldo", ".mount", "waldo@waldo.mount", 0);
146 test_unit_name_from_path_instance_one("waldo", "/waldo////quuix////", ".mount", "waldo@waldo-quuix.mount", 0);
147 test_unit_name_from_path_instance_one("waldo", "/", ".mount", "waldo@-.mount", 0);
148 test_unit_name_from_path_instance_one("waldo", "", ".mount", "waldo@-.mount", 0);
149 test_unit_name_from_path_instance_one("waldo", "///", ".mount", "waldo@-.mount", 0);
150 test_unit_name_from_path_instance_one("waldo", "..", ".mount", NULL, -EINVAL);
151 test_unit_name_from_path_instance_one("waldo", "/foo", ".waldi", NULL, -EINVAL);
152 test_unit_name_from_path_instance_one("wa--ldo", "/--", ".mount", "wa--ldo@\\x2d\\x2d.mount", 0);
7410616c
LP
153}
154
21868586 155static void test_unit_name_to_path_one(const char *unit, const char *path, int ret) {
7410616c
LP
156 _cleanup_free_ char *p = NULL;
157
158 assert_se(unit_name_to_path(unit, &p) == ret);
159 assert_se(streq_ptr(path, p));
160}
161
21868586 162static void test_unit_name_to_path(void) {
c86ebcf3
ZJS
163 log_info("/* %s */", __func__);
164
21868586
LP
165 test_unit_name_to_path_one("home.mount", "/home", 0);
166 test_unit_name_to_path_one("home-lennart.mount", "/home/lennart", 0);
167 test_unit_name_to_path_one("home-lennart-.mount", NULL, -EINVAL);
168 test_unit_name_to_path_one("-home-lennart.mount", NULL, -EINVAL);
169 test_unit_name_to_path_one("-home--lennart.mount", NULL, -EINVAL);
170 test_unit_name_to_path_one("home-..-lennart.mount", NULL, -EINVAL);
171 test_unit_name_to_path_one("", NULL, -EINVAL);
172 test_unit_name_to_path_one("home/foo", NULL, -EINVAL);
7410616c
LP
173}
174
37cbc1d5 175static void test_unit_name_mangle_one(bool allow_globs, const char *pattern, const char *expect, int ret) {
7410616c
LP
176 _cleanup_free_ char *t = NULL;
177
37cbc1d5 178 assert_se(unit_name_mangle(pattern, (allow_globs * UNIT_NAME_MANGLE_GLOB) | UNIT_NAME_MANGLE_WARN, &t) == ret);
7410616c
LP
179 puts(strna(t));
180 assert_se(streq_ptr(t, expect));
181
182 if (t) {
183 _cleanup_free_ char *k = NULL;
184
2aaafcf5 185 assert_se(unit_name_is_valid(t, UNIT_NAME_ANY) ||
37cbc1d5 186 (allow_globs && string_is_glob(t)));
7410616c 187
37cbc1d5 188 assert_se(unit_name_mangle(t, (allow_globs * UNIT_NAME_MANGLE_GLOB) | UNIT_NAME_MANGLE_WARN, &k) == 0);
7410616c
LP
189 assert_se(streq_ptr(t, k));
190 }
191}
192
21868586 193static void test_unit_name_mangle(void) {
c86ebcf3
ZJS
194 log_info("/* %s */", __func__);
195
37cbc1d5
ZJS
196 test_unit_name_mangle_one(false, "foo.service", "foo.service", 0);
197 test_unit_name_mangle_one(false, "/home", "home.mount", 1);
198 test_unit_name_mangle_one(false, "/dev/sda", "dev-sda.device", 1);
199 test_unit_name_mangle_one(false, "üxknürz.service", "\\xc3\\xbcxkn\\xc3\\xbcrz.service", 1);
200 test_unit_name_mangle_one(false, "foobar-meh...waldi.service", "foobar-meh...waldi.service", 0);
201 test_unit_name_mangle_one(false, "_____####----.....service", "_____\\x23\\x23\\x23\\x23----.....service", 1);
202 test_unit_name_mangle_one(false, "_____##@;;;,,,##----.....service", "_____\\x23\\x23@\\x3b\\x3b\\x3b\\x2c\\x2c\\x2c\\x23\\x23----.....service", 1);
203 test_unit_name_mangle_one(false, "xxx@@@@/////\\\\\\\\\\yyy.service", "xxx@@@@-----\\\\\\\\\\yyy.service", 1);
204 test_unit_name_mangle_one(false, "", NULL, -EINVAL);
205
206 test_unit_name_mangle_one(true, "foo.service", "foo.service", 0);
207 test_unit_name_mangle_one(true, "foo", "foo.service", 1);
208 test_unit_name_mangle_one(true, "foo*", "foo*", 0);
209 test_unit_name_mangle_one(true, "ü*", "\\xc3\\xbc*", 1);
1682ff60
ZJS
210}
211
49e5de64 212static int test_unit_printf(void) {
b75f0c69 213 _cleanup_free_ char *mid = NULL, *bid = NULL, *host = NULL, *gid = NULL, *group = NULL, *uid = NULL, *user = NULL, *shell = NULL, *home = NULL;
c70cac54 214 _cleanup_(manager_freep) Manager *m = NULL;
250e9fad 215 Unit *u;
c5e33bf8 216 int r;
1682ff60 217
c86ebcf3
ZJS
218 log_info("/* %s */", __func__);
219
19f6d710
LP
220 assert_se(specifier_machine_id('m', NULL, NULL, &mid) >= 0 && mid);
221 assert_se(specifier_boot_id('b', NULL, NULL, &bid) >= 0 && bid);
79413b67 222 assert_se(host = gethostname_malloc());
36444d22 223 assert_se(user = uid_to_name(getuid()));
b75f0c69 224 assert_se(group = gid_to_name(getgid()));
79413b67 225 assert_se(asprintf(&uid, UID_FMT, getuid()));
b75f0c69 226 assert_se(asprintf(&gid, UID_FMT, getgid()));
79413b67
LP
227 assert_se(get_home_dir(&home) >= 0);
228 assert_se(get_shell(&shell) >= 0);
1682ff60 229
e0a3da1f 230 r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m);
730d989a
ZJS
231 if (MANAGER_SKIP_TEST(r))
232 return log_tests_skipped_errno(r, "manager_new");
bdf7026e 233 assert_se(r == 0);
1682ff60
ZJS
234
235#define expect(unit, pattern, expected) \
236 { \
fa3cd739 237 char *e; \
e1ba963f 238 _cleanup_free_ char *t = NULL; \
19f6d710 239 assert_se(unit_full_printf(unit, pattern, &t) >= 0); \
c5e33bf8 240 printf("result: %s\nexpect: %s\n", t, expected); \
fa3cd739 241 if ((e = endswith(expected, "*"))) \
bdf7026e 242 assert_se(strncmp(t, e, e-expected)); \
fa3cd739 243 else \
bdf7026e 244 assert_se(streq(t, expected)); \
1682ff60
ZJS
245 }
246
1682ff60
ZJS
247 assert_se(u = unit_new(m, sizeof(Service)));
248 assert_se(unit_add_name(u, "blah.service") == 0);
249 assert_se(unit_add_name(u, "blah.service") == 0);
250
251 /* general tests */
252 expect(u, "%%", "%");
253 expect(u, "%%s", "%s");
038492ae
FS
254 expect(u, "%,", "%,");
255 expect(u, "%", "%");
1682ff60
ZJS
256
257 /* normal unit */
258 expect(u, "%n", "blah.service");
14b0295f 259 expect(u, "%f", "/blah");
1682ff60
ZJS
260 expect(u, "%N", "blah");
261 expect(u, "%p", "blah");
262 expect(u, "%P", "blah");
263 expect(u, "%i", "");
250e9fad
ZJS
264 expect(u, "%I", "");
265 expect(u, "%j", "blah");
266 expect(u, "%J", "blah");
b75f0c69
DC
267 expect(u, "%g", group);
268 expect(u, "%G", gid);
79413b67
LP
269 expect(u, "%u", user);
270 expect(u, "%U", uid);
271 expect(u, "%h", home);
1682ff60
ZJS
272 expect(u, "%m", mid);
273 expect(u, "%b", bid);
274 expect(u, "%H", host);
fa3cd739 275 expect(u, "%t", "/run/user/*");
1682ff60
ZJS
276
277 /* templated */
250e9fad
ZJS
278 assert_se(u = unit_new(m, sizeof(Service)));
279 assert_se(unit_add_name(u, "blah@foo-foo.service") == 0);
280 assert_se(unit_add_name(u, "blah@foo-foo.service") == 0);
281
282 expect(u, "%n", "blah@foo-foo.service");
283 expect(u, "%N", "blah@foo-foo");
284 expect(u, "%f", "/foo/foo");
285 expect(u, "%p", "blah");
286 expect(u, "%P", "blah");
287 expect(u, "%i", "foo-foo");
288 expect(u, "%I", "foo/foo");
289 expect(u, "%j", "blah");
290 expect(u, "%J", "blah");
b75f0c69
DC
291 expect(u, "%g", group);
292 expect(u, "%G", gid);
250e9fad
ZJS
293 expect(u, "%u", user);
294 expect(u, "%U", uid);
295 expect(u, "%h", home);
296 expect(u, "%m", mid);
297 expect(u, "%b", bid);
298 expect(u, "%H", host);
299 expect(u, "%t", "/run/user/*");
300
301 /* templated with components */
302 assert_se(u = unit_new(m, sizeof(Slice)));
303 assert_se(unit_add_name(u, "blah-blah\\x2d.slice") == 0);
304
305 expect(u, "%n", "blah-blah\\x2d.slice");
306 expect(u, "%N", "blah-blah\\x2d");
307 expect(u, "%f", "/blah/blah-");
308 expect(u, "%p", "blah-blah\\x2d");
309 expect(u, "%P", "blah/blah-");
310 expect(u, "%i", "");
311 expect(u, "%I", "");
312 expect(u, "%j", "blah\\x2d");
313 expect(u, "%J", "blah-");
314
fee0a921 315#undef expect
b463b813 316
49e5de64 317 return 0;
1682ff60
ZJS
318}
319
068ae9fb 320static void test_unit_instance_is_valid(void) {
c86ebcf3
ZJS
321 log_info("/* %s */", __func__);
322
068ae9fb
RC
323 assert_se(unit_instance_is_valid("fooBar"));
324 assert_se(unit_instance_is_valid("foo-bar"));
325 assert_se(unit_instance_is_valid("foo.stUff"));
326 assert_se(unit_instance_is_valid("fOo123.stuff"));
327 assert_se(unit_instance_is_valid("@f_oo123.Stuff"));
328
329 assert_se(!unit_instance_is_valid("$¢£"));
330 assert_se(!unit_instance_is_valid(""));
331 assert_se(!unit_instance_is_valid("foo bar"));
332 assert_se(!unit_instance_is_valid("foo/bar"));
333}
334
335static void test_unit_prefix_is_valid(void) {
c86ebcf3
ZJS
336 log_info("/* %s */", __func__);
337
068ae9fb
RC
338 assert_se(unit_prefix_is_valid("fooBar"));
339 assert_se(unit_prefix_is_valid("foo-bar"));
340 assert_se(unit_prefix_is_valid("foo.stUff"));
341 assert_se(unit_prefix_is_valid("fOo123.stuff"));
342 assert_se(unit_prefix_is_valid("foo123.Stuff"));
343
344 assert_se(!unit_prefix_is_valid("$¢£"));
345 assert_se(!unit_prefix_is_valid(""));
346 assert_se(!unit_prefix_is_valid("foo bar"));
347 assert_se(!unit_prefix_is_valid("foo/bar"));
348 assert_se(!unit_prefix_is_valid("@foo-bar"));
349}
350
351static void test_unit_name_change_suffix(void) {
7410616c 352 char *t;
068ae9fb 353
c86ebcf3
ZJS
354 log_info("/* %s */", __func__);
355
7410616c
LP
356 assert_se(unit_name_change_suffix("foo.mount", ".service", &t) == 0);
357 assert_se(streq(t, "foo.service"));
358 free(t);
068ae9fb 359
7410616c
LP
360 assert_se(unit_name_change_suffix("foo@stuff.service", ".socket", &t) == 0);
361 assert_se(streq(t, "foo@stuff.socket"));
362 free(t);
068ae9fb
RC
363}
364
365static void test_unit_name_build(void) {
7410616c 366 char *t;
068ae9fb 367
c86ebcf3
ZJS
368 log_info("/* %s */", __func__);
369
7410616c
LP
370 assert_se(unit_name_build("foo", "bar", ".service", &t) == 0);
371 assert_se(streq(t, "foo@bar.service"));
372 free(t);
068ae9fb 373
7410616c
LP
374 assert_se(unit_name_build("fo0-stUff_b", "bar", ".mount", &t) == 0);
375 assert_se(streq(t, "fo0-stUff_b@bar.mount"));
376 free(t);
068ae9fb 377
7410616c
LP
378 assert_se(unit_name_build("foo", NULL, ".service", &t) == 0);
379 assert_se(streq(t, "foo.service"));
380 free(t);
068ae9fb
RC
381}
382
93c47472 383static void test_slice_name_is_valid(void) {
c86ebcf3
ZJS
384 log_info("/* %s */", __func__);
385
0682ed5c
ZJS
386 assert_se( slice_name_is_valid(SPECIAL_ROOT_SLICE));
387 assert_se( slice_name_is_valid("foo.slice"));
388 assert_se( slice_name_is_valid("foo-bar.slice"));
389 assert_se( slice_name_is_valid("foo-bar-baz.slice"));
93c47472
LP
390 assert_se(!slice_name_is_valid("-foo-bar-baz.slice"));
391 assert_se(!slice_name_is_valid("foo-bar-baz-.slice"));
392 assert_se(!slice_name_is_valid("-foo-bar-baz-.slice"));
393 assert_se(!slice_name_is_valid("foo-bar--baz.slice"));
394 assert_se(!slice_name_is_valid("foo--bar--baz.slice"));
395 assert_se(!slice_name_is_valid(".slice"));
396 assert_se(!slice_name_is_valid(""));
397 assert_se(!slice_name_is_valid("foo.service"));
0682ed5c
ZJS
398
399 assert_se(!slice_name_is_valid("foo@.slice"));
400 assert_se(!slice_name_is_valid("foo@bar.slice"));
401 assert_se(!slice_name_is_valid("foo-bar@baz.slice"));
402 assert_se(!slice_name_is_valid("foo@bar@baz.slice"));
403 assert_se(!slice_name_is_valid("foo@bar-baz.slice"));
404 assert_se(!slice_name_is_valid("-foo-bar-baz@.slice"));
405 assert_se(!slice_name_is_valid("foo-bar-baz@-.slice"));
406 assert_se(!slice_name_is_valid("foo-bar-baz@a--b.slice"));
407 assert_se(!slice_name_is_valid("-foo-bar-baz@-.slice"));
408 assert_se(!slice_name_is_valid("foo-bar--baz@.slice"));
409 assert_se(!slice_name_is_valid("foo--bar--baz@.slice"));
410 assert_se(!slice_name_is_valid("@.slice"));
411 assert_se(!slice_name_is_valid("foo@bar.service"));
93c47472
LP
412}
413
068ae9fb
RC
414static void test_build_subslice(void) {
415 char *a;
416 char *b;
417
c86ebcf3
ZJS
418 log_info("/* %s */", __func__);
419
e5af6e0e 420 assert_se(slice_build_subslice(SPECIAL_ROOT_SLICE, "foo", &a) >= 0);
7410616c 421 assert_se(slice_build_subslice(a, "bar", &b) >= 0);
068ae9fb 422 free(a);
7410616c 423 assert_se(slice_build_subslice(b, "barfoo", &a) >= 0);
068ae9fb 424 free(b);
7410616c 425 assert_se(slice_build_subslice(a, "foobar", &b) >= 0);
068ae9fb
RC
426 free(a);
427 assert_se(streq(b, "foo-bar-barfoo-foobar.slice"));
428 free(b);
429
7410616c
LP
430 assert_se(slice_build_subslice("foo.service", "bar", &a) < 0);
431 assert_se(slice_build_subslice("foo", "bar", &a) < 0);
068ae9fb
RC
432}
433
93c47472
LP
434static void test_build_parent_slice_one(const char *name, const char *expect, int ret) {
435 _cleanup_free_ char *s = NULL;
436
437 assert_se(slice_build_parent_slice(name, &s) == ret);
438 assert_se(streq_ptr(s, expect));
439}
440
441static void test_build_parent_slice(void) {
c86ebcf3
ZJS
442 log_info("/* %s */", __func__);
443
e5af6e0e
ZJS
444 test_build_parent_slice_one(SPECIAL_ROOT_SLICE, NULL, 0);
445 test_build_parent_slice_one("foo.slice", SPECIAL_ROOT_SLICE, 1);
93c47472
LP
446 test_build_parent_slice_one("foo-bar.slice", "foo.slice", 1);
447 test_build_parent_slice_one("foo-bar-baz.slice", "foo-bar.slice", 1);
448 test_build_parent_slice_one("foo-bar--baz.slice", NULL, -EINVAL);
449 test_build_parent_slice_one("-foo-bar.slice", NULL, -EINVAL);
450 test_build_parent_slice_one("foo-bar-.slice", NULL, -EINVAL);
451 test_build_parent_slice_one("foo-bar.service", NULL, -EINVAL);
452 test_build_parent_slice_one(".slice", NULL, -EINVAL);
0682ed5c
ZJS
453 test_build_parent_slice_one("foo@bar.slice", NULL, -EINVAL);
454 test_build_parent_slice_one("foo-bar@baz.slice", NULL, -EINVAL);
455 test_build_parent_slice_one("foo-bar--@baz.slice", NULL, -EINVAL);
456 test_build_parent_slice_one("-foo-bar@bar.slice", NULL, -EINVAL);
457 test_build_parent_slice_one("foo-bar@-.slice", NULL, -EINVAL);
458 test_build_parent_slice_one("foo@bar.service", NULL, -EINVAL);
459 test_build_parent_slice_one("@.slice", NULL, -EINVAL);
93c47472
LP
460}
461
068ae9fb
RC
462static void test_unit_name_to_instance(void) {
463 char *instance;
464 int r;
465
c86ebcf3
ZJS
466 log_info("/* %s */", __func__);
467
068ae9fb 468 r = unit_name_to_instance("foo@bar.service", &instance);
b124d3f2 469 assert_se(r == UNIT_NAME_INSTANCE);
068ae9fb
RC
470 assert_se(streq(instance, "bar"));
471 free(instance);
472
fee0a921 473 r = unit_name_to_instance("foo@.service", &instance);
b124d3f2 474 assert_se(r == UNIT_NAME_TEMPLATE);
fee0a921
RC
475 assert_se(streq(instance, ""));
476 free(instance);
477
7410616c 478 r = unit_name_to_instance("fo0-stUff_b@b.service", &instance);
b124d3f2 479 assert_se(r == UNIT_NAME_INSTANCE);
068ae9fb
RC
480 assert_se(streq(instance, "b"));
481 free(instance);
482
7410616c 483 r = unit_name_to_instance("foo.service", &instance);
b124d3f2 484 assert_se(r == UNIT_NAME_PLAIN);
068ae9fb
RC
485 assert_se(!instance);
486
487 r = unit_name_to_instance("fooj@unk", &instance);
488 assert_se(r < 0);
b124d3f2 489 assert_se(!instance);
fee0a921
RC
490
491 r = unit_name_to_instance("foo@", &instance);
492 assert_se(r < 0);
b124d3f2 493 assert_se(!instance);
068ae9fb
RC
494}
495
496static void test_unit_name_escape(void) {
497 _cleanup_free_ char *r;
498
c86ebcf3
ZJS
499 log_info("/* %s */", __func__);
500
068ae9fb
RC
501 r = unit_name_escape("ab+-c.a/bc@foo.service");
502 assert_se(r);
503 assert_se(streq(r, "ab\\x2b\\x2dc.a-bc\\x40foo.service"));
504}
505
7410616c
LP
506static void test_u_n_t_one(const char *name, const char *expected, int ret) {
507 _cleanup_free_ char *f = NULL;
fee0a921 508
7410616c
LP
509 assert_se(unit_name_template(name, &f) == ret);
510 printf("got: %s, expected: %s\n", strna(f), strna(expected));
511 assert_se(streq_ptr(f, expected));
512}
513
514static void test_unit_name_template(void) {
c86ebcf3
ZJS
515 log_info("/* %s */", __func__);
516
7410616c
LP
517 test_u_n_t_one("foo@bar.service", "foo@.service", 0);
518 test_u_n_t_one("foo.mount", NULL, -EINVAL);
fee0a921
RC
519}
520
93c47472
LP
521static void test_unit_name_path_unescape_one(const char *name, const char *path, int ret) {
522 _cleanup_free_ char *p = NULL;
523
524 assert_se(unit_name_path_unescape(name, &p) == ret);
525 assert_se(streq_ptr(path, p));
526}
527
528static void test_unit_name_path_unescape(void) {
c86ebcf3 529 log_info("/* %s */", __func__);
93c47472
LP
530
531 test_unit_name_path_unescape_one("foo", "/foo", 0);
532 test_unit_name_path_unescape_one("foo-bar", "/foo/bar", 0);
533 test_unit_name_path_unescape_one("foo-.bar", "/foo/.bar", 0);
534 test_unit_name_path_unescape_one("foo-bar-baz", "/foo/bar/baz", 0);
535 test_unit_name_path_unescape_one("-", "/", 0);
536 test_unit_name_path_unescape_one("--", NULL, -EINVAL);
537 test_unit_name_path_unescape_one("-foo-bar", NULL, -EINVAL);
538 test_unit_name_path_unescape_one("foo--bar", NULL, -EINVAL);
539 test_unit_name_path_unescape_one("foo-bar-", NULL, -EINVAL);
540 test_unit_name_path_unescape_one(".-bar", NULL, -EINVAL);
541 test_unit_name_path_unescape_one("foo-..", NULL, -EINVAL);
542 test_unit_name_path_unescape_one("", NULL, -EINVAL);
543}
544
72406c2f
LP
545static void test_unit_name_to_prefix_one(const char *input, int ret, const char *output) {
546 _cleanup_free_ char *k = NULL;
547
548 assert_se(unit_name_to_prefix(input, &k) == ret);
549 assert_se(streq_ptr(k, output));
550}
551
552static void test_unit_name_to_prefix(void) {
c86ebcf3
ZJS
553 log_info("/* %s */", __func__);
554
72406c2f
LP
555 test_unit_name_to_prefix_one("foobar.service", 0, "foobar");
556 test_unit_name_to_prefix_one("", -EINVAL, NULL);
557 test_unit_name_to_prefix_one("foobar", -EINVAL, NULL);
558 test_unit_name_to_prefix_one(".service", -EINVAL, NULL);
559 test_unit_name_to_prefix_one("quux.quux", -EINVAL, NULL);
560 test_unit_name_to_prefix_one("quux.mount", 0, "quux");
561 test_unit_name_to_prefix_one("quux-quux.mount", 0, "quux-quux");
562 test_unit_name_to_prefix_one("quux@bar.mount", 0, "quux");
563 test_unit_name_to_prefix_one("quux-@.mount", 0, "quux-");
564 test_unit_name_to_prefix_one("@.mount", -EINVAL, NULL);
565}
566
b4152e9b
YW
567static void test_unit_name_from_dbus_path_one(const char *input, int ret, const char *output) {
568 _cleanup_free_ char *k = NULL;
569
570 assert_se(unit_name_from_dbus_path(input, &k) == ret);
571 assert_se(streq_ptr(k, output));
572}
573
574static void test_unit_name_from_dbus_path(void) {
c86ebcf3
ZJS
575 log_info("/* %s */", __func__);
576
b4152e9b
YW
577 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dbus_2esocket", 0, "dbus.socket");
578 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/_2d_2emount", 0, "-.mount");
579 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/_2d_2eslice", 0, "-.slice");
580 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/accounts_2ddaemon_2eservice", 0, "accounts-daemon.service");
581 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/auditd_2eservice", 0, "auditd.service");
582 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/basic_2etarget", 0, "basic.target");
583 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/bluetooth_2etarget", 0, "bluetooth.target");
584 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/boot_2eautomount", 0, "boot.automount");
585 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/boot_2emount", 0, "boot.mount");
586 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/btrfs_2emount", 0, "btrfs.mount");
587 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/cryptsetup_2dpre_2etarget", 0, "cryptsetup-pre.target");
588 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/cryptsetup_2etarget", 0, "cryptsetup.target");
589 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dbus_2eservice", 0, "dbus.service");
590 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dbus_2esocket", 0, "dbus.socket");
591 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dcdrom_2edevice", 0, "dev-cdrom.device");
592 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M120G2GC_5fCVPO044405HH120QGN_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M120G2GC_CVPO044405HH120QGN.device");
593 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M120G2GC_5fCVPO044405HH120QGN_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M120G2GC_CVPO044405HH120QGN\\x2dpart1.device");
594 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M160G2GC_5fCVPO951003RY160AGN_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M160G2GC_CVPO951003RY160AGN.device");
595 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M160G2GC_5fCVPO951003RY160AGN_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M160G2GC_CVPO951003RY160AGN\\x2dpart1.device");
596 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M160G2GC_5fCVPO951003RY160AGN_5cx2dpart2_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M160G2GC_CVPO951003RY160AGN\\x2dpart2.device");
597 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dINTEL_5fSSDSA2M160G2GC_5fCVPO951003RY160AGN_5cx2dpart3_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dINTEL_SSDSA2M160G2GC_CVPO951003RY160AGN\\x2dpart3.device");
598 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2data_5cx2dTSSTcorp_5fCDDVDW_5fTS_5cx2dL633C_5fR6176GLZB14646_2edevice", 0, "dev-disk-by\\x2did-ata\\x2dTSSTcorp_CDDVDW_TS\\x2dL633C_R6176GLZB14646.device");
599 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x50015179591245ae_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x50015179591245ae.device");
600 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x50015179591245ae_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x50015179591245ae\\x2dpart1.device");
601 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x50015179591245ae_5cx2dpart2_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x50015179591245ae\\x2dpart2.device");
602 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x50015179591245ae_5cx2dpart3_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x50015179591245ae\\x2dpart3.device");
603 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x500151795946eab5_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x500151795946eab5.device");
604 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2did_2dwwn_5cx2d0x500151795946eab5_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2did-wwn\\x2d0x500151795946eab5\\x2dpart1.device");
605 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dlabel_2d_5cxe3_5cx82_5cxb7_5cxe3_5cx82_5cxb9_5cxe3_5cx83_5cx86_5cxe3_5cx83_5cxa0_5cxe3_5cx81_5cxa7_5cxe4_5cxba_5cx88_5cxe7_5cxb4_5cx84_5cxe6_5cxb8_5cx88_5cxe3_5cx81_5cxbf_2edevice", 0, "dev-disk-by\\x2dlabel-\\xe3\\x82\\xb7\\xe3\\x82\\xb9\\xe3\\x83\\x86\\xe3\\x83\\xa0\\xe3\\x81\\xa7\\xe4\\xba\\x88\\xe7\\xb4\\x84\\xe6\\xb8\\x88\\xe3\\x81\\xbf.device");
606 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpartuuid_2d59834e50_5cx2d01_2edevice", 0, "dev-disk-by\\x2dpartuuid-59834e50\\x2d01.device");
607 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpartuuid_2d63e2a7b3_5cx2d01_2edevice", 0, "dev-disk-by\\x2dpartuuid-63e2a7b3\\x2d01.device");
608 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpartuuid_2d63e2a7b3_5cx2d02_2edevice", 0, "dev-disk-by\\x2dpartuuid-63e2a7b3\\x2d02.device");
609 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpartuuid_2d63e2a7b3_5cx2d03_2edevice", 0, "dev-disk-by\\x2dpartuuid-63e2a7b3\\x2d03.device");
610 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d1_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d1.device");
611 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d1_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d1\\x2dpart1.device");
612 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d1_5cx2dpart2_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d1\\x2dpart2.device");
613 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d1_5cx2dpart3_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d1\\x2dpart3.device");
614 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d2_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d2.device");
615 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d6_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d6.device");
616 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2dpath_2dpci_5cx2d0000_3a00_3a1f_2e2_5cx2data_5cx2d6_5cx2dpart1_2edevice", 0, "dev-disk-by\\x2dpath-pci\\x2d0000:00:1f.2\\x2data\\x2d6\\x2dpart1.device");
617 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2duuid_2d1A34E3F034E3CD37_2edevice", 0, "dev-disk-by\\x2duuid-1A34E3F034E3CD37.device");
618 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2duuid_2dB670EBFE70EBC2EB_2edevice", 0, "dev-disk-by\\x2duuid-B670EBFE70EBC2EB.device");
619 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2duuid_2dFCD4F509D4F4C6C4_2edevice", 0, "dev-disk-by\\x2duuid-FCD4F509D4F4C6C4.device");
620 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2ddisk_2dby_5cx2duuid_2db49ead57_5cx2d907c_5cx2d446c_5cx2db405_5cx2d5ca6cd865f5e_2edevice", 0, "dev-disk-by\\x2duuid-b49ead57\\x2d907c\\x2d446c\\x2db405\\x2d5ca6cd865f5e.device");
621 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dhugepages_2emount", 0, "dev-hugepages.mount");
622 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dmqueue_2emount", 0, "dev-mqueue.mount");
623 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2drfkill_2edevice", 0, "dev-rfkill.device");
624 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsda1_2edevice", 0, "dev-sda1.device");
625 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsda2_2edevice", 0, "dev-sda2.device");
626 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsda3_2edevice", 0, "dev-sda3.device");
627 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsda_2edevice", 0, "dev-sda.device");
628 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsdb1_2edevice", 0, "dev-sdb1.device");
629 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsdb_2edevice", 0, "dev-sdb.device");
630 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dsr0_2edevice", 0, "dev-sr0.device");
631 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS0_2edevice", 0, "dev-ttyS0.device");
632 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS10_2edevice", 0, "dev-ttyS10.device");
633 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS11_2edevice", 0, "dev-ttyS11.device");
634 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS12_2edevice", 0, "dev-ttyS12.device");
635 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS13_2edevice", 0, "dev-ttyS13.device");
636 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS14_2edevice", 0, "dev-ttyS14.device");
637 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS15_2edevice", 0, "dev-ttyS15.device");
638 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS16_2edevice", 0, "dev-ttyS16.device");
639 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS17_2edevice", 0, "dev-ttyS17.device");
640 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS18_2edevice", 0, "dev-ttyS18.device");
641 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS19_2edevice", 0, "dev-ttyS19.device");
642 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS1_2edevice", 0, "dev-ttyS1.device");
643 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS20_2edevice", 0, "dev-ttyS20.device");
644 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS21_2edevice", 0, "dev-ttyS21.device");
645 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS22_2edevice", 0, "dev-ttyS22.device");
646 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS23_2edevice", 0, "dev-ttyS23.device");
647 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS24_2edevice", 0, "dev-ttyS24.device");
648 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS25_2edevice", 0, "dev-ttyS25.device");
649 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS26_2edevice", 0, "dev-ttyS26.device");
650 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS27_2edevice", 0, "dev-ttyS27.device");
651 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS28_2edevice", 0, "dev-ttyS28.device");
652 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS29_2edevice", 0, "dev-ttyS29.device");
653 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS2_2edevice", 0, "dev-ttyS2.device");
654 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS30_2edevice", 0, "dev-ttyS30.device");
655 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS31_2edevice", 0, "dev-ttyS31.device");
656 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS3_2edevice", 0, "dev-ttyS3.device");
657 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS4_2edevice", 0, "dev-ttyS4.device");
658 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS5_2edevice", 0, "dev-ttyS5.device");
659 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS6_2edevice", 0, "dev-ttyS6.device");
660 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS7_2edevice", 0, "dev-ttyS7.device");
661 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS8_2edevice", 0, "dev-ttyS8.device");
662 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dev_2dttyS9_2edevice", 0, "dev-ttyS9.device");
663 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dcmdline_2eservice", 0, "dracut-cmdline.service");
664 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dinitqueue_2eservice", 0, "dracut-initqueue.service");
665 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dmount_2eservice", 0, "dracut-mount.service");
666 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dpre_2dmount_2eservice", 0, "dracut-pre-mount.service");
667 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dpre_2dpivot_2eservice", 0, "dracut-pre-pivot.service");
668 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dpre_2dtrigger_2eservice", 0, "dracut-pre-trigger.service");
669 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dpre_2dudev_2eservice", 0, "dracut-pre-udev.service");
670 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/dracut_2dshutdown_2eservice", 0, "dracut-shutdown.service");
671 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/ebtables_2eservice", 0, "ebtables.service");
672 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/emergency_2eservice", 0, "emergency.service");
673 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/emergency_2etarget", 0, "emergency.target");
674 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/fedora_2dimport_2dstate_2eservice", 0, "fedora-import-state.service");
675 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/fedora_2dreadonly_2eservice", 0, "fedora-readonly.service");
676 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/firewalld_2eservice", 0, "firewalld.service");
677 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/getty_2dpre_2etarget", 0, "getty-pre.target");
678 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/getty_2etarget", 0, "getty.target");
679 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/getty_40tty1_2eservice", 0, "getty@tty1.service");
680 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/graphical_2etarget", 0, "graphical.target");
681 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/home_2emount", 0, "home.mount");
682 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/init_2escope", 0, "init.scope");
683 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dcleanup_2eservice", 0, "initrd-cleanup.service");
684 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dfs_2etarget", 0, "initrd-fs.target");
685 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dparse_2detc_2eservice", 0, "initrd-parse-etc.service");
686 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2droot_2ddevice_2etarget", 0, "initrd-root-device.target");
687 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2droot_2dfs_2etarget", 0, "initrd-root-fs.target");
688 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dswitch_2droot_2eservice", 0, "initrd-switch-root.service");
689 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dswitch_2droot_2etarget", 0, "initrd-switch-root.target");
690 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2dudevadm_2dcleanup_2ddb_2eservice", 0, "initrd-udevadm-cleanup-db.service");
691 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/initrd_2etarget", 0, "initrd.target");
692 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/ip6tables_2eservice", 0, "ip6tables.service");
693 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/ipset_2eservice", 0, "ipset.service");
694 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/iptables_2eservice", 0, "iptables.service");
695 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/irqbalance_2eservice", 0, "irqbalance.service");
696 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/kmod_2dstatic_2dnodes_2eservice", 0, "kmod-static-nodes.service");
697 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/ldconfig_2eservice", 0, "ldconfig.service");
698 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/lightdm_2eservice", 0, "lightdm.service");
699 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/livesys_2dlate_2eservice", 0, "livesys-late.service");
700 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/lm_5fsensors_2eservice", 0, "lm_sensors.service");
701 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/local_2dfs_2dpre_2etarget", 0, "local-fs-pre.target");
702 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/local_2dfs_2etarget", 0, "local-fs.target");
703 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/machines_2etarget", 0, "machines.target");
704 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/mcelog_2eservice", 0, "mcelog.service");
705 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/multi_2duser_2etarget", 0, "multi-user.target");
706 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/network_2dpre_2etarget", 0, "network-pre.target");
707 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/network_2etarget", 0, "network.target");
708 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/nss_2dlookup_2etarget", 0, "nss-lookup.target");
709 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/nss_2duser_2dlookup_2etarget", 0, "nss-user-lookup.target");
710 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/paths_2etarget", 0, "paths.target");
711 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/plymouth_2dquit_2dwait_2eservice", 0, "plymouth-quit-wait.service");
712 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/plymouth_2dquit_2eservice", 0, "plymouth-quit.service");
713 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/plymouth_2dstart_2eservice", 0, "plymouth-start.service");
714 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/polkit_2eservice", 0, "polkit.service");
715 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/proc_2dsys_2dfs_2dbinfmt_5fmisc_2eautomount", 0, "proc-sys-fs-binfmt_misc.automount");
716 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/proc_2dsys_2dfs_2dbinfmt_5fmisc_2emount", 0, "proc-sys-fs-binfmt_misc.mount");
717 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/rc_2dlocal_2eservice", 0, "rc-local.service");
718 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/remote_2dcryptsetup_2etarget", 0, "remote-cryptsetup.target");
719 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/remote_2dfs_2dpre_2etarget", 0, "remote-fs-pre.target");
720 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/remote_2dfs_2etarget", 0, "remote-fs.target");
721 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/rescue_2eservice", 0, "rescue.service");
722 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/rescue_2etarget", 0, "rescue.target");
723 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/run_2duser_2d1000_2emount", 0, "run-user-1000.mount");
724 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/session_2d2_2escope", 0, "session-2.scope");
725 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/shutdown_2etarget", 0, "shutdown.target");
726 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/slices_2etarget", 0, "slices.target");
727 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/smartd_2eservice", 0, "smartd.service");
728 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sockets_2etarget", 0, "sockets.target");
729 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sound_2etarget", 0, "sound.target");
730 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sshd_2dkeygen_2etarget", 0, "sshd-keygen.target");
731 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sshd_2dkeygen_40ecdsa_2eservice", 0, "sshd-keygen@ecdsa.service");
732 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sshd_2dkeygen_40ed25519_2eservice", 0, "sshd-keygen@ed25519.service");
733 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sshd_2dkeygen_40rsa_2eservice", 0, "sshd-keygen@rsa.service");
734 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sshd_2eservice", 0, "sshd.service");
735 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/swap_2etarget", 0, "swap.target");
736 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a02_2e0_2dbacklight_2dacpi_5fvideo0_2edevice", 0, "sys-devices-pci0000:00-0000:00:02.0-backlight-acpi_video0.device");
737 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a02_2e0_2ddrm_2dcard0_2dcard0_5cx2dLVDS_5cx2d1_2dintel_5fbacklight_2edevice", 0, "sys-devices-pci0000:00-0000:00:02.0-drm-card0-card0\\x2dLVDS\\x2d1-intel_backlight.device");
738 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1a_2e0_2dusb1_2d1_5cx2d1_2d1_5cx2d1_2e6_2d1_5cx2d1_2e6_3a1_2e0_2dbluetooth_2dhci0_2edevice", 0, "sys-devices-pci0000:00-0000:00:1a.0-usb1-1\\x2d1-1\\x2d1.6-1\\x2d1.6:1.0-bluetooth-hci0.device");
739 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1b_2e0_2dsound_2dcard0_2edevice", 0, "sys-devices-pci0000:00-0000:00:1b.0-sound-card0.device");
740 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1c_2e0_2d0000_3a02_3a00_2e0_2dnet_2dwlp2s0_2edevice", 0, "sys-devices-pci0000:00-0000:00:1c.0-0000:02:00.0-net-wlp2s0.device");
741 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1c_2e2_2d0000_3a04_3a00_2e0_2dnet_2denp4s0_2edevice", 0, "sys-devices-pci0000:00-0000:00:1c.2-0000:04:00.0-net-enp4s0.device");
742 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data1_2dhost0_2dtarget0_3a0_3a0_2d0_3a0_3a0_3a0_2dblock_2dsda_2dsda1_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda1.device");
743 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data1_2dhost0_2dtarget0_3a0_3a0_2d0_3a0_3a0_3a0_2dblock_2dsda_2dsda2_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda2.device");
744 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data1_2dhost0_2dtarget0_3a0_3a0_2d0_3a0_3a0_3a0_2dblock_2dsda_2dsda3_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda3.device");
745 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data1_2dhost0_2dtarget0_3a0_3a0_2d0_3a0_3a0_3a0_2dblock_2dsda_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda.device");
746 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data2_2dhost1_2dtarget1_3a0_3a0_2d1_3a0_3a0_3a0_2dblock_2dsr0_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata2-host1-target1:0:0-1:0:0:0-block-sr0.device");
747 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data6_2dhost5_2dtarget5_3a0_3a0_2d5_3a0_3a0_3a0_2dblock_2dsdb_2dsdb1_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata6-host5-target5:0:0-5:0:0:0-block-sdb-sdb1.device");
748 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dpci0000_3a00_2d0000_3a00_3a1f_2e2_2data6_2dhost5_2dtarget5_3a0_3a0_2d5_3a0_3a0_3a0_2dblock_2dsdb_2edevice", 0, "sys-devices-pci0000:00-0000:00:1f.2-ata6-host5-target5:0:0-5:0:0:0-block-sdb.device");
749 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS0_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS0.device");
750 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS10_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS10.device");
751 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS11_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS11.device");
752 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS12_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS12.device");
753 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS13_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS13.device");
754 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS14_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS14.device");
755 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS15_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS15.device");
756 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS16_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS16.device");
757 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS17_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS17.device");
758 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS18_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS18.device");
759 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS19_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS19.device");
760 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS1_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS1.device");
761 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS20_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS20.device");
762 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS21_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS21.device");
763 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS22_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS22.device");
764 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS23_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS23.device");
765 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS24_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS24.device");
766 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS25_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS25.device");
767 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS26_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS26.device");
768 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS27_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS27.device");
769 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS28_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS28.device");
770 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS29_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS29.device");
771 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS2_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS2.device");
772 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS30_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS30.device");
773 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS31_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS31.device");
774 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS3_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS3.device");
775 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS4_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS4.device");
776 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS5_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS5.device");
777 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS6_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS6.device");
778 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS7_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS7.device");
779 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS8_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS8.device");
780 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dplatform_2dserial8250_2dtty_2dttyS9_2edevice", 0, "sys-devices-platform-serial8250-tty-ttyS9.device");
781 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2ddevices_2dvirtual_2dmisc_2drfkill_2edevice", 0, "sys-devices-virtual-misc-rfkill.device");
782 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dfs_2dfuse_2dconnections_2emount", 0, "sys-fs-fuse-connections.mount");
783 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dkernel_2dconfig_2emount", 0, "sys-kernel-config.mount");
784 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dkernel_2ddebug_2emount", 0, "sys-kernel-debug.mount");
785 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dmodule_2dconfigfs_2edevice", 0, "sys-module-configfs.device");
786 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dsubsystem_2dbluetooth_2ddevices_2dhci0_2edevice", 0, "sys-subsystem-bluetooth-devices-hci0.device");
787 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dsubsystem_2dnet_2ddevices_2denp4s0_2edevice", 0, "sys-subsystem-net-devices-enp4s0.device");
788 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sys_2dsubsystem_2dnet_2ddevices_2dwlp2s0_2edevice", 0, "sys-subsystem-net-devices-wlp2s0.device");
789 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sysinit_2etarget", 0, "sysinit.target");
790 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/syslog_2eservice", 0, "syslog.service");
791 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/syslog_2esocket", 0, "syslog.socket");
792 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/syslog_2etarget", 0, "syslog.target");
793 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/sysroot_2emount", 0, "sysroot.mount");
794 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2dgetty_2eslice", 0, "system-getty.slice");
795 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2dsshd_5cx2dkeygen_2eslice", 0, "system-sshd\\x2dkeygen.slice");
796 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2dsystemd_5cx2dbacklight_2eslice", 0, "system-systemd\\x2dbacklight.slice");
797 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2dsystemd_5cx2dcoredump_2eslice", 0, "system-systemd\\x2dcoredump.slice");
798 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2duser_5cx2druntime_5cx2ddir_2eslice", 0, "system-user\\x2druntime\\x2ddir.slice");
799 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/system_2eslice", 0, "system.slice");
800 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dask_2dpassword_2dconsole_2epath", 0, "systemd-ask-password-console.path");
801 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dask_2dpassword_2dconsole_2eservice", 0, "systemd-ask-password-console.service");
802 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dask_2dpassword_2dwall_2epath", 0, "systemd-ask-password-wall.path");
803 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dask_2dpassword_2dwall_2eservice", 0, "systemd-ask-password-wall.service");
804 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dbacklight_40backlight_3aacpi_5fvideo0_2eservice", 0, "systemd-backlight@backlight:acpi_video0.service");
805 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dbacklight_40backlight_3aintel_5fbacklight_2eservice", 0, "systemd-backlight@backlight:intel_backlight.service");
806 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dbinfmt_2eservice", 0, "systemd-binfmt.service");
807 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dcoredump_2esocket", 0, "systemd-coredump.socket");
808 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dcoredump_400_2eservice", 0, "systemd-coredump@0.service");
809 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dfirstboot_2eservice", 0, "systemd-firstboot.service");
5ff8da10 810 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dfsck_2droot_2eservice", 0, SPECIAL_FSCK_ROOT_SERVICE);
b4152e9b
YW
811 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dhwdb_2dupdate_2eservice", 0, "systemd-hwdb-update.service");
812 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dinitctl_2eservice", 0, "systemd-initctl.service");
813 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dinitctl_2esocket", 0, "systemd-initctl.socket");
814 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournal_2dcatalog_2dupdate_2eservice", 0, "systemd-journal-catalog-update.service");
815 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournal_2dflush_2eservice", 0, "systemd-journal-flush.service");
816 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournald_2daudit_2esocket", 0, "systemd-journald-audit.socket");
817 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournald_2ddev_2dlog_2esocket", 0, "systemd-journald-dev-log.socket");
818 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournald_2eservice", 0, "systemd-journald.service");
819 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket", 0, "systemd-journald.socket");
820 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dlogind_2eservice", 0, "systemd-logind.service");
821 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dmachine_2did_2dcommit_2eservice", 0, "systemd-machine-id-commit.service");
822 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dmodules_2dload_2eservice", 0, "systemd-modules-load.service");
823 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dnetworkd_2eservice", 0, "systemd-networkd.service");
824 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dnetworkd_2esocket", 0, "systemd-networkd.socket");
825 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2drandom_2dseed_2eservice", 0, "systemd-random-seed.service");
826 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dremount_2dfs_2eservice", 0, "systemd-remount-fs.service");
827 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dresolved_2eservice", 0, "systemd-resolved.service");
828 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2drfkill_2eservice", 0, "systemd-rfkill.service");
829 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2drfkill_2esocket", 0, "systemd-rfkill.socket");
830 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dsysctl_2eservice", 0, "systemd-sysctl.service");
831 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dsysusers_2eservice", 0, "systemd-sysusers.service");
832 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dtimesyncd_2eservice", 0, "systemd-timesyncd.service");
833 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice", 0, "systemd-tmpfiles-clean.service");
834 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer", 0, "systemd-tmpfiles-clean.timer");
835 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dsetup_2ddev_2eservice", 0, "systemd-tmpfiles-setup-dev.service");
836 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dsetup_2eservice", 0, "systemd-tmpfiles-setup.service");
837 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dudev_2dtrigger_2eservice", 0, "systemd-udev-trigger.service");
838 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dudevd_2dcontrol_2esocket", 0, "systemd-udevd-control.socket");
839 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dudevd_2dkernel_2esocket", 0, "systemd-udevd-kernel.socket");
840 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dudevd_2eservice", 0, "systemd-udevd.service");
841 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dupdate_2ddone_2eservice", 0, "systemd-update-done.service");
842 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dupdate_2dutmp_2drunlevel_2eservice", 0, "systemd-update-utmp-runlevel.service");
843 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dupdate_2dutmp_2eservice", 0, "systemd-update-utmp.service");
844 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2duser_2dsessions_2eservice", 0, "systemd-user-sessions.service");
845 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/systemd_2dvconsole_2dsetup_2eservice", 0, "systemd-vconsole-setup.service");
846 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/time_2dsync_2etarget", 0, "time-sync.target");
847 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/timers_2etarget", 0, "timers.target");
848 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/tmp_2emount", 0, "tmp.mount");
849 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/umount_2etarget", 0, "umount.target");
850 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/unbound_2danchor_2eservice", 0, "unbound-anchor.service");
851 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/unbound_2danchor_2etimer", 0, "unbound-anchor.timer");
852 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/upower_2eservice", 0, "upower.service");
853 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/user_2d1000_2eslice", 0, "user-1000.slice");
854 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/user_2druntime_2ddir_401000_2eservice", 0, "user-runtime-dir@1000.service");
855 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/user_2eslice", 0, "user.slice");
856 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/user_401000_2eservice", 0, "user@1000.service");
857 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/usr_2dlocal_2dtexlive_2emount", 0, "usr-local-texlive.mount");
858 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/var_2dlib_2dmachines_2emount", 0, "var-lib-machines.mount");
859 test_unit_name_from_dbus_path_one("/org/freedesktop/systemd1/unit/wpa_5fsupplicant_2eservice", 0, "wpa_supplicant.service");
860}
861
1682ff60 862int main(int argc, char* argv[]) {
a04efff8 863 _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
651d47d1 864 int r, rc = 0;
a04efff8 865
6d7c4033 866 test_setup_logging(LOG_INFO);
a04efff8 867
651d47d1 868 r = enter_cgroup_subroot();
317bb217
ZJS
869 if (r == -ENOMEDIUM)
870 return log_tests_skipped("cgroupfs not available");
8c759b33 871
a04efff8
YW
872 assert_se(runtime_dir = setup_fake_runtime_dir());
873
7410616c 874 test_unit_name_is_valid();
21868586
LP
875 test_unit_name_replace_instance();
876 test_unit_name_from_path();
877 test_unit_name_from_path_instance();
878 test_unit_name_mangle();
879 test_unit_name_to_path();
143bfdaf 880 TEST_REQ_RUNNING_SYSTEMD(rc = test_unit_printf());
068ae9fb
RC
881 test_unit_instance_is_valid();
882 test_unit_prefix_is_valid();
883 test_unit_name_change_suffix();
884 test_unit_name_build();
93c47472 885 test_slice_name_is_valid();
068ae9fb 886 test_build_subslice();
93c47472 887 test_build_parent_slice();
068ae9fb
RC
888 test_unit_name_to_instance();
889 test_unit_name_escape();
fee0a921 890 test_unit_name_template();
93c47472 891 test_unit_name_path_unescape();
72406c2f 892 test_unit_name_to_prefix();
b4152e9b 893 test_unit_name_from_dbus_path();
068ae9fb 894
143bfdaf 895 return rc;
b0193f1c 896}