145 lines
4.2 KiB
Plaintext
145 lines
4.2 KiB
Plaintext
|
(* Test for shell list handling lens *)
|
||
|
module Test_shellvars_list =
|
||
|
|
||
|
let list_vals = "# Some comment
|
||
|
MODULES_LOADED_ON_BOOT=\"ipv6 sunrpc\"
|
||
|
|
||
|
DEFAULT_APPEND=\"showopts noresume console=tty0 console=ttyS0,115200n8 ro\"
|
||
|
|
||
|
LOADER_TYPE=\"grub\"
|
||
|
"
|
||
|
|
||
|
test Shellvars_list.lns get list_vals =
|
||
|
{ "#comment" = "Some comment" }
|
||
|
{ "MODULES_LOADED_ON_BOOT"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "ipv6" }
|
||
|
{ "value" = "sunrpc" } }
|
||
|
{ }
|
||
|
{ "DEFAULT_APPEND"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "showopts" }
|
||
|
{ "value" = "noresume" }
|
||
|
{ "value" = "console=tty0" }
|
||
|
{ "value" = "console=ttyS0,115200n8" }
|
||
|
{ "value" = "ro" } }
|
||
|
{ }
|
||
|
{ "LOADER_TYPE"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "grub" } }
|
||
|
|
||
|
|
||
|
(* append a value *)
|
||
|
test Shellvars_list.lns put "VAR=\"test1\t \ntest2\"\n" after
|
||
|
set "VAR/value[last()+1]" "test3"
|
||
|
= "VAR=\"test1\t \ntest2 test3\"\n"
|
||
|
|
||
|
(* in double quoted lists, single quotes and escaped values are allowed *)
|
||
|
test Shellvars_list.lns get "VAR=\"test'1 test2 a\ \\\"longer\\\"\ test\"\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "test'1" }
|
||
|
{ "value" = "test2" }
|
||
|
{ "value" = "a\ \\\"longer\\\"\ test" } }
|
||
|
|
||
|
(* add new value, delete one and append something *)
|
||
|
test Shellvars_list.lns put list_vals after
|
||
|
set "FAILSAVE_APPEND/quote" "\"" ;
|
||
|
set "FAILSAVE_APPEND/value[last()+1]" "console=ttyS0" ;
|
||
|
rm "LOADER_TYPE" ;
|
||
|
rm "MODULES_LOADED_ON_BOOT/value[1]" ;
|
||
|
set "DEFAULT_APPEND/value[last()+1]" "teststring"
|
||
|
= "# Some comment
|
||
|
MODULES_LOADED_ON_BOOT=\"sunrpc\"
|
||
|
|
||
|
DEFAULT_APPEND=\"showopts noresume console=tty0 console=ttyS0,115200n8 ro teststring\"
|
||
|
|
||
|
FAILSAVE_APPEND=\"console=ttyS0\"
|
||
|
"
|
||
|
|
||
|
(* test of single quotes (leading/trailing whitespaces are kept *)
|
||
|
(* leading/trailing) *)
|
||
|
test Shellvars_list.lns put "VAR=' \t test1\t \ntest2 '\n" after
|
||
|
set "VAR/value[last()+1]" "test3"
|
||
|
= "VAR=' \t test1\t \ntest2 test3 '\n"
|
||
|
|
||
|
(* change quotes (leading/trailing whitespaces are lost *)
|
||
|
test Shellvars_list.lns put "VAR=' \t test1\t \ntest2 '\n" after
|
||
|
set "VAR/quote" "\""
|
||
|
= "VAR=\"test1\t \ntest2\"\n"
|
||
|
|
||
|
(* double quotes are allowed in single quoted lists *)
|
||
|
test Shellvars_list.lns get "VAR='test\"1 test2'\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "'" }
|
||
|
{ "value" = "test\"1" }
|
||
|
{ "value" = "test2" } }
|
||
|
|
||
|
(* empty list with quotes *)
|
||
|
test Shellvars_list.lns get "VAR=''\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "'" } }
|
||
|
|
||
|
(* unquoted value *)
|
||
|
test Shellvars_list.lns get "VAR=test\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "" }
|
||
|
{ "value" = "test" } }
|
||
|
|
||
|
(* uquoted value with escaped space etc. *)
|
||
|
test Shellvars_list.lns get "VAR=a\\ \\\"long\\\"\\ test\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "" }
|
||
|
{ "value" = "a\\ \\\"long\\\"\\ test" } }
|
||
|
|
||
|
(* append to unquoted value *)
|
||
|
test Shellvars_list.lns put "VAR=test1\n" after
|
||
|
set "VAR/quote" "\"";
|
||
|
set "VAR/value[last()+1]" "test2"
|
||
|
= "VAR=\"test1 test2\"\n"
|
||
|
|
||
|
(* empty entry *)
|
||
|
test Shellvars_list.lns get "VAR=\n" =
|
||
|
{ "VAR"
|
||
|
{ "quote" = "" } }
|
||
|
|
||
|
(* set value w/o quotes to empty value... *)
|
||
|
test Shellvars_list.lns put "VAR=\n" after
|
||
|
set "VAR/value[last()+1]" "test"
|
||
|
= "VAR=test\n"
|
||
|
|
||
|
(* ... or no value *)
|
||
|
test Shellvars_list.lns put "" after
|
||
|
set "VAR/quote" "";
|
||
|
set "VAR/value[1]" "test"
|
||
|
= "VAR=test\n"
|
||
|
|
||
|
(* Ticket #368 - backticks *)
|
||
|
test Shellvars_list.lns get "GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`\n" =
|
||
|
{ "GRUB_DISTRIBUTOR"
|
||
|
{ "quote" = "" }
|
||
|
{ "value" = "`lsb_release -i -s 2> /dev/null || echo Debian`" } }
|
||
|
|
||
|
(* Test: Shellvars_list.lns
|
||
|
Ticket #342: end-of-line comments *)
|
||
|
test Shellvars_list.lns get "service_ping=\"ping/icmp\" #ping\n" =
|
||
|
{ "service_ping"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "ping/icmp" }
|
||
|
{ "#comment" = "ping" } }
|
||
|
|
||
|
(* Test: Shellvars_list.lns
|
||
|
Support double-quoted continued lines *)
|
||
|
test Shellvars_list.lns get "DAEMON_OPTS=\"-a :6081 \
|
||
|
-T localhost:6082\"\n" =
|
||
|
{ "DAEMON_OPTS"
|
||
|
{ "quote" = "\"" }
|
||
|
{ "value" = "-a" }
|
||
|
{ "value" = ":6081" }
|
||
|
{ "value" = "-T" }
|
||
|
{ "value" = "localhost:6082" } }
|
||
|
|
||
|
(* Local Variables: *)
|
||
|
(* mode: caml *)
|
||
|
(* End: *)
|