1 (* Test for sysconfig lens *)
2 module Test_sysconfig =
4 let lns = Sysconfig.lns
6 let eth_static = "# Intel Corporation PRO/100 VE Network Connection
10 HWADDR=ab:cd:ef:12:34:56
11 export IPADDR=172.31.0.31 # this is our IP
12 #DHCP_HOSTNAME=host.example.com
15 unset ONBOOT # We do not want this var
17 let empty_val = "EMPTY=\nDEVICE=eth0\n"
19 let key_brack = "SOME_KEY[1]=\nDEVICE=eth0\n"
21 test lns get eth_static =
22 { "#comment" = "Intel Corporation PRO/100 VE Network Connection" }
24 { "BOOTPROTO" = "static" }
25 { "BROADCAST" = "172.31.0.255" }
26 { "HWADDR" = "ab:cd:ef:12:34:56" }
27 { "IPADDR" = "172.31.0.31"
29 { "#comment" = "this is our IP" } }
30 { "#comment" = "DHCP_HOSTNAME=host.example.com" }
31 { "NETMASK" = "255.255.255.0" }
32 { "NETWORK" = "172.31.0.0" }
35 { "#comment" = "We do not want this var" } }
37 test lns put eth_static after
38 set "BOOTPROTO" "dhcp" ;
43 = "# Intel Corporation PRO/100 VE Network Connection
46 HWADDR=ab:cd:ef:12:34:56
47 #DHCP_HOSTNAME=host.example.com
48 unset ONBOOT # We do not want this var
50 test lns get empty_val =
51 { "EMPTY" = "" } { "DEVICE" = "eth0" }
53 test lns get key_brack =
54 { "SOME_KEY[1]" = "" } { "DEVICE" = "eth0" }
56 test lns get "smartd_opts=\"-q never\"\n" =
57 { "smartd_opts" = "-q never" }
59 test lns get "var=val \n" = { "var" = "val" }
61 test lns get ". /etc/java/java.conf\n" =
62 { ".source" = "/etc/java/java.conf" }
64 (* Quoted strings and other oddities *)
65 test lns get "var=\"foo 'bar'\"\n" =
66 { "var" = "foo 'bar'" }
68 test lns get "var=\"eth0\"\n" =
71 test lns get "var='eth0'\n" =
74 test lns get "var='Some \"funny\" value'\n" =
75 { "var" = "Some \"funny\" value" }
77 test lns get "var=\"\\\"\"\n" =
80 test lns get "var=\\\"\n" =
83 test lns get "var=ab#c\n" =
86 test lns get "var='ab#c'\n" =
89 test lns get "var=\"ab#c\"\n" =
92 test lns get "var=\"ab#c\"\n" =
95 (* We don't handle backticks *)
97 "var=`grep nameserver /etc/resolv.conf | head -1`\n" = *
99 test lns get "var=ab #c\n" =
101 { "#comment" = "c" } }
103 test lns put "var=ab #c\n"
104 after rm "/var/#comment" = "var=ab\n"
106 test lns put "var=ab\n"
107 after set "/var/#comment" "this is a var" =
108 "var=ab # this is a var\n"
110 (* Test semicolons *)
111 test lns get "VAR1=\"this;is;a;test\"\nVAR2=this;\n" =
112 { "VAR1" = "this;is;a;test" }
116 test lns get "DEVICE=\"eth0\";\n" =
117 { "DEVICE" = "eth0" }
119 test lns put "DEVICE=\"eth0\";\n" after
120 set "/DEVICE" "em1" = "DEVICE=\"em1\";\n"
122 test lns get "DEVICE=\"eth0\"; # remark\n" =
123 { "DEVICE" = "eth0" }
124 { "#comment" = "remark" }
126 (* Bug 109: allow a bare export *)
127 test lns get "export FOO\n" =
131 (* Check we put quotes in when changes require them *)
132 test lns put "var=\"v\"\n" after rm "/foo" =
135 test lns put "var=v\n" after set "/var" "v w"=
138 test lns put "var='v'\n" after set "/var" "v w"=
141 test lns put "var=v\n" after set "/var" "v'w"=
144 test lns put "var=v\n" after set "/var" "v\"w"=
147 (* RHBZ#1043636: empty comment lines after comments *)
148 test lns get "#MOUNTD_NFS_V3\n#\n" =
149 { "#comment" = "MOUNTD_NFS_V3" }
151 (* Handle leading whitespace at the beginning of a line correctly *)
152 test lns get " var=value\n" = { "var" = "value" }
154 test lns put " var=value\n" after set "/var" "val2" = " var=val2\n"
156 test lns get "\t \tvar=value\n" = { "var" = "value" }
158 test lns get " export var=value\n" = { "var" = "value" { "export" } }
160 (* Local Variables: *)