@@ -9,35 +9,60 @@ function! s:run()
9
9
for vimfile in glob (s: sdir . ' /test*.vim' , 0 , 1 )
10
10
let okfile = fnamemodify (vimfile, ' :r' ) . ' .ok'
11
11
let outfile = fnamemodify (vimfile, ' :r' ) . ' .out'
12
+ let vimokfile = fnamemodify (vimfile, ' :r' ) . ' .vimok'
13
+ let vimoutfile = fnamemodify (vimfile, ' :r' ) . ' .vimout'
12
14
let skip = filereadable (fnamemodify (vimfile, ' :r' ) . ' .skip' )
13
15
let src = readfile (vimfile)
14
- let r = s: vimlparser .StringReader.new (src )
15
16
if vimfile = ~# ' test_neo'
16
17
let l: neovim = 1
17
18
else
18
19
let l: neovim = 0
19
20
endif
20
21
let p = s: vimlparser .VimLParser.new (l: neovim )
21
22
let c = s: vimlparser .Compiler.new ()
23
+ let pr = s: vimlparser .Printer.new ()
22
24
try
25
+ let r = s: vimlparser .StringReader.new (src )
23
26
let out = c .compile (p .parse (r ))
24
27
call writefile (out, outfile)
25
28
catch
26
29
call writefile ([v: exception ], outfile)
27
30
endtry
28
31
if system (printf (' diff %s %s' , shellescape (okfile), shellescape (outfile))) == " "
29
- let line = printf (' %s => ok' , fnamemodify (vimfile, ' :.' ))
32
+ let line = printf (' %s(compiler) => ok' , fnamemodify (vimfile, ' :.' ))
30
33
call append (line (' $' ), line )
31
34
else
32
35
if ! skip
33
36
let ng += 1
34
37
endif
35
- let line = printf (' %s => ' . (skip ? ' skip' : ' ng' ), fnamemodify (vimfile, ' :.' ))
38
+ let line = printf (' %s(compiler) => ' . (skip ? ' skip' : ' ng' ), fnamemodify (vimfile, ' :.' ))
36
39
call append (line (' $' ), line )
37
40
for line in readfile (outfile)
38
41
call append (line (' $' ), ' ' . line )
39
42
endfor
40
43
endif
44
+ if vimfile !~# ' err\|neo'
45
+ try
46
+ let r = s: vimlparser .StringReader.new (src )
47
+ let vimout = pr.print (p .parse (r ))
48
+ call writefile (vimout, vimoutfile)
49
+ catch
50
+ call writefile ([v: exception ], vimoutfile)
51
+ endtry
52
+ if system (printf (' diff %s %s' , shellescape (filereadable (vimokfile) ? vimokfile : vimfile), shellescape (vimoutfile))) == " "
53
+ let line = printf (' %s(printer) => ok' , fnamemodify (vimfile, ' :.' ))
54
+ call append (line (' $' ), line )
55
+ else
56
+ if ! skip
57
+ let ng += 1
58
+ endif
59
+ let line = printf (' %s(printer) => ' . (skip ? ' skip' : ' ng' ), fnamemodify (vimfile, ' :.' ))
60
+ call append (line (' $' ), line )
61
+ for line in readfile (vimoutfile)
62
+ call append (line (' $' ), ' ' . line )
63
+ endfor
64
+ endif
65
+ endif
41
66
endfor
42
67
if $CI == ' true'
43
68
call writefile (getline (1 , ' $' ), ' test.log' )
0 commit comments