1 #include <stic.h>
2 
3 #include "../../src/engine/options.h"
4 
5 extern const char *value;
6 
TEST(colon)7 TEST(colon)
8 {
9 	optval_t val = { .str_val = "/home/tmp" };
10 	vle_opts_assign("fusehome", val, OPT_GLOBAL);
11 
12 	assert_true(vle_opts_set("fusehome=/tmp", OPT_GLOBAL) == 0);
13 	assert_string_equal("/tmp", value);
14 
15 	assert_true(vle_opts_set("fusehome:/var/fuse", OPT_GLOBAL) == 0);
16 	assert_string_equal("/var/fuse", value);
17 }
18 
TEST(comments)19 TEST(comments)
20 {
21 	optval_t val = { .str_val = "/home/tmp" };
22 	vle_opts_assign("fusehome", val, OPT_GLOBAL);
23 
24 	assert_true(vle_opts_set("fusehome=/tmp \"bla", OPT_GLOBAL) == 0);
25 	assert_string_equal("/tmp", value);
26 
27 	assert_true(vle_opts_set("fusehome:/var/fuse \"comment", OPT_GLOBAL) == 0);
28 	assert_string_equal("/var/fuse", value);
29 }
30 
TEST(unmatched_quote)31 TEST(unmatched_quote)
32 {
33 	assert_failure(vle_opts_set("fusehome='/tmp", OPT_GLOBAL));
34 	assert_failure(vle_opts_set("fusehome=\"/var/fuse", OPT_GLOBAL));
35 }
36 
TEST(print_all_pseudo_option)37 TEST(print_all_pseudo_option)
38 {
39 	assert_success(vle_opts_set("all", OPT_GLOBAL));
40 }
41 
TEST(reset_all_pseudo_option)42 TEST(reset_all_pseudo_option)
43 {
44 	extern int fastrun;
45 
46 	optval_t val = { .bool_val = 1 };
47 
48 	fastrun = val.bool_val;
49 	vle_opts_assign("fastrun", val, OPT_GLOBAL);
50 	assert_success(vle_opts_set("all&", OPT_GLOBAL));
51 	assert_false(fastrun);
52 
53 	fastrun = val.bool_val;
54 	vle_opts_assign("fastrun", val, OPT_GLOBAL);
55 	assert_success(vle_opts_set("all &", OPT_GLOBAL));
56 	assert_false(fastrun);
57 
58 	fastrun = val.bool_val;
59 	vle_opts_assign("fastrun", val, OPT_GLOBAL);
60 	assert_success(vle_opts_set("all   &", OPT_GLOBAL));
61 	assert_false(fastrun);
62 }
63 
TEST(wrong_all_pseudo_option_suffixes)64 TEST(wrong_all_pseudo_option_suffixes)
65 {
66 	assert_failure(vle_opts_set("all!", OPT_GLOBAL));
67 	assert_failure(vle_opts_set("all !", OPT_GLOBAL));
68 	assert_failure(vle_opts_set("all #", OPT_GLOBAL));
69 	assert_failure(vle_opts_set("all#", OPT_GLOBAL));
70 }
71 
TEST(wrong_all_pseudo_option_prefixes)72 TEST(wrong_all_pseudo_option_prefixes)
73 {
74 	assert_failure(vle_opts_set("noall", OPT_GLOBAL));
75 	assert_failure(vle_opts_set("invall", OPT_GLOBAL));
76 }
77 
TEST(huge_input_length)78 TEST(huge_input_length)
79 {
80 	assert_success(vle_opts_set("fusehome=llongtextlongtextlongtextlongtextlongte"
81 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
82 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
83 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
84 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
85 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
86 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
87 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
88 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
89 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
90 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
91 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
92 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
93 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlongtextlo"
94 			"ngtextlongtextlongtextlongtextlongtextlongtextlongtextadfadfasdfasdfasfa"
95 			"sdfsdft", OPT_GLOBAL));
96 }
97 
TEST(very_long_option_name_does_not_cause_crash)98 TEST(very_long_option_name_does_not_cause_crash)
99 {
100 	assert_failure(vle_opts_set("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
101 			"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
102 			"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx!", OPT_GLOBAL));
103 }
104 
TEST(weird_input)105 TEST(weird_input)
106 {
107 	assert_failure(vle_opts_set("opt        !opt", OPT_GLOBAL));
108 }
109 
110 /* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : */
111 /* vim: set cinoptions+=t0 filetype=c : */
112