2019-12-25 15:54:48 +03:00
|
|
|
module main
|
|
|
|
|
2020-04-26 09:32:05 +03:00
|
|
|
import os
|
|
|
|
import testing
|
2020-10-21 12:54:03 +03:00
|
|
|
import v.util
|
2019-12-25 15:54:48 +03:00
|
|
|
|
2019-12-27 19:59:04 +03:00
|
|
|
const (
|
2020-10-14 23:49:12 +03:00
|
|
|
known_failing_exceptions = [
|
2020-11-11 23:53:21 +03:00
|
|
|
'vlib/crypto/aes/const.v',
|
|
|
|
/* multiple narrow columns of []string turned to 1 long single column, otherwise works */
|
|
|
|
'vlib/v/gen/js/tests/life.v',
|
|
|
|
/* error: unexpected `,`, expecting ), on JS.setInterval(fn () { show(game) game = step(game) }, 500) */
|
|
|
|
'vlib/builtin/js/builtin.v',
|
|
|
|
/* JS.console.error(s) => JS.error(s), JS.process.exit(c) => JS.exit(c) */
|
2020-10-15 16:17:52 +03:00
|
|
|
'vlib/builtin/js/jsfns_node.js.v',
|
|
|
|
'vlib/builtin/js/jsfns.js.v',
|
|
|
|
'vlib/builtin/js/jsfns_browser.js.v',
|
2020-11-11 23:53:21 +03:00
|
|
|
/* error: expr(): bad token `asm`, on `asm {}` */
|
2020-12-27 12:38:12 +03:00
|
|
|
'vlib/builtin/bare/linuxsys_bare.v',
|
2020-12-28 13:26:50 +03:00
|
|
|
/* total chaos (duplicated code several times) in array_eq_test.v */
|
|
|
|
'vlib/builtin/array_eq_test.v',
|
2020-11-11 23:53:21 +03:00
|
|
|
/* the fn args are removed, then `cb fn (picohttpparser.Request, mut picohttpparser.Response)` can not be reparsed */
|
2020-12-27 12:38:12 +03:00
|
|
|
'vlib/picoev/picoev.v',
|
2019-12-25 15:54:48 +03:00
|
|
|
]
|
2019-12-27 19:59:04 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
fn main() {
|
2020-12-20 18:08:56 +03:00
|
|
|
args_string := os.args[1..].join(' ')
|
2019-12-27 19:59:04 +03:00
|
|
|
v_test_formatting(args_string.all_before('test-fmt'))
|
|
|
|
}
|
|
|
|
|
|
|
|
fn v_test_formatting(vargs string) {
|
|
|
|
all_v_files := v_files()
|
2020-10-24 16:36:26 +03:00
|
|
|
util.prepare_tool_when_needed('vfmt.v')
|
2020-02-08 19:01:10 +03:00
|
|
|
testing.eheader('Run "v fmt" over all .v files')
|
2019-12-27 19:59:04 +03:00
|
|
|
mut vfmt_test_session := testing.new_test_session('$vargs fmt -worker')
|
|
|
|
vfmt_test_session.files << all_v_files
|
2020-10-14 23:58:31 +03:00
|
|
|
vfmt_test_session.skip_files << known_failing_exceptions
|
2019-12-25 15:54:48 +03:00
|
|
|
vfmt_test_session.test()
|
2019-12-27 19:59:04 +03:00
|
|
|
eprintln(vfmt_test_session.benchmark.total_message('running vfmt over V files'))
|
2019-12-25 15:54:48 +03:00
|
|
|
if vfmt_test_session.benchmark.nfail > 0 {
|
2020-10-14 23:49:12 +03:00
|
|
|
eprintln('\nWARNING: v fmt failed $vfmt_test_session.benchmark.nfail times.\n')
|
2020-10-14 23:42:30 +03:00
|
|
|
exit(1)
|
2019-12-25 15:54:48 +03:00
|
|
|
}
|
|
|
|
}
|
2019-12-27 19:59:04 +03:00
|
|
|
|
|
|
|
fn v_files() []string {
|
2020-04-26 14:49:31 +03:00
|
|
|
mut files_that_can_be_formatted := []string{}
|
2019-12-27 19:59:04 +03:00
|
|
|
all_test_files := os.walk_ext('.', '.v')
|
|
|
|
for tfile in all_test_files {
|
2019-12-28 15:55:53 +03:00
|
|
|
if tfile.starts_with('./vlib/v/cgen/tests') {
|
|
|
|
continue
|
|
|
|
}
|
2019-12-27 19:59:04 +03:00
|
|
|
files_that_can_be_formatted << tfile
|
|
|
|
}
|
|
|
|
return files_that_can_be_formatted
|
|
|
|
}
|