chiark / gitweb /
tests: add test for install_full_printf()
[elogind.git] / src / test / test-env-replace.c
1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3 /***
4   This file is part of systemd.
5
6   Copyright 2010 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
22 #include <unistd.h>
23 #include <string.h>
24
25 #include "util.h"
26 #include "log.h"
27 #include "strv.h"
28
29 int main(int argc, char *argv[]) {
30
31         const char *env[] = {
32                 "FOO=BAR BAR",
33                 "BAR=waldo",
34                 NULL
35         };
36
37         const char *line[] = {
38                 "FOO$FOO",
39                 "FOO$FOOFOO",
40                 "FOO${FOO}$FOO",
41                 "FOO${FOO}",
42                 "${FOO}",
43                 "$FOO",
44                 "$FOO$FOO",
45                 "${FOO}${BAR}",
46                 "${FOO",
47                 NULL
48         };
49
50         char **i, **r, *t, **a, **b;
51         const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx";
52
53         a = strv_parse_nulstr(nulstr, sizeof(nulstr)-1);
54
55         STRV_FOREACH(i, a)
56                 printf("nulstr--%s\n", *i);
57
58         strv_free(a);
59
60         r = replace_env_argv((char**) line, (char**) env);
61
62         STRV_FOREACH(i, r)
63                 printf("%s\n", *i);
64
65         strv_free(r);
66
67         t = normalize_env_assignment("foo=bar");
68         printf("%s\n", t);
69         free(t);
70
71         t = normalize_env_assignment("=bar");
72         printf("%s\n", t);
73         free(t);
74
75         t = normalize_env_assignment("foo=");
76         printf("%s\n", t);
77         free(t);
78
79         t = normalize_env_assignment("=");
80         printf("%s\n", t);
81         free(t);
82
83         t = normalize_env_assignment("");
84         printf("%s\n", t);
85         free(t);
86
87         t = normalize_env_assignment("a=\"waldo\"");
88         printf("%s\n", t);
89         free(t);
90
91         t = normalize_env_assignment("a=\"waldo");
92         printf("%s\n", t);
93         free(t);
94
95         t = normalize_env_assignment("a=waldo\"");
96         printf("%s\n", t);
97         free(t);
98
99         t = normalize_env_assignment("a=\'");
100         printf("%s\n", t);
101         free(t);
102
103         t = normalize_env_assignment("a=\'\'");
104         printf("%s\n", t);
105         free(t);
106
107         t = normalize_env_assignment(" xyz  ");
108         printf("<%s>\n", t);
109         free(t);
110
111         t = normalize_env_assignment(" xyz = bar  ");
112         printf("<%s>\n", t);
113         free(t);
114
115         t = normalize_env_assignment(" xyz = 'bar ' ");
116         printf("<%s>\n", t);
117         free(t);
118
119         t = normalize_env_assignment(" ' xyz' = 'bar ' ");
120         printf("<%s>\n", t);
121         free(t);
122
123         a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL);
124         b = strv_new("FOO=KKK", "FOO=", "PIEP=", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL);
125
126         r = strv_env_merge(2, a, b);
127         strv_free(a);
128         strv_free(b);
129
130         STRV_FOREACH(i, r)
131                 printf("%s\n", *i);
132
133         printf("CLEANED UP:\n");
134
135         r = strv_env_clean(r);
136
137         STRV_FOREACH(i, r)
138                 printf("%s\n", *i);
139
140         strv_free(r);
141
142         return 0;
143 }