1
(* Test for shell list handling lens *)
2
module Test_shellvars_list =
4
let list_vals = "# Some comment
5
MODULES_LOADED_ON_BOOT=\"ipv6 sunrpc\"
7
DEFAULT_APPEND=\"showopts noresume console=tty0 console=ttyS0,115200n8 ro\"
12
test Shellvars_list.lns get list_vals =
13
{ "#comment" = "Some comment" }
14
{ "MODULES_LOADED_ON_BOOT"
17
{ "value" = "sunrpc" } }
21
{ "value" = "showopts" }
22
{ "value" = "noresume" }
23
{ "value" = "console=tty0" }
24
{ "value" = "console=ttyS0,115200n8" }
29
{ "value" = "grub" } }
33
test Shellvars_list.lns put "VAR=\"test1\t \ntest2\"\n" after
34
set "VAR/value[last()+1]" "test3"
35
= "VAR=\"test1\t \ntest2 test3\"\n"
37
(* in double quoted lists, single quotes and escaped values are allowed *)
38
test Shellvars_list.lns get "VAR=\"test'1 test2 a\ \\\"longer\\\"\ test\"\n" =
41
{ "value" = "test'1" }
43
{ "value" = "a\ \\\"longer\\\"\ test" } }
45
(* add new value, delete one and append something *)
46
test Shellvars_list.lns put list_vals after
47
set "FAILSAVE_APPEND/quote" "\"" ;
48
set "FAILSAVE_APPEND/value[last()+1]" "console=ttyS0" ;
50
rm "MODULES_LOADED_ON_BOOT/value[1]" ;
51
set "DEFAULT_APPEND/value[last()+1]" "teststring"
53
MODULES_LOADED_ON_BOOT=\"sunrpc\"
55
DEFAULT_APPEND=\"showopts noresume console=tty0 console=ttyS0,115200n8 ro teststring\"
57
FAILSAVE_APPEND=\"console=ttyS0\"
60
(* test of single quotes (leading/trailing whitespaces are kept *)
61
(* leading/trailing) *)
62
test Shellvars_list.lns put "VAR=' \t test1\t \ntest2 '\n" after
63
set "VAR/value[last()+1]" "test3"
64
= "VAR=' \t test1\t \ntest2 test3 '\n"
66
(* change quotes (leading/trailing whitespaces are lost *)
67
test Shellvars_list.lns put "VAR=' \t test1\t \ntest2 '\n" after
69
= "VAR=\"test1\t \ntest2\"\n"
71
(* double quotes are allowed in single quoted lists *)
72
test Shellvars_list.lns get "VAR='test\"1 test2'\n" =
75
{ "value" = "test\"1" }
76
{ "value" = "test2" } }
78
(* emtpy list with quotes *)
79
test Shellvars_list.lns get "VAR=''\n" =
84
test Shellvars_list.lns get "VAR=test\n" =
87
{ "value" = "test" } }
89
(* uquoted value with escaped space etc. *)
90
test Shellvars_list.lns get "VAR=a\\ \\\"long\\\"\\ test\n" =
93
{ "value" = "a\\ \\\"long\\\"\\ test" } }
95
(* append to unquoted value *)
96
test Shellvars_list.lns put "VAR=test1\n" after
98
set "VAR/value[last()+1]" "test2"
99
= "VAR=\"test1 test2\"\n"
102
test Shellvars_list.lns get "VAR=\n" =
106
(* set value w/o quotes to empty value... *)
107
test Shellvars_list.lns put "VAR=\n" after
108
set "VAR/value[last()+1]" "test"
111
(* ... or no value *)
112
test Shellvars_list.lns put "" after
114
set "VAR/value[1]" "test"
117
(* Local Variables: *)