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

397 lines
12 KiB
Plaintext

(*
Module: Test_IniFile
Provides unit tests and examples for the <IniFile> module.
About: Tests to run
The tests are run with all combinations of the following
three parameters:
> separator : (a) default (/[:=]/ "=") ; (b) "=" "="
> comment : (c) default (/[;#]/ ";") ; (d) ";" ";"
> empty lines : (e) default ; (f) noempty
*)
module Test_IniFile =
(* ALL TESTS TO RUN *)
(* Group: TEST a/c/e *)
(* Variable: comment_ace *)
let comment_ace = IniFile.comment IniFile.comment_re IniFile.comment_default
(* Variable: sep_ace *)
let sep_ace = IniFile.sep IniFile.sep_re IniFile.sep_default
(* Variable: entry_ace *)
let entry_ace = IniFile.entry IniFile.entry_re sep_ace comment_ace
(* Variable: title_ace *)
let title_ace = IniFile.title IniFile.record_re
(* Variable: record_ace *)
let record_ace = IniFile.record title_ace entry_ace
(* Variable: lns_ace *)
let lns_ace = IniFile.lns record_ace comment_ace
(* Variable: conf_ace *)
let conf_ace = "# comment with sharp
[section1]
test_ace = value # end of line comment
test_ace =
test_ace = \"value with spaces\"
; comment with colon
"
(* Test: lns_ace
Testing the a/c/e combination *)
test lns_ace get conf_ace =
{ "#comment" = "comment with sharp" }
{}
{ "section1"
{ "test_ace" = "value"
{ "#comment" = "end of line comment" } }
{ "test_ace" }
{ "test_ace" = "value with spaces" }
{ "#comment" = "comment with colon" }
{} }
test lns_ace put conf_ace after
set "section1/foo" "yes" = "# comment with sharp
[section1]
test_ace = value # end of line comment
test_ace =
test_ace = \"value with spaces\"
; comment with colon
foo=yes
"
(* Test: lns_ace
Quotes can appear within bare values *)
test lns_ace get "[section]\ntest_ace = value \"with quotes\" inside\n" =
{ "section" { "test_ace" = "value \"with quotes\" inside" } }
(* Group: TEST a/c/f *)
(* Variable: comment_acf *)
let comment_acf = IniFile.comment IniFile.comment_re IniFile.comment_default
(* Variable: sep_acf *)
let sep_acf = IniFile.sep IniFile.sep_re IniFile.sep_default
(* Variable: entry_acf *)
let entry_acf = IniFile.entry IniFile.entry_re sep_acf comment_acf
(* Variable: title_acf *)
let title_acf = IniFile.title IniFile.record_re
(* Variable: record_acf *)
let record_acf = IniFile.record_noempty title_acf entry_acf
(* Variable: lns_acf *)
let lns_acf = IniFile.lns_noempty record_acf comment_acf
(* Variable: conf_acf *)
let conf_acf = "# comment with sharp
[section1]
test_acf = value
test_acf =
test_acf : value2 # end of line comment
; comment with colon
"
(* Test: lns_acf
Testing the a/c/f combination *)
test lns_acf get conf_acf =
{ "#comment" = "comment with sharp" }
{ "section1"
{ "test_acf" = "value" }
{ "test_acf" }
{ "test_acf" = "value2"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" } }
(* Group: TEST a/d/e *)
(* Variable: comment_ade *)
let comment_ade = IniFile.comment ";" ";"
(* Variable: sep_ade *)
let sep_ade = IniFile.sep IniFile.sep_re IniFile.sep_default
(* Variable: entry_ade *)
let entry_ade = IniFile.entry IniFile.entry_re sep_ade comment_ade
(* Variable: title_ade *)
let title_ade = IniFile.title IniFile.record_re
(* Variable: record_ade *)
let record_ade = IniFile.record title_ade entry_ade
(* Variable: lns_ade *)
let lns_ade = IniFile.lns record_ade comment_ade
(* Variable: conf_ade *)
let conf_ade = "; a first comment with colon
[section1]
test_ade = value
test_ade : value2 ; end of line comment
; comment with colon
test_ade =
"
(* Test: lns_ade
Testing the a/d/e combination *)
test lns_ade get conf_ade =
{ "#comment" = "a first comment with colon" }
{ "section1"
{ "test_ade" = "value" }
{ "test_ade" = "value2"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{}
{ "test_ade" } }
(* Group: TEST a/d/f *)
(* Variable: comment_adf *)
let comment_adf = IniFile.comment ";" ";"
(* Variable: sep_adf *)
let sep_adf = IniFile.sep IniFile.sep_re IniFile.sep_default
(* Variable: entry_adf *)
let entry_adf = IniFile.entry IniFile.entry_re sep_adf comment_adf
(* Variable: title_adf *)
let title_adf = IniFile.title IniFile.record_re
(* Variable: record_adf *)
let record_adf = IniFile.record_noempty title_adf entry_adf
(* Variable: lns_adf *)
let lns_adf = IniFile.lns_noempty record_adf comment_adf
(* Variable: conf_adf *)
let conf_adf = "; a first comment with colon
[section1]
test_adf = value
test_adf : value2 ; end of line comment
; comment with colon
test_adf =
"
(* Test: lns_adf
Testing the a/d/f combination *)
test lns_adf get conf_adf =
{ "#comment" = "a first comment with colon" }
{ "section1"
{ "test_adf" = "value" }
{ "test_adf" = "value2"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{ "test_adf" } }
(* Group: TEST b/c/e *)
(* Variable: comment_bce *)
let comment_bce = IniFile.comment IniFile.comment_re IniFile.comment_default
(* Variable: sep_bce *)
let sep_bce = IniFile.sep "=" "="
(* Variable: entry_bce *)
let entry_bce = IniFile.entry IniFile.entry_re sep_bce comment_bce
(* Variable: title_bce *)
let title_bce = IniFile.title IniFile.record_re
(* Variable: record_bce *)
let record_bce = IniFile.record title_bce entry_bce
(* Variable: lns_bce *)
let lns_bce = IniFile.lns record_bce comment_bce
(* Variable: conf_bce *)
let conf_bce = "# comment with sharp
[section1]
test_bce = value # end of line comment
; comment with colon
test_bce =
"
(* Test: lns_bce
Testing the b/c/e combination *)
test lns_bce get conf_bce =
{ "#comment" = "comment with sharp" }
{}
{ "section1"
{ "test_bce" = "value"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{}
{ "test_bce" } }
(* Group: TEST b/c/f *)
(* Variable: comment_bcf *)
let comment_bcf = IniFile.comment IniFile.comment_re IniFile.comment_default
(* Variable: sep_bcf *)
let sep_bcf = IniFile.sep "=" "="
(* Variable: entry_bcf *)
let entry_bcf = IniFile.entry IniFile.entry_re sep_bcf comment_bcf
(* Variable: title_bcf *)
let title_bcf = IniFile.title IniFile.record_re
(* Variable: record_bcf *)
let record_bcf = IniFile.record_noempty title_bce entry_bcf
(* Variable: lns_bcf *)
let lns_bcf = IniFile.lns_noempty record_bce comment_bcf
(* Variable: conf_bcf *)
let conf_bcf = "# conf with sharp
[section1]
test_bcf = value # end of line comment
; comment with colon
test_bcf =
"
(* Test: lns_bcf
Testing the b/c/f combination *)
test lns_bcf get conf_bcf =
{ "#comment" = "conf with sharp" }
{ "section1"
{ "test_bcf" = "value"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{ "test_bcf" } }
(* Group: TEST b/d/e *)
(* Variable: comment_bde *)
let comment_bde = IniFile.comment ";" ";"
(* Variable: sep_bde *)
let sep_bde = IniFile.sep "=" "="
(* Variable: entry_bde *)
let entry_bde = IniFile.entry IniFile.entry_re sep_bde comment_bde
(* Variable: title_bde *)
let title_bde = IniFile.title IniFile.record_re
(* Variable: record_bde *)
let record_bde = IniFile.record title_bde entry_bde
(* Variable: lns_bde *)
let lns_bde = IniFile.lns record_bde comment_bde
(* Variable: conf_bde *)
let conf_bde = "; first comment with colon
[section1]
test_bde = value ; end of line comment
; comment with colon
test_bde =
"
(* Test: lns_bde
Testing the b/d/e combination *)
test lns_bde get conf_bde =
{ "#comment" = "first comment with colon" }
{}
{ "section1"
{ "test_bde" = "value"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{}
{ "test_bde" } }
(* Group: TEST b/d/f *)
(* Variable: comment_bdf *)
let comment_bdf = IniFile.comment ";" ";"
(* Variable: sep_bdf *)
let sep_bdf = IniFile.sep "=" "="
(* Variable: entry_bdf *)
let entry_bdf = IniFile.entry IniFile.entry_re sep_bdf comment_bdf
(* Variable: title_bdf *)
let title_bdf = IniFile.title IniFile.record_re
(* Variable: record_bdf *)
let record_bdf = IniFile.record_noempty title_bdf entry_bdf
(* Variable: lns_bdf *)
let lns_bdf = IniFile.lns_noempty record_bdf comment_bdf
(* Variable: conf_bdf *)
let conf_bdf = "; first comment with colon
[section1]
test_bdf = value ; end of line comment
; comment with colon
test_bdf =
"
(* Test: lns_bdf
Testing the b/d/f combination *)
test lns_bdf get conf_bdf =
{ "#comment" = "first comment with colon" }
{ "section1"
{ "test_bdf" = "value"
{ "#comment" = "end of line comment" } }
{ "#comment" = "comment with colon" }
{ "test_bdf" } }
(* Group: TEST multiline values *)
(* Variable: multiline_test *)
let multiline_test = "test_ace = val1\n val2\n val3\n"
(* Variable: multiline_nl *)
let multiline_nl = "test_ace =\n val2\n val3\n"
(* Variable: multiline_ace *)
let multiline_ace = IniFile.entry_multiline IniFile.entry_re sep_ace comment_ace
(* Test: multiline_ace
Testing the a/c/e combination with a multiline entry *)
test multiline_ace get multiline_test =
{ "test_ace" = "val1\n val2\n val3" }
(* Test: multiline_nl
Multiline values can begin with a single newline *)
test multiline_ace get multiline_nl =
{ "test_ace" = "\n val2\n val3" }
(* Test: lns_ace
Ticket #243 *)
test lns_ace get "[section1]
ticket_243 = \"value1;value2#value3\" # end of line comment
" =
{ "section1"
{ "ticket_243" = "value1;value2#value3"
{ "#comment" = "end of line comment" }
}
}
(* Group: TEST list entries *)
(* Variable: list_test *)
let list_test = "test_ace = val1,val2,val3 # a comment\n"
(* Lens: list_ace *)
let list_ace = IniFile.entry_list IniFile.entry_re sep_ace RX.word Sep.comma comment_ace
(* Test: list_ace
Testing the a/c/e combination with a list entry *)
test list_ace get list_test =
{ "test_ace"
{ "1" = "val1" }
{ "2" = "val2" }
{ "3" = "val3" }
{ "#comment" = "a comment" }
}
(* Variable: list_nocomment_test *)
let list_nocomment_test = "test_ace = val1,val2,val3 \n"
(* Lens: list_nocomment_ace *)
let list_nocomment_ace = IniFile.entry_list_nocomment IniFile.entry_re sep_ace RX.word Sep.comma
(* Test: list_nocomment_ace
Testing the a/c/e combination with a list entry without end-of-line comment *)
test list_nocomment_ace get list_nocomment_test =
{ "test_ace"
{ "1" = "val1" }
{ "2" = "val2" }
{ "3" = "val3" }
}
(* Test: IniFile.lns_loose *)
test IniFile.lns_loose get conf_ace =
{ "section" = ".anon"
{ "#comment" = "comment with sharp" }
{ }
}
{ "section" = "section1"
{ "test_ace" = "value"
{ "#comment" = "end of line comment" }
}
{ "test_ace" }
{ "test_ace" = "value with spaces" }
{ "#comment" = "comment with colon" }
{ }
}
(* Test: IniFile.lns_loose_multiline *)
test IniFile.lns_loose_multiline get conf_ace =
{ "section" = ".anon"
{ "#comment" = "comment with sharp" }
{ }
}
{ "section" = "section1"
{ "test_ace" = "value"
{ "#comment" = "end of line comment" }
}
{ "test_ace" }
{ "test_ace" = "value with spaces" }
{ "#comment" = "comment with colon" }
{ }
}
test IniFile.lns_loose_multiline get multiline_test =
{ "section" = ".anon" { "test_ace" = "val1\n val2\n val3" } }