# HG changeset patch # User Christian Brabandt # Date 1448916304 -3600 # Node ID b5e9810b389db730a131ee95654ad46a2e628b13 # Parent cbb385c32701dada093b01c492d3904e1ab02898 commit https://github.com/vim/vim/commit/683fa185a4b4ed7595e5942901548b8239ed5cdb Author: Bram Moolenaar Date: Mon Nov 30 21:38:24 2015 +0100 patch 7.4.945 Problem: New style testing is incomplete. Solution: Add the runtest script to the list of distributed files. Add the new functions to the function overview. Rename the functions to match Vim function style. Move undolevels testing into a new style test script. diff --git a/Filelist b/Filelist --- a/Filelist +++ b/Filelist @@ -87,6 +87,7 @@ SRC_ALL = \ src/testdir/README.txt \ src/testdir/*.in \ src/testdir/sautest/autoload/*.vim \ + src/testdir/runtest.vim \ src/testdir/test[0-9]*.ok \ src/testdir/test[0-9]*a.ok \ src/testdir/test_[a-z]*.ok \ diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2015 Nov 29 +*eval.txt* For Vim version 7.4. Last change: 2015 Nov 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1380,7 +1380,7 @@ v:errmsg Last given error message. It's < "errmsg" also works, for backwards compatibility. *v:errors* *errors-variable* -v:errors Errors found by assert functions, such as |assertTrue()|. +v:errors Errors found by assert functions, such as |assert_true()|. This is a list of strings. The assert functions append an item when an assert fails. To remove old results make it empty: > @@ -1742,13 +1742,13 @@ append( {lnum}, {string}) Number append append( {lnum}, {list}) Number append lines {list} below line {lnum} argc() Number number of files in the argument list argidx() Number current index in the argument list -arglistid( [{winnr}, [ {tabnr}]]) +arglistid( [{winnr} [, {tabnr}]]) Number argument list id argv( {nr}) String {nr} entry of the argument list argv( ) List the argument list -assertEqual( {exp}, {act}) none assert that {exp} equals {act} -assertFalse( {actual}) none assert that {actual} is false -assertTrue( {actual}) none assert that {actual} is true +assert_equal( {exp}, {act} [, {msg}]) none assert that {exp} equals {act} +assert_false( {actual} [, {msg}]) none assert that {actual} is false +assert_true( {actual} [, {msg}]) none assert that {actual} is true asin( {expr}) Float arc sine of {expr} atan( {expr}) Float arc tangent of {expr} atan2( {expr}, {expr}) Float arc tangent of {expr1} / {expr2} @@ -2166,30 +2166,36 @@ argv([{nr}]) The result is the {nr}th fi < Without the {nr} argument a |List| with the whole |arglist| is returned. - *assertEqual()* -assertEqual({expected}, {actual}) + *assert_equal()* +assert_equal({expected}, {actual}, [, {msg}]) When {expected} and {actual} are not equal an error message is added to |v:errors|. There is no automatic conversion, the String "4" is different from the Number 4. And the number 4 is different from the Float 4.0. The value of 'ignorecase' is not used here, case always matters. + When {msg} is omitted an error in the form "Expected + {expected} but got {actual}" is produced. Example: > - assertEqual('foo', 'bar') + assert_equal('foo', 'bar') < Will result in a string to be added to |v:errors|: test.vim line 12: Expected 'foo' but got 'bar' ~ -assertFalse({actual}) *assertFalse()* +assert_false({actual}, [, {msg}]) *assert_false()* When {actual} is not false an error message is added to - |v:errors|, like with |assertEqual()|.. + |v:errors|, like with |assert_equal()|.. A value is false when it is zero. When "{actual}" is not a number the assert fails. - -assertTrue({actual}) *assertTrue()* + When {msg} is omitted an error in the form "Expected False but + got {actual}" is produced. + +assert_true({actual}, [, {msg}]) *assert_true()* When {actual} is not true an error message is added to - |v:errors|, like with |assertEqual()|.. + |v:errors|, like with |assert_equal()|.. A value is true when it is a non-zeron number. When {actual} is not a number the assert fails. + When {msg} is omitted an error in the form "Expected True but + got {actual}" is produced. asin({expr}) *asin()* Return the arc sine of {expr} measured in radians, as a |Float| diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2014 Aug 16 +*usr_41.txt* For Vim version 7.4. Last change: 2015 Nov 30 VIM USER MANUAL - by Bram Moolenaar @@ -888,6 +888,11 @@ Mappings: *mapping-functions* maparg() get rhs of a mapping wildmenumode() check if the wildmode is active +Testing: *test-functions* + assert_equal() assert that two expressions values are equal + assert_false() assert that an expression is false + assert_true() assert that an expression is true + Various: *various-functions* mode() get current editing mode visualmode() last visual mode used diff --git a/src/testdir/Makefile b/src/testdir/Makefile --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -68,7 +68,8 @@ SCRIPTS = test1.out test2.out test3.out test_utf8.out \ test_writefile.out -NEW_TESTS = test_assert.res +NEW_TESTS = test_assert.res \ + test_undolevels.res SCRIPTS_GUI = test16.out diff --git a/src/testdir/test100.in b/src/testdir/test100.in --- a/src/testdir/test100.in +++ b/src/testdir/test100.in @@ -1,45 +1,8 @@ -Tests for 'undolevel' and 'lispwords' settings being global-local +Tests for 'lispwords' settings being global-local STARTTEST :so small.vim -:set nocompatible viminfo+=nviminfo ul=5 -:fu! FillBuffer() - :for i in range(1,13) - :put=i - :exe "setg ul=" . &g:ul - :endfor -:endfu -:fu! UndoLevel() - :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |redir end - :$put a -:endfu -:new one -:0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)' -:call FillBuffer() -:earlier 10 -:call UndoLevel() -:set ff=unix -:%w! test.out -:new two -:0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' -:setlocal ul=2 -:call FillBuffer() -:earlier 10 -:call UndoLevel() -:setlocal ul=10 -:call UndoLevel() -:set ff=unix -:%w >> test.out -:wincmd p -:redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end -:new three -:setglobal ul=50 -:1put ='global value should be changed to 50' -:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)' -:call UndoLevel() -:set ff=unix -:%w >> test.out -:"sleep 10 +:set nocompatible viminfo+=nviminfo :" :" Testing 'lispwords' :" diff --git a/src/testdir/test100.ok b/src/testdir/test100.ok --- a/src/testdir/test100.ok +++ b/src/testdir/test100.ok @@ -1,44 +1,3 @@ -ONE: expecting global undolevels: 5, local undolevels: -123456 (default) -1 -2 -3 -4 -5 -6 -7 - - - undolevels=5 global - undolevels=-123456 local -TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards) -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 - - - undolevels=5 global - undolevels=2 local - - undolevels=5 global - undolevels=10 local - -global value shouldn't be changed and still be 5! -ONE: expecting global undolevels: 5, local undolevels: -123456 (default) - undolevels=5 global - undolevels=-123456 local - -global value should be changed to 50 -THREE: expecting global undolevels: 50, local undolevels: -123456 (default) - - undolevels=50 global - undolevels=-123456 local Testing 'lispwords' local value lispwords=foo,bar,baz diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -1,19 +1,19 @@ " Test that the methods used for testing work. -func Test_assertFalse() - call assertFalse(0) +func Test_assert_false() + call assert_false(0) endfunc -func Test_assertTrue() - call assertTrue(1) - call assertTrue(123) +func Test_assert_true() + call assert_true(1) + call assert_true(123) endfunc -func Test_assertEqual() +func Test_assert_equal() let s = 'foo' - call assertEqual('foo', s) + call assert_equal('foo', s) let n = 4 - call assertEqual(4, n) + call assert_equal(4, n) let l = [1, 2, 3] - call assertEqual([1, 2, 3], l) + call assert_equal([1, 2, 3], l) endfunc diff --git a/src/testdir/test_undolevels.vim b/src/testdir/test_undolevels.vim new file mode 100644 --- /dev/null +++ b/src/testdir/test_undolevels.vim @@ -0,0 +1,46 @@ +" Tests for 'undolevels' + +set nocompatible viminfo+=nviminfo + +func FillBuffer() + for i in range(1,13) + put=i + " Set 'undolevels' to split undo. + exe "setg ul=" . &g:ul + endfor +endfunc + +func Test_global_local_undolevels() + new one + set undolevels=5 + call FillBuffer() + " will only undo the last 5 changes, end up with 13 - (5 + 1) = 7 lines + earlier 10 + call assert_equal(5, &g:undolevels) + call assert_equal(-123456, &l:undolevels) + call assert_equal('7', getline('$')) + + new two + setlocal undolevels=2 + call FillBuffer() + " will only undo the last 2 changes, end up with 13 - (2 + 1) = 10 lines + earlier 10 + call assert_equal(5, &g:undolevels) + call assert_equal(2, &l:undolevels) + call assert_equal('10', getline('$')) + + setlocal ul=10 + call assert_equal(5, &g:undolevels) + call assert_equal(10, &l:undolevels) + + " Setting local value in "two" must not change local value in "one" + wincmd p + call assert_equal(5, &g:undolevels) + call assert_equal(-123456, &l:undolevels) + + new three + setglobal ul=50 + call assert_equal(50, &g:undolevels) + call assert_equal(-123456, &l:undolevels) + +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 945, +/**/ 944, /**/ 943,