patch 7.4.944
Problem:    Writing tests for Vim script is hard.
Solution:   Add assertEqual(), assertFalse() and assertTrue() functions.  Add
            the v:errors variable.  Add the runtest script. Add a first new
            style test script.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6e7039c..aae0522 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.4.  Last change: 2015 Sep 19
+*eval.txt*	For Vim version 7.4.  Last change: 2015 Nov 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1379,6 +1379,15 @@
 	:  ... handle error
 <		"errmsg" also works, for backwards compatibility.
 
+					*v:errors* *errors-variable*
+v:errors	Errors found by assert functions, such as |assertTrue()|.
+		This is a list of strings.
+		The assert functions append an item when an assert fails.
+		To remove old results make it empty: >
+	:let v:errors = []
+<		If v:errors is set to anything but a list it is made an empty
+		list by the assert function.
+
 					*v:exception* *exception-variable*
 v:exception	The value of the exception most recently caught and not
 		finished.  See also |v:throwpoint| and |throw-variables|.
@@ -1737,6 +1746,9 @@
 				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
 asin( {expr})			Float	arc sine of {expr}
 atan( {expr})			Float	arc tangent of {expr}
 atan2( {expr}, {expr})		Float   arc tangent of {expr1} / {expr2}
@@ -2154,6 +2166,31 @@
 <		Without the {nr} argument a |List| with the whole |arglist| is
 		returned.
 
+							*assertEqual()*
+assertEqual({expected}, {actual})
+		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.
+		Example: >
+	assertEqual('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()*
+		When {actual} is not false an error message is added to
+		|v:errors|, like with |assertEqual()|..
+		A value is false when it is zero. When "{actual}" is not a
+		number the assert fails.
+
+assertTrue({actual})					*assertTrue()*
+		When {actual} is not true an error message is added to
+		|v:errors|, like with |assertEqual()|..
+		A value is true when it is a non-zeron number.  When {actual}
+		is not a number the assert fails.
+
 asin({expr})						*asin()*
 		Return the arc sine of {expr} measured in radians, as a |Float|
 		in the range of [-pi/2, pi/2].