3 (* Test multiline C-style comments *)
4 let comment_multiline = "/* This is a long
10 test AptConf.comment get comment_multiline =
12 { "1" = "This is a long" }
13 { "2" = "/* multiline" }
17 (* Test empty multiline C-style comments *)
18 let comment_multiline_empty = "/* */\n"
20 test AptConf.empty get comment_multiline_empty = { }
23 (* Test a simple entry *)
24 let simple_entry = "APT::Clean-Installed \"true\";\n"
26 test AptConf.entry get simple_entry =
27 { "APT" { "Clean-Installed" = "true" } }
29 (* Test simple recursivity *)
30 let simple_recursion = "APT { Clean-Installed \"true\"; };\n"
32 test AptConf.entry get simple_recursion =
33 { "APT" { "Clean-Installed" = "true" } }
35 (* Test simple recursivity with several entries *)
36 let simple_recursion_multi =
38 Clean-Installed \"true\";
39 Get::Assume-Yes \"true\";
42 test AptConf.entry get simple_recursion_multi =
44 { "Clean-Installed" = "true" }
45 { "Get" { "Assume-Yes" = "true" } } }
47 (* Test multiple recursivity *)
48 let multiple_recursion =
49 "APT { Get { Assume-Yes \"true\"; } };\n"
51 test AptConf.entry get multiple_recursion =
52 { "APT" { "Get" { "Assume-Yes" = "true" } } }
54 (* Test simple list *)
55 let simple_list = "DPKG::options { \"--force-confold\"; }\n"
57 test AptConf.entry get simple_list =
58 { "DPKG" { "options" { "@elem" = "--force-confold" } } }
61 (* Test list elements with spaces *)
62 let list_spaces = "Unattended-Upgrade::Allowed-Origins {
63 \"Ubuntu lucid-security\"; };\n"
65 test AptConf.entry get list_spaces =
66 { "Unattended-Upgrade" { "Allowed-Origins"
67 { "@elem" = "Ubuntu lucid-security" } } }
69 (* Test recursive list *)
77 test AptConf.entry get recursive_list =
80 { "@elem" = "--force-confold" }
81 { "@elem" = "--nocheck" } } }
83 (* Test empty group *)
87 test AptConf.entry get empty_group = { "APT" }
90 let include = " #include /path/to/file\n"
92 test AptConf.include get include =
93 { "#include" = "/path/to/file" }
96 let clear = "#clear Dpkg::options Apt::Get::Assume-Yes\n"
98 test AptConf.clear get clear =
100 { "name" = "Dpkg::options" }
101 { "name" = "Apt::Get::Assume-Yes" } }
104 (* Test put simple value *)
105 test AptConf.entry put "APT::Clean-Installed \"true\";\n"
106 after set "/APT/Clean-Installed" "false" =
107 "APT {\nClean-Installed \"false\";\n};\n"
109 (* Test rm everything *)
110 test AptConf.entry put "APT { Clean-Installed \"true\"; }\n"
113 (* Test rm on recursive value *)
114 test AptConf.entry put "APT { Clean-Installed \"true\"; }\n"
115 after rm "/APT/Clean-Installed" = "APT { }\n"
117 (* Test put recursive value *)
118 test AptConf.entry put "APT { Clean-Installed \"true\"; }\n"
119 after set "/APT/Clean-Installed" "false" =
120 "APT { Clean-Installed \"false\"; }\n"
122 (* Test multiple lens *)
123 let multiple_entries =
124 "APT { Clean-Installed \"true\"; }\n
125 APT::Clean-Installed \"true\";\n"
127 test AptConf.lns get multiple_entries =
128 { "APT" { "Clean-Installed" = "true" } }
130 { "APT" { "Clean-Installed" = "true" } }
132 (* Test with full lens *)
133 test AptConf.lns put "APT { Clean-Installed \"true\"; }\n"
134 after set "/APT/Clean-Installed" "false" =
135 "APT { Clean-Installed \"false\"; }\n"
137 (* Test single commented entry *)
138 let commented_entry =
139 "Unattended-Upgrade::Allowed-Origins {
140 \"Ubuntu lucid-security\";
141 // \"Ubuntu lucid-updates\";
144 test AptConf.lns get commented_entry =
145 { "Unattended-Upgrade" { "Allowed-Origins"
146 { "@elem" = "Ubuntu lucid-security" }
147 { "#comment" = "\"Ubuntu lucid-updates\";" } } }
149 (* Test multiple commented entries *)
150 let commented_entries =
151 "// List of packages to not update
152 Unattended-Upgrade::Package-Blacklist {
160 test AptConf.lns get commented_entries =
161 { "#comment" = "List of packages to not update" }
162 { "Unattended-Upgrade" { "Package-Blacklist"
163 { "#comment" = "\"vim\";" }
164 { "#comment" = "\"libc6\";" }
165 { "#comment" = "\"libc6-dev\";" }
166 { "#comment" = "\"libc6-i686\"" }
169 (* Test complex elem *)
170 let complex_elem = "DPkg::Post-Invoke {\"if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; if [ -e /var/lib/update-notifier/updates-available ]; then echo > /var/lib/update-notifier/updates-available; fi \"};\n"
172 test AptConf.lns get complex_elem =
173 { "DPkg" { "Post-Invoke"
174 { "@elem" = "if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; if [ -e /var/lib/update-notifier/updates-available ]; then echo > /var/lib/update-notifier/updates-available; fi " } } }
176 (* Accept hash comments *)
177 test AptConf.lns get "# a comment\n" =
178 { "#comment" = "a comment" }
180 (* Accept empty hash comments *)
181 test AptConf.lns get "# \n" = { }