changeset 10940:a479b7064550 v8.0.0359

patch 8.0.0359: 'number' and 'relativenumber' are not properly tested commit https://github.com/vim/vim/commit/dc9a081712ec8c140e6d4909e9f6b03a629d32d3 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 23 18:46:50 2017 +0100 patch 8.0.0359: 'number' and 'relativenumber' are not properly tested Problem: 'number' and 'relativenumber' are not properly tested. Solution: Add tests, change old style to new style tests. (Ozaki Kiichi, closes #1447)
author Christian Brabandt <cb@256bit.org>
date Thu, 23 Feb 2017 19:00:05 +0100
parents 86572a2aab2e
children 56b3c9414c82
files src/Makefile src/testdir/Make_all.mak src/testdir/Make_vms.mms src/testdir/test89.in src/testdir/test89.ok src/testdir/test_alot.vim src/testdir/test_findfile.vim src/testdir/test_number.vim src/version.c
diffstat 9 files changed, 288 insertions(+), 103 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile
+++ b/src/Makefile
@@ -2082,7 +2082,7 @@ test1 \
 	test50 test51 test52 test53 test54 test55 test56 test57 test58 test59 \
 	test60 test64 test65 test66 test67 test68 test69 \
 	test70 test72 test73 test74 test75 test77 test78 test79 \
-	test80 test82 test83 test84 test85 test86 test87 test88 test89 \
+	test80 test82 test83 test84 test85 test86 test87 test88 \
 	test90 test91 test94 test95 test97 test98 test99 \
 	test100 test101 test103 test104 test107 test108:
 	cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
@@ -2122,6 +2122,7 @@ test_arglist \
 	test_fileformat \
 	test_filter_cmd \
 	test_filter_map \
+	test_findfile \
 	test_float_func \
 	test_fnameescape \
 	test_fnamemodify \
@@ -2164,6 +2165,7 @@ test_arglist \
 	test_nested_function \
 	test_netbeans \
 	test_normal \
+	test_number \
 	test_options \
 	test_packadd \
 	test_partial \
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -117,8 +117,7 @@ SCRIPTS_MORE4 = \
 	test59.out \
 	test72.out \
 	test78.out \
-	test83.out \
-	test89.out
+	test83.out
 
 
 # Tests specifically for MS-Windows.
@@ -174,6 +173,7 @@ NEW_TESTS = test_arglist.res \
 	    test_nested_function.res \
 	    test_netbeans.res \
 	    test_normal.res \
+	    test_number.res \
 	    test_packadd.res \
 	    test_paste.res \
 	    test_perl.res \
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -91,7 +91,7 @@ SCRIPT = test1.out  test3.out  test4.out
        test66.out test67.out test68.out test69.out \
        test72.out test75.out \
        test77a.out test78.out test79.out test80.out \
-       test82.out test84.out test88.out test89.out \
+       test82.out test84.out test88.out \
        test90.out test91.out test94.out \
        test95.out test98.out test99.out \
        test103.out test104.out \
deleted file mode 100644
--- a/src/testdir/test89.in
+++ /dev/null
@@ -1,71 +0,0 @@
-- Some tests for setting 'number' and 'relativenumber'
-  This is not all that useful now that the options are no longer reset when
-  setting the other.
-- Some tests for findfile() function
-
-STARTTEST
-:so small.vim
-:set hidden nocp nu rnu viminfo+=nviminfo
-:redir @a | set nu? rnu? | redir END
-:e! xx
-:redir @b | set nu? rnu? | redir END
-:e! #
-:$put ='results:'
-:$put a
-:$put b
-:"
-:set nonu nornu
-:setglobal nu
-:setlocal rnu
-:redir @c | setglobal nu? | redir END
-:set nonu nornu
-:setglobal rnu
-:setlocal nu
-:redir @d | setglobal rnu? | redir END
-:$put =':setlocal must NOT reset the other global value'
-:$put c
-:$put d
-:"
-:set nonu nornu
-:setglobal nu
-:setglobal rnu
-:redir @e | setglobal nu? | redir END
-:set nonu nornu
-:setglobal rnu
-:setglobal nu
-:redir @f | setglobal rnu? | redir END
-:$put =':setglobal MUST reset the other global value'
-:$put e
-:$put f
-:"
-:set nonu nornu
-:set nu
-:set rnu
-:redir @g | setglobal nu? | redir END
-:set nonu nornu
-:set rnu
-:set nu
-:redir @h | setglobal rnu? | redir END
-:$put =':set MUST reset the other global value'
-:$put g
-:$put h
-:"
-:let cwd=getcwd()
-:cd ..
-:" Tests may be run from a shadow directory, so an extra cd needs to be done to
-:" get above src/
-:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
-:$put =''
-:$put ='Testing findfile'
-:$put =''
-:set ssl
-:$put =findfile('test19.in','src/test*')
-:exe "cd" cwd
-:cd ..
-:$put =findfile('test19.in','test*')
-:$put =findfile('test19.in','testdir')
-:exe "cd" cwd
-:/^results/,$w! test.out
-:q!
-ENDTEST
-
deleted file mode 100644
--- a/src/testdir/test89.ok
+++ /dev/null
@@ -1,28 +0,0 @@
-results:
-
-  number
-  relativenumber
-
-  number
-  relativenumber
-:setlocal must NOT reset the other global value
-
-  number
-
-  relativenumber
-:setglobal MUST reset the other global value
-
-  number
-
-  relativenumber
-:set MUST reset the other global value
-
-  number
-
-  relativenumber
-
-Testing findfile
-
-src/testdir/test19.in
-testdir/test19.in
-testdir/test19.in
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -16,6 +16,7 @@ source test_file_perm.vim
 source test_fileformat.vim
 source test_filter_cmd.vim
 source test_filter_map.vim
+source test_findfile.vim
 source test_float_func.vim
 source test_fnamemodify.vim
 source test_functions.vim
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_findfile.vim
@@ -0,0 +1,25 @@
+" Test for findfile()
+"
+func Test_findfile()
+  new
+  let cwd=getcwd()
+  cd ..
+
+  " Tests may be run from a shadow directory, so an extra cd needs to be done to
+  " get above src/
+  if fnamemodify(getcwd(), ':t') != 'src'
+    cd ../.. 
+  else 
+    cd .. 
+  endif
+  set ssl
+
+  call assert_equal('src/testdir/test_findfile.vim', findfile('test_findfile.vim','src/test*'))
+  exe "cd" cwd
+  cd ..
+  call assert_equal('testdir/test_findfile.vim', findfile('test_findfile.vim','test*'))
+  call assert_equal('testdir/test_findfile.vim', findfile('test_findfile.vim','testdir'))
+
+  exe "cd" cwd
+  q!
+endfunc
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_number.vim
@@ -0,0 +1,254 @@
+" Test for 'number' and 'relativenumber'
+
+source view_util.vim
+
+func! s:screen_lines(start, end) abort
+  return ScreenLines([a:start, a:end], 8)
+endfunc
+
+func! s:compare_lines(expect, actual)
+  call assert_equal(a:expect, a:actual)
+endfunc
+
+func! s:test_windows(h, w) abort
+  call NewWindow(a:h, a:w)
+endfunc
+
+func! s:close_windows() abort
+  call CloseWindow()
+endfunc
+
+func! s:validate_cursor() abort
+  " update skipcol.
+  " wincol():
+  "   f_wincol
+  "     -> validate_cursor
+  "          -> curs_columns
+  call wincol()
+endfunc
+
+func Test_set_options()
+  set nu rnu
+  call assert_equal(1, &nu)
+  call assert_equal(1, &rnu)
+
+  call s:test_windows(10, 20)
+  call assert_equal(1, &nu)
+  call assert_equal(1, &rnu)
+  call s:close_windows()
+
+  set nu& rnu&
+endfunc
+
+func Test_set_global_and_local()
+  " setlocal must NOT reset the other global value
+  set nonu nornu
+  setglobal nu
+  setlocal rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  setglobal rnu
+  setlocal nu
+  call assert_equal(1, &g:rnu)
+
+  " setglobal MUST reset the other global value
+  set nonu nornu
+  setglobal nu
+  setglobal rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  setglobal rnu
+  setglobal nu
+  call assert_equal(1, &g:rnu)
+
+  " set MUST reset the other global value
+  set nonu nornu
+  set nu
+  set rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  set rnu
+  set nu
+  call assert_equal(1, &g:rnu)
+
+  set nu& rnu&
+endfunc
+
+func Test_number()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  setl number
+  let lines = s:screen_lines(1, 4)
+  let expect = [
+\ "  1 abcd",
+\ "  2 klmn",
+\ "  3 uvwx",
+\ "  4 EFGH",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_relativenumber()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  3
+  setl relativenumber
+  let lines = s:screen_lines(1, 6)
+  let expect = [
+\ "  2 abcd",
+\ "  1 klmn",
+\ "  0 uvwx",
+\ "  1 EFGH",
+\ "  2 OPQR",
+\ "  3 YZ  ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_number_with_relativenumber()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  4
+  setl number relativenumber
+  let lines = s:screen_lines(1, 6)
+  let expect = [
+\ "  3 abcd",
+\ "  2 klmn",
+\ "  1 uvwx",
+\ "4   EFGH",
+\ "  1 OPQR",
+\ "  2 YZ  ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_number_with_linewrap1()
+  call s:test_windows(3, 20)
+  normal! 61ia
+  setl number wrap
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "--1 aaaa",
+\ "    aaaa",
+\ "    aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
+func XTest_number_with_linewrap2()
+  call s:test_windows(3, 20)
+  normal! 61ia
+  setl number wrap
+  call s:validate_cursor()
+  0
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "  1 aaaa",
+\ "    aaaa",
+\ "    aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
+func XTest_number_with_linewrap3()
+  call s:test_windows(4, 20)
+  normal! 81ia
+  setl number wrap
+  call s:validate_cursor()
+  setl nonumber
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 4)
+  let expect = [
+\ "aaaaaaaa",
+\ "aaaaaaaa",
+\ "aaaaaaaa",
+\ "a       ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_numberwidth()
+  call s:test_windows(10, 20)
+  call setline(1, repeat(['aaaa'], 10))
+  setl number numberwidth=6
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    1 aa",
+\ "    2 aa",
+\ "    3 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  set relativenumber
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "1     aa",
+\ "    1 aa",
+\ "    2 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  set nonumber
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    0 aa",
+\ "    1 aa",
+\ "    2 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_numberwidth_adjusted()
+  call s:test_windows(10, 20)
+  call setline(1, repeat(['aaaa'], 10000))
+  setl number numberwidth=4
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    1 aa",
+\ "    2 aa",
+\ "    3 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  $
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ " 9998 aa",
+\ " 9999 aa",
+\ "10000 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  setl relativenumber
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ "    2 aa",
+\ "    1 aa",
+\ "10000 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  setl nonumber
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ "  2 aaaa",
+\ "  1 aaaa",
+\ "  0 aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    359,
+/**/
     358,
 /**/
     357,