Patch 8.2.0366
Problem:    Hardcopy command not tested enough.
Solution:   Add tests for printing. (Dominique Pelle, closes #5748)
Files:      src/testdir/test_hardcopy.vim


*** ../vim-8.2.0365/src/testdir/test_hardcopy.vim       2018-06-16 
14:39:00.000000000 +0200
--- src/testdir/test_hardcopy.vim       2020-03-09 12:06:18.053040722 +0100
***************
*** 1,39 ****
  " Test :hardcopy
  
! func Test_printoptions_parsing()
!   " Only test that this doesn't throw an error.
!   set printoptions=left:5in,right:10pt,top:8mm,bottom:2pc
!   set printoptions=left:2in,top:30pt,right:16mm,bottom:3pc
!   set printoptions=header:3,syntax:y,number:7,wrap:n
!   set printoptions=duplex:short,collate:n,jobsplit:y,portrait:n
!   set printoptions=paper:10x14
!   set printoptions=paper:A3
!   set printoptions=paper:A4
!   set printoptions=paper:A5
!   set printoptions=paper:B4
!   set printoptions=paper:B5
!   set printoptions=paper:executive
!   set printoptions=paper:folio
!   set printoptions=paper:ledger
!   set printoptions=paper:legal
!   set printoptions=paper:letter
!   set printoptions=paper:quarto
!   set printoptions=paper:statement
!   set printoptions=paper:tabloid
!   set printoptions=formfeed:y
!   set printoptions=
!   set printoptions&
  
    call assert_fails('set printoptions=paper', 'E550:')
    call assert_fails('set printoptions=shredder:on', 'E551:')
    call assert_fails('set printoptions=left:no', 'E552:')
  endfunc
  
! func Test_printmbfont_parsing()
!   " Only test that this doesn't throw an error.
!   set 
printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,i:WadaMin-Italic,o:WadaMin-Bold-Italic,c:yes,a:no
!   set printmbfont=
    set printmbfont&
  endfunc
  
  func Test_printheader_parsing()
--- 1,137 ----
  " Test :hardcopy
  
! func Test_printoptions()
!   edit test_hardcopy.vim
!   syn on
! 
!   for opt in ['left:5in,right:10pt,top:8mm,bottom:2pc',
!         \     'left:2in,top:30pt,right:16mm,bottom:3pc',
!         \     'header:3,syntax:y,number:y,wrap:n',
!         \     'header:3,syntax:n,number:y,wrap:y',
!         \     'duplex:short,collate:n,jobsplit:y,portrait:n',
!         \     'duplex:long,collate:y,jobsplit:n,portrait:y',
!         \     'paper:10x14',
!         \     'paper:A3',
!         \     'paper:A4',
!         \     'paper:A5',
!         \     'paper:B4',
!         \     'paper:B5',
!         \     'paper:executive',
!         \     'paper:folio',
!         \     'paper:ledger',
!         \     'paper:legal',
!         \     'paper:letter',
!         \     'paper:quarto',
!         \     'paper:statement',
!         \     'paper:tabloid',
!         \     'formfeed:y',
!         \     '']
!     exe 'set printoptions=' .. opt
!     if has('postscript')
!       hardcopy > Xhardcopy_printoptions
!       let lines = readfile('Xhardcopy_printoptions')
!       call assert_true(len(lines) > 20, opt)
!       call assert_true(lines[0] =~ 'PS-Adobe', opt)
!       call delete('Xhardcopy_printoptions')
!     endif
!   endfor
  
    call assert_fails('set printoptions=paper', 'E550:')
    call assert_fails('set printoptions=shredder:on', 'E551:')
    call assert_fails('set printoptions=left:no', 'E552:')
+   set printoptions&
+   bwipe
  endfunc
  
! func Test_printmbfont()
!   " Print a small help page which contains tabs to cover code that expands 
tabs to spaces.
!   help help
!   syn on
! 
!   for opt in 
[':WadaMin-Regular,b:WadaMin-Bold,i:WadaMin-Italic,o:WadaMin-Bold-Italic,c:yes,a:no',
!         \     '']
!     exe 'set printmbfont=' .. opt
!     if has('postscript')
!       hardcopy > Xhardcopy_printmbfont
!       let lines = readfile('Xhardcopy_printmbfont')
!       call assert_true(len(lines) > 20, opt)
!       call assert_true(lines[0] =~ 'PS-Adobe', opt)
!       call delete('Xhardcopy_printmbfont')
!     endif
!   endfor
    set printmbfont&
+   bwipe
+ endfunc
+ 
+ func Test_printexpr()
+   if !has('unix')
+     return
+   endif
+ 
+   " Not a very useful printexpr value, but enough to test
+   " hardcopy with 'printexpr'.
+   function PrintFile(fname)
+     call writefile(['Test printexpr: ' .. v:cmdarg],
+     \              'Xhardcopy_printexpr')
+     call delete(a:fname)
+     return 0
+   endfunc
+   set printexpr=PrintFile(v:fname_in)
+ 
+   help help
+   hardcopy dummy args
+   call assert_equal(['Test printexpr: dummy args'],
+   \                 readfile('Xhardcopy_printexpr'))
+   call delete('Xhardcopy_printexpr')
+ 
+   " Function return 1 to test print failure.
+   function PrintFails(fname)
+     call delete(a:fname)
+     return 1
+   endfunc
+   set printexpr=PrintFails(v:fname_in)
+   call assert_fails('hardcopy', 'E365:')
+ 
+   set printexpr&
+   bwipe
+ endfunc
+ 
+ func Test_errors()
+   " FIXME: Windows fails differently than Unix.
+   if has('unix')
+     edit test_hardcopy.vim
+     call assert_fails('hardcopy >', 'E324:')
+     bwipe
+   endif
+ endfunc
+ 
+ func Test_dark_background()
+   edit test_hardcopy.vim
+   syn on
+ 
+   for bg in ['dark', 'light']
+     exe 'set background=' .. bg
+ 
+     if has('postscript')
+       hardcopy > Xhardcopy_dark_background
+       let lines = readfile('Xhardcopy_dark_background')
+       call assert_true(len(lines) > 20)
+       call assert_true(lines[0] =~ 'PS-Adobe')
+       call delete('Xhardcopy_dark_background')
+     endif
+   endfor
+ 
+   set background&
+   bwipe
+ endfun
+ 
+ func Test_empty_buffer()
+   " FIXME: Unclear why this fails on Windows.
+   if has('unix')
+     new
+     call assert_equal("\nNo text to be printed", execute('hardcopy'))
+     bwipe
+   endif
  endfunc
  
  func Test_printheader_parsing()
***************
*** 46,67 ****
    set printheader&
  endfunc
  
- " Test that :hardcopy produces a non-empty file.
- " We don't check much of the contents.
- func Test_with_syntax()
-   if has('postscript')
-     edit test_hardcopy.vim
-     set printoptions=syntax:y
-     syn on
-     hardcopy > Xhardcopy
-     let lines = readfile('Xhardcopy')
-     call assert_true(len(lines) > 20)
-     call assert_true(lines[0] =~ 'PS-Adobe')
-     call delete('Xhardcopy')
-     set printoptions&
-   endif
- endfunc
- 
  func Test_fname_with_spaces()
    if !has('postscript')
      return
--- 144,149 ----
***************
*** 86,89 ****
    bwipe!
    call delete('Xpstest')
  endfunc
- 
--- 168,170 ----
*** ../vim-8.2.0365/src/version.c       2020-03-09 08:17:47.934476791 +0100
--- src/version.c       2020-03-09 12:12:59.458897770 +0100
***************
*** 740,741 ****
--- 740,743 ----
  {   /* Add new patch number below this line */
+ /**/
+     366,
  /**/

-- 
Some of the well known MS-Windows errors:
        EMULTI          Multitasking attempted, system confused
        EKEYBOARD       Keyboard locked, try getting out of this one!
        EXPLAIN         Unexplained error, please tell us what happened
        EFUTURE         Reserved for our future mistakes

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202003091114.029BEmnW019064%40masaka.moolenaar.net.

Raspunde prin e-mail lui