Sharp.Augeas/Sharp.Augeas.Test/lens/tests/test_shellvars_list.aug

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: *)