@@ -8,6 +8,9 @@ import toml
88import toml.ast
99import x.json2
1010
11+ const test_root = os.join_path (@VROOT, 'vlib/toml/tests/testdata/toml_lang/tests' )
12+ const test_files_file = os.join_path (test_root, 'files-toml-1.0.0' )
13+
1114const hide_oks = os.getenv ('VTEST_HIDE_OK' ) == '1'
1215const no_jq = os.getenv ('VNO_JQ' ) == '1'
1316
@@ -16,13 +19,9 @@ const valid_exceptions = [
1619 'do_not_remove' ,
1720 'array/open-parent-table.toml' ,
1821 'comment/after-literal-no-ws.toml' ,
19- 'datetime/no-seconds.toml' , // only allowed in TOML v1.1.0
20- 'inline-table/newline.toml' ,
2122 'key/space.toml' ,
2223 'key/start.toml' ,
2324 'string/escapes.toml' ,
24- 'string/escape-esc.toml' ,
25- 'string/hex-escape.toml' ,
2625 'string/multiline-quotes.toml' ,
2726 'table/array-implicit-and-explicit-after.toml' ,
2827 'table/array-within-dotted.toml' ,
@@ -69,31 +68,41 @@ fn run(args []string) !string {
6968// test_toml_lang_tomltest run though 'testdata/toml_lang/toml-test/*' if found.
7069fn test_toml_lang_tomltest () {
7170 eprintln ('> running ${@LOCATION} ' )
72- test_root := '${@VROOT} /vlib/toml/tests/testdata/toml_lang/tests'
7371 if ! os.is_dir (test_root) {
7472 println ('No test data directory found in "${test_root} "' )
7573 assert true
7674 return
7775 }
76+ test_files_list := os.read_lines (test_files_file) or {
77+ panic ('Could not read "${test_files_file} " with test files list. It should reside in "${test_root} ": ${err.msg()} ' )
78+ }
79+
7880 valid_folder := 'valid'
79- valid_test_files := os. walk_ext ( ' ${test_root} / valid' , '.toml' ).map (it .replace ('\\ ' ,
80- '/' )). sorted ()
81+ valid_test_files := test_files_list. filter ( it . starts_with ( ' valid/' ) && it . ends_with ( '.toml' ) ).map (it .replace ('\\ ' ,
82+ '/' ))
8183 invalid_folder := 'invalid'
82- invalid_test_files := os.walk_ext ('${test_root} /invalid' , '.toml' ).map (it .replace ('\\ ' ,
83- '/' )).sorted ()
84+ invalid_test_files := test_files_list.filter (it .starts_with ('invalid/' ) && it .ends_with ('.toml' )).map (it .replace ('\\ ' ,
85+ '/' ))
86+
87+ assert valid_test_files.len > 0 , 'Expected a list of *valid* test files'
88+ assert invalid_test_files.len > 0 , 'Expected a list of *invalid* test files'
89+
90+ assert os.is_file (os.join_path (test_root, valid_test_files[0 ])), 'Expected at least one file from the valid list to be present'
91+ assert os.is_file (os.join_path (test_root, invalid_test_files[0 ])), 'Expected at least one file from the invalid list to present'
8492
8593 println ('\n Testing ${valid_test_files.len} valid TOML files...' )
8694 mut valid := 0
8795 mut e := 0
88- for i, valid_test_file in valid_test_files {
89- relative := valid_test_file.all_after (valid_folder).trim_left ('/' )
96+ for i, relative_valid_test_file in valid_test_files {
97+ relative := relative_valid_test_file.all_after (valid_folder).trim_left ('/' )
98+ valid_test_file := os.join_path (test_root, relative_valid_test_file)
9099 if relative in valid_exceptions {
91100 e++
92101 idx := valid_exceptions.index (relative) + 1
93102 println ('SKIP [${i + 1} /${valid_test_files.len} ] "${valid_test_file} " VALID EXCEPTION [${idx} /${valid_exceptions.len} ]...' )
94103 continue
95104 }
96- // eprintln('>>> trying to parse: ${valid_test_file} | relative: $relative')
105+ // eprintln('>>> trying to parse: ${valid_test_file} | relative: ${ relative} ')
97106 toml_doc := toml.parse_file (valid_test_file) or {
98107 eprintln ('>>> error while parsing: ${valid_test_file} ' )
99108 panic (err)
@@ -122,8 +131,9 @@ fn test_toml_lang_tomltest() {
122131
123132 valid = 0
124133 e = 0
125- for i, valid_test_file in valid_test_files {
126- relative := valid_test_file.all_after (valid_folder).trim_left ('/' )
134+ for i, relative_valid_test_file in valid_test_files {
135+ relative := relative_valid_test_file.all_after (valid_folder).trim_left ('/' )
136+ valid_test_file := os.join_path (test_root, relative_valid_test_file)
127137 // Skip the file if we know it can't be parsed or we know that the value retrieval needs work.
128138 if relative in valid_exceptions {
129139 e++
@@ -190,8 +200,9 @@ fn test_toml_lang_tomltest() {
190200 println ('\n Testing ${invalid_test_files.len} invalid TOML files...' )
191201 mut invalid := 0
192202 e = 0
193- for i, invalid_test_file in invalid_test_files {
194- relative := invalid_test_file.all_after (invalid_folder).trim_left ('/' )
203+ for i, relative_invalid_test_file in invalid_test_files {
204+ relative := relative_invalid_test_file.all_after (invalid_folder).trim_left ('/' )
205+ invalid_test_file := os.join_path (test_root, relative_invalid_test_file)
195206 if relative in invalid_exceptions {
196207 e++
197208 idx := invalid_exceptions.index (relative) + 1
0 commit comments