Skip to content

Commit 57cecdb

Browse files
authored
toml: switch to test against entries in files-toml-1.0.0 for toml-lang tests (#26094)
1 parent a822fb6 commit 57cecdb

File tree

1 file changed

+27
-16
lines changed

1 file changed

+27
-16
lines changed

vlib/toml/tests/toml_lang_test.v

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import toml
88
import toml.ast
99
import 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+
1114
const hide_oks = os.getenv('VTEST_HIDE_OK') == '1'
1215
const 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.
7069
fn 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('\nTesting ${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('\nTesting ${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

Comments
 (0)