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