diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 906a869..8340bf2 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1752,6 +1752,7 @@
 argv( )				List	the argument list
 assert_equal( {exp}, {act} [, {msg}]) none  assert {exp} equals {act}
 assert_exception({error} [, {msg}])   none  assert {error} is in v:exception
+assert_fails( {cmd} [, {error}])      none  assert {cmd} fails
 assert_false( {actual} [, {msg}])     none  assert {actual} is false
 assert_true( {actual} [, {msg}])      none  assert {actual} is true
 asin( {expr})			Float	arc sine of {expr}
@@ -2207,6 +2208,11 @@
 			  call assert_exception('E492:')
 			endtry
 
+assert_fails({cmd} [, {error}])					*assert_fails()*
+		Run {cmd} and add an error message to |v:errors| if it does
+		NOT produce an error.
+		When {error} is given it must match |v:errmsg|.
+
 assert_false({actual} [, {msg}])				*assert_false()*
 		When {actual} is not false an error message is added to
 		|v:errors|, like with |assert_equal()|.
diff --git a/src/alloc.h b/src/alloc.h
index c237ef3..7a992c6 100644
--- a/src/alloc.h
+++ b/src/alloc.h
@@ -17,4 +17,5 @@
 	aid_qf_namebuf,
 	aid_qf_errmsg,
 	aid_qf_pattern,
+	aid_last,
 } alloc_id_T;
diff --git a/src/eval.c b/src/eval.c
index 5eddf23..ac1058c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -476,6 +476,7 @@
 static void f_argv __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_assert_equal __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_assert_exception __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_assert_fails __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_assert_false __ARGS((typval_T *argvars, typval_T *rettv));
 static void f_assert_true __ARGS((typval_T *argvars, typval_T *rettv));
 #ifdef FEAT_FLOAT
@@ -8090,6 +8091,7 @@
 #endif
     {"assert_equal",	2, 3, f_assert_equal},
     {"assert_exception", 1, 2, f_assert_exception},
+    {"assert_fails",	1, 2, f_assert_fails},
     {"assert_false",	1, 2, f_assert_false},
     {"assert_true",	1, 2, f_assert_true},
 #ifdef FEAT_FLOAT
@@ -9009,8 +9011,11 @@
     else
     {
 	alloc_fail_id = argvars[0].vval.v_number;
+	if (alloc_fail_id >= aid_last)
+	    EMSG(_(e_invarg));
 	alloc_fail_countdown = argvars[1].vval.v_number;
 	alloc_fail_repeat = argvars[2].vval.v_number;
+	did_outofmem_msg = FALSE;
     }
 }
 
@@ -9301,6 +9306,51 @@
 }
 
 /*
+ * "assert_fails(cmd [, error])" function
+ */
+    static void
+f_assert_fails(argvars, rettv)
+    typval_T	*argvars;
+    typval_T	*rettv UNUSED;
+{
+    char_u	*cmd = get_tv_string_chk(&argvars[0]);
+    garray_T	ga;
+
+    called_emsg = FALSE;
+    suppress_errthrow = TRUE;
+    emsg_silent = TRUE;
+    do_cmdline_cmd(cmd);
+    if (!called_emsg)
+    {
+	prepare_assert_error(&ga);
+	ga_concat(&ga, (char_u *)"command did not fail: ");
+	ga_concat(&ga, cmd);
+	assert_error(&ga);
+	ga_clear(&ga);
+    }
+    else if (argvars[1].v_type != VAR_UNKNOWN)
+    {
+	char_u	buf[NUMBUFLEN];
+	char	*error = (char *)get_tv_string_buf_chk(&argvars[1], buf);
+
+	if (strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL)
+	{
+	    prepare_assert_error(&ga);
+	    fill_assert_error(&ga, &argvars[2], NULL, &argvars[1],
+						&vimvars[VV_ERRMSG].vv_tv);
+	    assert_error(&ga);
+	    ga_clear(&ga);
+	}
+    }
+
+    called_emsg = FALSE;
+    suppress_errthrow = FALSE;
+    emsg_silent = FALSE;
+    emsg_on_display = FALSE;
+    set_vim_var_string(VV_ERRMSG, NULL, 0);
+}
+
+/*
  * Common for assert_true() and assert_false().
  */
     static void
diff --git a/src/misc2.c b/src/misc2.c
index 8540212..0ee57fc 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -798,13 +798,17 @@
 #endif /* MEM_PROFILE */
 
 #ifdef FEAT_EVAL
+static int alloc_does_fail __ARGS((long_u size));
+
     static int
-alloc_does_fail()
+alloc_does_fail(size)
+    long_u size;
 {
     if (alloc_fail_countdown == 0)
     {
 	if (--alloc_fail_repeat <= 0)
 	    alloc_fail_id = 0;
+	do_outofmem_msg(size);
 	return TRUE;
     }
     --alloc_fail_countdown;
@@ -844,7 +848,7 @@
     alloc_id_T	id UNUSED;
 {
 #ifdef FEAT_EVAL
-    if (alloc_fail_id == id && alloc_does_fail())
+    if (alloc_fail_id == id && alloc_does_fail((long_u)size))
 	return NULL;
 #endif
     return (lalloc((long_u)size, TRUE));
@@ -1008,7 +1012,7 @@
     alloc_id_T	id UNUSED;
 {
 #ifdef FEAT_EVAL
-    if (alloc_fail_id == id && alloc_does_fail())
+    if (alloc_fail_id == id && alloc_does_fail(size))
 	return NULL;
 #endif
     return (lalloc((long_u)size, message));
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index b9f3f7b..b2fc968 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -279,39 +279,19 @@
 
 function Test_nomem()
   call alloc_fail(GetAllocId('qf_dirname_start'), 0, 0)
-  try
-    vimgrep vim runtest.vim
-  catch
-    call assert_true(v:exception =~ 'E342')
-  endtry
+  call assert_fails('vimgrep vim runtest.vim', 'E342:')
 
   call alloc_fail(GetAllocId('qf_dirname_now'), 0, 0)
-  try
-    vimgrep vim runtest.vim
-  catch
-    call assert_true(v:exception =~ 'E342')
-  endtry
+  call assert_fails('vimgrep vim runtest.vim', 'E342:')
 
   call alloc_fail(GetAllocId('qf_namebuf'), 0, 0)
-  try
-    cfile runtest.vim
-  catch
-    call assert_true(v:exception =~ 'E342')
-  endtry
+  call assert_fails('cfile runtest.vim', 'E342:')
 
   call alloc_fail(GetAllocId('qf_errmsg'), 0, 0)
-  try
-    cfile runtest.vim
-  catch
-    call assert_true(v:exception =~ 'E342')
-  endtry
+  call assert_fails('cfile runtest.vim', 'E342:')
 
   call alloc_fail(GetAllocId('qf_pattern'), 0, 0)
-  try
-    cfile runtest.vim
-  catch
-    call assert_true(v:exception =~ 'E342')
-  endtry
+  call assert_fails('cfile runtest.vim', 'E342:')
 
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 2c92c17..b842116 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1096,
+/**/
     1095,
 /**/
     1094,
