view src/testdir/summarize.vim @ 32962:7771cb060685 v9.0.1781

patch 9.0.1781: Problems when setting bin/paste option Commit: https://github.com/vim/vim/commit/757593c07a4f4ac43eb6c6e52fc299abc9bc08bc Author: Christian Brabandt <cb@256bit.org> Date: Tue Aug 22 21:44:10 2023 +0200 patch 9.0.1781: Problems when setting bin/paste option Problem: Problems when setting bin/paste option Solution: When setting binary/paste, remember that this also affects depending options, so that :verbose set returns the right location. Mention if depending options for 'binary' or 'paste' have been reset indirectly. Add a test to verify it works. Also noticed as small bug, that the global option value for expandtab was not reset when paste option is set, so fix that while at it. closes: #12837 closes: #12879 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
author Christian Brabandt <cb@256bit.org>
date Tue, 22 Aug 2023 22:00:03 +0200
parents dbec60b8c253
children
line wrap: on
line source

set cpo&vim
if 1
  " This is executed only with the eval feature
  set nocompatible
  set viminfo=
  func Count(match, type)
    if a:type ==# 'executed'
      let g:executed += (a:match+0)
    elseif a:type ==# 'failed'
      let g:failed += a:match+0
    elseif a:type ==# 'skipped'
      let g:skipped += 1
      call extend(g:skipped_output, ["\t" .. a:match])
    endif
  endfunc

  let g:executed = 0
  let g:skipped = 0
  let g:failed = 0
  let g:skipped_output = []
  let g:failed_output = []
  let output = [""]

  if $TEST_FILTER != ''
    call extend(g:skipped_output, ["\tAll tests not matching $TEST_FILTER: '" .. $TEST_FILTER .. "'"])
  endif

  try
    " This uses the :s command to just fetch and process the output of the
    " tests, it doesn't actually replace anything.
    " And it uses "silent" to avoid reporting the number of matches.
    silent %s/Executed\s\+\zs\d\+\ze\s\+tests\?/\=Count(submatch(0),'executed')/egn
    silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn
    silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn

    call extend(output, ["Skipped:"])
    call extend(output, skipped_output)

    call extend(output, [
          \ "",
          \ "-------------------------------",
          \ printf("Executed: %5d Tests", g:executed),
          \ printf(" Skipped: %5d Tests", g:skipped),
          \ printf("  %s: %5d Tests", g:failed == 0 ? 'Failed' : 'FAILED', g:failed),
          \ "",
          \ ])
    if filereadable('test.log')
      " outputs and indents the failed test result
      call extend(output, ["", "Failures: "])
      let failed_output = filter(readfile('test.log'), { v,k -> !empty(k)})
      call extend(output, map(failed_output, { v,k -> "\t".k}))
      " Add a final newline
      call extend(output, [""])
    endif

  catch  " Catch-all
  finally
    call writefile(output, 'test_result.log')  " overwrites an existing file
  endtry
endif

q!