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/src/testdir/Makefile b/src/testdir/Makefile
index 03384aa..3f65f43 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -68,7 +68,8 @@
 		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
index 7bd88fe..9b140a4 100644
--- 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
index 477106b..4048dee 100644
--- 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
index 61c77c5..049ce98 100644
--- 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
index 0000000..427cece
--- /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
index 58cbf1d..89a2986 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    945,
+/**/
     944,
 /**/
     943,