(* Test for sysconfig lens *) module Test_sysconfig = let lns = Sysconfig.lns let eth_static = "# Intel Corporation PRO/100 VE Network Connection DEVICE=eth0 BOOTPROTO=static BROADCAST=172.31.0.255 HWADDR=ab:cd:ef:12:34:56 export IPADDR=172.31.0.31 # this is our IP #DHCP_HOSTNAME=host.example.com NETMASK=255.255.255.0 NETWORK=172.31.0.0 unset ONBOOT # We do not want this var " let empty_val = "EMPTY=\nDEVICE=eth0\n" let key_brack = "SOME_KEY[1]=\nDEVICE=eth0\n" test lns get eth_static = { "#comment" = "Intel Corporation PRO/100 VE Network Connection" } { "DEVICE" = "eth0" } { "BOOTPROTO" = "static" } { "BROADCAST" = "172.31.0.255" } { "HWADDR" = "ab:cd:ef:12:34:56" } { "IPADDR" = "172.31.0.31" { "export" } { "#comment" = "this is our IP" } } { "#comment" = "DHCP_HOSTNAME=host.example.com" } { "NETMASK" = "255.255.255.0" } { "NETWORK" = "172.31.0.0" } { "@unset" { "1" = "ONBOOT" } { "#comment" = "We do not want this var" } } test lns put eth_static after set "BOOTPROTO" "dhcp" ; rm "IPADDR" ; rm "BROADCAST" ; rm "NETMASK" ; rm "NETWORK" = "# Intel Corporation PRO/100 VE Network Connection DEVICE=eth0 BOOTPROTO=dhcp HWADDR=ab:cd:ef:12:34:56 #DHCP_HOSTNAME=host.example.com unset ONBOOT # We do not want this var " test lns get empty_val = { "EMPTY" = "" } { "DEVICE" = "eth0" } test lns get key_brack = { "SOME_KEY[1]" = "" } { "DEVICE" = "eth0" } test lns get "smartd_opts=\"-q never\"\n" = { "smartd_opts" = "-q never" } test lns get "var=val \n" = { "var" = "val" } test lns get ". /etc/java/java.conf\n" = { ".source" = "/etc/java/java.conf" } (* Quoted strings and other oddities *) test lns get "var=\"foo 'bar'\"\n" = { "var" = "foo 'bar'" } test lns get "var=\"eth0\"\n" = { "var" = "eth0" } test lns get "var='eth0'\n" = { "var" = "eth0" } test lns get "var='Some \"funny\" value'\n" = { "var" = "Some \"funny\" value" } test lns get "var=\"\\\"\"\n" = { "var" = "\\\"" } test lns get "var=\\\"\n" = { "var" = "\\\"" } test lns get "var=ab#c\n" = { "var" = "ab#c" } test lns get "var='ab#c'\n" = { "var" = "ab#c" } test lns get "var=\"ab#c\"\n" = { "var" = "ab#c" } test lns get "var=\"ab#c\"\n" = { "var" = "ab#c" } (* We don't handle backticks *) test lns get "var=`grep nameserver /etc/resolv.conf | head -1`\n" = * test lns get "var=ab #c\n" = { "var" = "ab" { "#comment" = "c" } } test lns put "var=ab #c\n" after rm "/var/#comment" = "var=ab\n" test lns put "var=ab\n" after set "/var/#comment" "this is a var" = "var=ab # this is a var\n" (* Test semicolons *) test lns get "VAR1=\"this;is;a;test\"\nVAR2=this;\n" = { "VAR1" = "this;is;a;test" } { "VAR2" = "this" } (* BZ 761246 *) test lns get "DEVICE=\"eth0\";\n" = { "DEVICE" = "eth0" } test lns put "DEVICE=\"eth0\";\n" after set "/DEVICE" "em1" = "DEVICE=\"em1\";\n" test lns get "DEVICE=\"eth0\"; # remark\n" = { "DEVICE" = "eth0" } { "#comment" = "remark" } (* Bug 109: allow a bare export *) test lns get "export FOO\n" = { "@export" { "1" = "FOO" } } (* Check we put quotes in when changes require them *) test lns put "var=\"v\"\n" after rm "/foo" = "var=\"v\"\n" test lns put "var=v\n" after set "/var" "v w"= "var=\"v w\"\n" test lns put "var='v'\n" after set "/var" "v w"= "var='v w'\n" test lns put "var=v\n" after set "/var" "v'w"= "var=\"v'w\"\n" test lns put "var=v\n" after set "/var" "v\"w"= "var='v\"w'\n" (* RHBZ#1043636: empty comment lines after comments *) test lns get "#MOUNTD_NFS_V3\n#\n" = { "#comment" = "MOUNTD_NFS_V3" } (* Handle leading whitespace at the beginning of a line correctly *) test lns get " var=value\n" = { "var" = "value" } test lns put " var=value\n" after set "/var" "val2" = " var=val2\n" test lns get "\t \tvar=value\n" = { "var" = "value" } test lns get " export var=value\n" = { "var" = "value" { "export" } } (* Local Variables: *) (* mode: caml *) (* End: *)