1*c7719086SBram Moolenaarset cpo&vim 29c0cec65SBram Moolenaarif 1 3f1e0544dSBram Moolenaar " This is executed only with the eval feature 4f1e0544dSBram Moolenaar set nocompatible 5eb698d0bSBram Moolenaar set viminfo= 69c0cec65SBram Moolenaar func Count(match, type) 79c0cec65SBram Moolenaar if a:type ==# 'executed' 89c0cec65SBram Moolenaar let g:executed += (a:match+0) 99c0cec65SBram Moolenaar elseif a:type ==# 'failed' 10150f0550SBram Moolenaar let g:failed += a:match+0 119c0cec65SBram Moolenaar elseif a:type ==# 'skipped' 129c0cec65SBram Moolenaar let g:skipped += 1 13a7f6c3cfSBram Moolenaar call extend(g:skipped_output, ["\t" .. a:match]) 149c0cec65SBram Moolenaar endif 159c0cec65SBram Moolenaar endfunc 169c0cec65SBram Moolenaar 179c0cec65SBram Moolenaar let g:executed = 0 189c0cec65SBram Moolenaar let g:skipped = 0 199c0cec65SBram Moolenaar let g:failed = 0 209c0cec65SBram Moolenaar let g:skipped_output = [] 219c0cec65SBram Moolenaar let g:failed_output = [] 229c0cec65SBram Moolenaar let output = [""] 239c0cec65SBram Moolenaar 24a7f6c3cfSBram Moolenaar if $TEST_FILTER != '' 25a7f6c3cfSBram Moolenaar call extend(g:skipped_output, ["\tAll tests not matching $TEST_FILTER: '" .. $TEST_FILTER .. "'"]) 26a7f6c3cfSBram Moolenaar endif 27a7f6c3cfSBram Moolenaar 289c0cec65SBram Moolenaar try 299c0cec65SBram Moolenaar " This uses the :s command to just fetch and process the output of the 3060b1bcfeSBram Moolenaar " tests, it doesn't actually replace anything. 31f1e0544dSBram Moolenaar " And it uses "silent" to avoid reporting the number of matches. 327eaafe65SBram Moolenaar silent %s/Executed\s\+\zs\d\+\ze\s\+tests\?/\=Count(submatch(0),'executed')/egn 33f1e0544dSBram Moolenaar silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn 34f1e0544dSBram Moolenaar silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn 359c0cec65SBram Moolenaar 369c0cec65SBram Moolenaar call extend(output, ["Skipped:"]) 379c0cec65SBram Moolenaar call extend(output, skipped_output) 389c0cec65SBram Moolenaar 399c0cec65SBram Moolenaar call extend(output, [ 409c0cec65SBram Moolenaar \ "", 419c0cec65SBram Moolenaar \ "-------------------------------", 429c0cec65SBram Moolenaar \ printf("Executed: %5d Tests", g:executed), 439c0cec65SBram Moolenaar \ printf(" Skipped: %5d Tests", g:skipped), 449c0cec65SBram Moolenaar \ printf(" %s: %5d Tests", g:failed == 0 ? 'Failed' : 'FAILED', g:failed), 459c0cec65SBram Moolenaar \ "", 469c0cec65SBram Moolenaar \ ]) 479c0cec65SBram Moolenaar if filereadable('test.log') 489c0cec65SBram Moolenaar " outputs and indents the failed test result 499c0cec65SBram Moolenaar call extend(output, ["", "Failures: "]) 509c0cec65SBram Moolenaar let failed_output = filter(readfile('test.log'), { v,k -> !empty(k)}) 519c0cec65SBram Moolenaar call extend(output, map(failed_output, { v,k -> "\t".k})) 529c0cec65SBram Moolenaar " Add a final newline 539c0cec65SBram Moolenaar call extend(output, [""]) 549c0cec65SBram Moolenaar endif 559c0cec65SBram Moolenaar 569c0cec65SBram Moolenaar catch " Catch-all 579c0cec65SBram Moolenaar finally 589c0cec65SBram Moolenaar call writefile(output, 'test_result.log') " overwrites an existing file 599c0cec65SBram Moolenaar endtry 609c0cec65SBram Moolenaarendif 619c0cec65SBram Moolenaar 629c0cec65SBram Moolenaarq! 63