[hazard pointers] add write barrier on clear as well
[mono-project.git] / eglib / test / shell.c
blob4715f1ca7e812877771e013585f24acc9f3f73fa
1 #include <glib.h>
2 #include <string.h>
3 #include <stdio.h>
4 #include "test.h"
6 RESULT
7 test_shell_argv1 ()
9 GError *error;
10 gint argc;
11 gchar **argv;
12 gboolean ret;
14 /* The next line prints a critical error and returns FALSE
15 ret = g_shell_parse_argv (NULL, NULL, NULL, NULL);
17 ret = g_shell_parse_argv ("", NULL, NULL, NULL);
18 if (ret)
19 return FAILED ("1. It should return FALSE");
21 ret = g_shell_parse_argv ("hola", NULL, NULL, NULL);
22 if (!ret)
23 return FAILED ("2. It should return TRUE");
25 argc = 0;
26 ret = g_shell_parse_argv ("hola", &argc, NULL, NULL);
27 if (!ret)
28 return FAILED ("3. It should return TRUE");
29 if (argc != 1)
30 return FAILED ("4. argc was %d", argc);
32 argc = 0;
33 ret = g_shell_parse_argv ("hola bola", &argc, NULL, NULL);
34 if (!ret)
35 return FAILED ("5. It should return TRUE");
36 if (argc != 2)
37 return FAILED ("6. argc was %d", argc);
39 argc = 0;
40 ret = g_shell_parse_argv ("hola bola", &argc, &argv, NULL);
41 if (!ret)
42 return FAILED ("7. It should return TRUE");
43 if (argc != 2)
44 return FAILED ("8. argc was %d", argc);
45 if (strcmp (argv [0], "hola"))
46 return FAILED ("9. argv[0] was %s", argv [0]);
47 if (strcmp (argv [1], "bola"))
48 return FAILED ("10. argv[1] was %s", argv [1]);
50 g_strfreev (argv);
51 argv = NULL;
52 argc = 0;
53 error = NULL;
54 ret = g_shell_parse_argv ("hola 'bola'", &argc, &argv, &error);
55 if (!ret)
56 return FAILED ("11. It should return TRUE");
57 if (argc != 2)
58 return FAILED ("12. argc was %d expected 2", argc);
59 if (strcmp (argv [0], "hola"))
60 return FAILED ("13. argv[0] was %s", argv [0]);
61 if (strcmp (argv [1], "bola"))
62 return FAILED ("14. argv[1] was %s", argv [1]);
63 if (error != NULL)
64 return FAILED ("15. error is not null");
67 g_strfreev (argv);
68 argv = NULL;
69 argc = 0;
70 error = NULL;
71 ret = g_shell_parse_argv ("hola '' 'bola'", &argc, &argv, &error);
72 if (!ret)
73 return FAILED ("16. It should return TRUE");
74 if (argc != 3)
75 return FAILED ("17. argc was %d expected 3", argc);
76 if (strcmp (argv [0], "hola"))
77 return FAILED ("18. argv[0] was %s", argv [0]);
78 if (strcmp (argv [1], ""))
79 return FAILED ("19. argv[2] was %s", argv [1]);
80 if (strcmp (argv [2], "bola"))
81 return FAILED ("19. argv[2] was %s", argv [2]);
82 if (error != NULL)
83 return FAILED ("20. error is not null");
85 g_strfreev (argv);
86 argv = NULL;
87 argc = 0;
88 error = NULL;
89 ret = g_shell_parse_argv ("hola'' bola", &argc, &argv, &error);
90 if (!ret)
91 return FAILED ("21. It should return TRUE");
92 if (argc != 2)
93 return FAILED ("22. argc was %d expected 2", argc);
94 if (strcmp (argv [0], "hola"))
95 return FAILED ("23. argv[0] was %s", argv [0]);
96 if (strcmp (argv [1], "bola"))
97 return FAILED ("24. argv[2] was %s", argv [1]);
98 if (error != NULL)
99 return FAILED ("25. error is not null");
101 return OK;
104 RESULT
105 test_shell_argv2 ()
107 GError *error;
108 gint argc;
109 gchar **argv;
110 gboolean ret;
112 argv = NULL;
113 argc = 0;
114 error = NULL;
115 ret = g_shell_parse_argv ("hola \"bola\"", &argc, &argv, &error);
116 if (!ret)
117 return FAILED ("1. It should return TRUE");
118 if (argc != 2)
119 return FAILED ("2. argc was %d expected 2", argc);
120 if (strcmp (argv [0], "hola"))
121 return FAILED ("3. argv[0] was %s", argv [0]);
122 if (strcmp (argv [1], "bola"))
123 return FAILED ("4. argv[1] was %s", argv [1]);
124 if (error != NULL)
125 return FAILED ("5. error is not null");
127 g_strfreev (argv);
128 argv = NULL;
129 argc = 0;
130 error = NULL;
131 ret = g_shell_parse_argv ("hola \"\" \"bola \"", &argc, &argv, &error);
132 if (!ret)
133 return FAILED ("6. It should return TRUE");
134 if (argc != 3)
135 return FAILED ("7. argc was %d expected 3", argc);
136 if (strcmp (argv [0], "hola"))
137 return FAILED ("8. argv[0] was %s", argv [0]);
138 if (strcmp (argv [1], ""))
139 return FAILED ("9. argv[2] was %s", argv [1]);
140 if (strcmp (argv [2], "bola "))
141 return FAILED ("10. argv[2] was %s", argv [2]);
142 if (error != NULL)
143 return FAILED ("11. error is not null");
145 g_strfreev (argv);
146 argv = NULL;
147 argc = 0;
148 error = NULL;
149 ret = g_shell_parse_argv ("hola\n\t \"\t\" \"bola \"", &argc, &argv, &error);
150 if (!ret)
151 return FAILED ("10. It should return TRUE");
152 if (argc != 3)
153 return FAILED ("11. argc was %d expected 3", argc);
154 if (strcmp (argv [0], "hola"))
155 return FAILED ("12. argv[0] was %s", argv [0]);
156 if (strcmp (argv [1], "\t"))
157 return FAILED ("13. argv[2] was %s", argv [1]);
158 if (strcmp (argv [2], "bola "))
159 return FAILED ("14. argv[2] was %s", argv [2]);
160 if (error != NULL)
161 return FAILED ("15. error is not null");
163 g_strfreev (argv);
164 argv = NULL;
165 argc = 0;
166 error = NULL;
167 ret = g_shell_parse_argv ("hola\n\t \\\n \"\t\" \"bola \"", &argc, &argv, &error);
168 if (!ret)
169 return FAILED ("16. It should return TRUE");
170 if (argc != 3)
171 return FAILED ("17. argc was %d expected 3", argc);
172 if (strcmp (argv [0], "hola"))
173 return FAILED ("18. argv[0] was %s", argv [0]);
174 if (strcmp (argv [1], "\t"))
175 return FAILED ("19. argv[2] was %s", argv [1]);
176 if (strcmp (argv [2], "bola "))
177 return FAILED ("20. argv[2] was %s", argv [2]);
178 if (error != NULL)
179 return FAILED ("21. error is not null");
181 g_strfreev (argv);
182 return OK;
185 RESULT
186 test_shell_argv3 ()
188 GError *error;
189 gint argc;
190 gchar **argv;
191 gboolean ret;
193 argv = NULL;
194 argc = 0;
195 error = NULL;
196 ret = g_shell_parse_argv ("hola \"bola", &argc, &argv, &error);
197 if (ret)
198 return FAILED ("1. It should return FALSE");
199 if (argc != 0)
200 return FAILED ("2. argc was %d expected 0", argc);
201 if (argv != NULL)
202 return FAILED ("3. argv[0] was %s", argv [0]);
203 if (error == NULL)
204 return FAILED ("4. error is null");
206 /* Text ended before matching quote was found for ". (The text was 'hola "bola') */
207 g_error_free (error);
208 error = NULL;
209 ret = g_shell_parse_argv ("hola \\\"bola", &argc, &argv, &error);
210 if (!ret)
211 return FAILED ("5. It should return TRUE");
212 if (argc != 2)
213 return FAILED ("6. argc was %d expected 2", argc);
214 if (strcmp (argv [0], "hola"))
215 return FAILED ("18. argv[0] was %s", argv [0]);
216 if (strcmp (argv [1], "\"bola"))
217 return FAILED ("18. argv[1] was %s", argv [1]);
218 if (error != NULL)
219 return FAILED ("8. error is not null");
221 g_strfreev (argv);
222 argv = NULL;
223 argc = 0;
224 ret = g_shell_parse_argv ("hola \"\n\\'bola\"", &argc, &argv, &error);
225 if (!ret)
226 return FAILED ("9. It should return TRUE. %s", error->message);
227 if (argc != 2)
228 return FAILED ("10. argc was %d expected 2", argc);
229 if (strcmp (argv [0], "hola"))
230 return FAILED ("11. argv[0] was %s", argv [0]);
231 if (strcmp (argv [1], "\n\\'bola"))
232 return FAILED ("12. argv[1] was %s", argv [1]);
233 if (error != NULL)
234 return FAILED ("13. error is not null");
236 g_strfreev (argv);
237 argv = NULL;
238 argc = 0;
239 return OK;
242 // This was the 2.8 showstopper error
243 RESULT
244 test_shell_argv4 ()
246 GError *error;
247 gint argc;
248 gchar **argv;
249 gboolean ret;
250 char *str = "'/usr/bin/gnome-terminal' -e \"bash -c 'read -p \\\"Press any key to continue...\\\" -n1;'\"";
252 argv = NULL;
253 argc = 0;
254 error = NULL;
255 ret = g_shell_parse_argv (str, &argc, &argv, &error);
256 if (!ret)
257 return FAILED ("1. It should return TRUE");
258 if (argc != 3)
259 return FAILED ("2. argc was %d expected 3", argc);
260 if (argv == NULL)
261 return FAILED ("3. argv[0] was NULL");
262 if (error != NULL)
263 return FAILED ("4. error was set");
265 if (strcmp (argv [0], "/usr/bin/gnome-terminal"))
266 return FAILED ("5. Expected /usr/bin/gnome-terminal got %s", argv [0]);
267 if (strcmp (argv [1], "-e"))
268 return FAILED ("6. Expected -e, got: %s", argv [1]);
269 if (strcmp (argv [2], "bash -c 'read -p \"Press any key to continue...\" -n1;'"))
270 return FAILED ("7. Got unexpected result: %s\n", argv [2]);
272 return OK;
275 // This is https://bugzilla.novell.com/show_bug.cgi?id=655896
276 RESULT
277 test_shell_argv5 ()
279 GError *error;
280 gint argc;
281 gchar **argv;
282 gboolean ret;
283 char *str = "echo \"foo\",\"bar\"";
285 argv = NULL;
286 argc = 0;
287 error = NULL;
288 ret = g_shell_parse_argv (str, &argc, &argv, &error);
289 if (!ret)
290 return FAILED ("1. It should return TRUE");
291 if (argc != 2)
292 return FAILED ("2. argc was %d expected 2", argc);
293 if (argv == NULL)
294 return FAILED ("3. argv[0] was NULL");
295 if (error != NULL)
296 return FAILED ("4. error was set");
298 if (strcmp (argv [0], "echo"))
299 return FAILED ("5. Expected echo got %s", argv [0]);
300 if (strcmp (argv [1], "foo,bar"))
301 return FAILED ("6. Expected foo,bar, got: %s", argv [1]);
303 return OK;
306 RESULT
307 test_quote ()
309 if (strcmp (g_shell_quote ("foo"), "'foo'"))
310 return FAILED ("Should return 'foo'");
312 if (strcmp (g_shell_quote ("foo'bar"), "'foo'\\''bar'"))
313 return FAILED ("Should return 'foo'\\''bar'");
315 if (strcmp (g_shell_quote ("foo bar"), "'foo bar'"))
316 return FAILED ("Should return 'foo bar'");
317 return OK;
320 static Test shell_tests [] = {
321 {"test_shell_argv1", test_shell_argv1},
322 {"test_shell_argv2", test_shell_argv2},
323 {"test_shell_argv3", test_shell_argv3},
324 {"test_shell_argv4", test_shell_argv4},
325 {"test_shell_argv5", test_shell_argv5},
326 {"g_shell_quote", test_quote},
327 {NULL, NULL}
330 DEFINE_TEST_GROUP_INIT(shell_tests_init, shell_tests)