@@ -9,35 +9,60 @@ function! s:run()
99 for vimfile in glob (s: sdir . ' /test*.vim' , 0 , 1 )
1010 let okfile = fnamemodify (vimfile, ' :r' ) . ' .ok'
1111 let outfile = fnamemodify (vimfile, ' :r' ) . ' .out'
12+ let vimokfile = fnamemodify (vimfile, ' :r' ) . ' .vimok'
13+ let vimoutfile = fnamemodify (vimfile, ' :r' ) . ' .vimout'
1214 let skip = filereadable (fnamemodify (vimfile, ' :r' ) . ' .skip' )
1315 let src = readfile (vimfile)
14- let r = s: vimlparser .StringReader.new (src )
1516 if vimfile = ~# ' test_neo'
1617 let l: neovim = 1
1718 else
1819 let l: neovim = 0
1920 endif
2021 let p = s: vimlparser .VimLParser.new (l: neovim )
2122 let c = s: vimlparser .Compiler.new ()
23+ let pr = s: vimlparser .Printer.new ()
2224 try
25+ let r = s: vimlparser .StringReader.new (src )
2326 let out = c .compile (p .parse (r ))
2427 call writefile (out, outfile)
2528 catch
2629 call writefile ([v: exception ], outfile)
2730 endtry
2831 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, ' :.' ))
3033 call append (line (' $' ), line )
3134 else
3235 if ! skip
3336 let ng += 1
3437 endif
35- let line = printf (' %s => ' . (skip ? ' skip' : ' ng' ), fnamemodify (vimfile, ' :.' ))
38+ let line = printf (' %s(compiler) => ' . (skip ? ' skip' : ' ng' ), fnamemodify (vimfile, ' :.' ))
3639 call append (line (' $' ), line )
3740 for line in readfile (outfile)
3841 call append (line (' $' ), ' ' . line )
3942 endfor
4043 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
4166 endfor
4267 if $CI == ' true'
4368 call writefile (getline (1 , ' $' ), ' test.log' )
0 commit comments