comparison src/eval.c @ 7593:87e607fb6853 v7.4.1096

commit https://github.com/vim/vim/commit/a260b87d9da17f605666630f18c1ed909c2b8bae Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jan 15 20:48:22 2016 +0100 patch 7.4.1096 Problem: Need several lines to verify a command produces an error. Solution: Add assert_fails(). (suggested by Nikolay Pavlov) Make the quickfix alloc test actually work.
author Christian Brabandt <cb@256bit.org>
date Fri, 15 Jan 2016 21:00:06 +0100
parents 9fc996244059
children 1a528724f9d6
comparison
equal deleted inserted replaced
7592:c4dcf67bb056 7593:87e607fb6853
474 static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv)); 474 static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv));
475 static void f_arglistid __ARGS((typval_T *argvars, typval_T *rettv)); 475 static void f_arglistid __ARGS((typval_T *argvars, typval_T *rettv));
476 static void f_argv __ARGS((typval_T *argvars, typval_T *rettv)); 476 static void f_argv __ARGS((typval_T *argvars, typval_T *rettv));
477 static void f_assert_equal __ARGS((typval_T *argvars, typval_T *rettv)); 477 static void f_assert_equal __ARGS((typval_T *argvars, typval_T *rettv));
478 static void f_assert_exception __ARGS((typval_T *argvars, typval_T *rettv)); 478 static void f_assert_exception __ARGS((typval_T *argvars, typval_T *rettv));
479 static void f_assert_fails __ARGS((typval_T *argvars, typval_T *rettv));
479 static void f_assert_false __ARGS((typval_T *argvars, typval_T *rettv)); 480 static void f_assert_false __ARGS((typval_T *argvars, typval_T *rettv));
480 static void f_assert_true __ARGS((typval_T *argvars, typval_T *rettv)); 481 static void f_assert_true __ARGS((typval_T *argvars, typval_T *rettv));
481 #ifdef FEAT_FLOAT 482 #ifdef FEAT_FLOAT
482 static void f_asin __ARGS((typval_T *argvars, typval_T *rettv)); 483 static void f_asin __ARGS((typval_T *argvars, typval_T *rettv));
483 static void f_atan __ARGS((typval_T *argvars, typval_T *rettv)); 484 static void f_atan __ARGS((typval_T *argvars, typval_T *rettv));
8088 #ifdef FEAT_FLOAT 8089 #ifdef FEAT_FLOAT
8089 {"asin", 1, 1, f_asin}, /* WJMc */ 8090 {"asin", 1, 1, f_asin}, /* WJMc */
8090 #endif 8091 #endif
8091 {"assert_equal", 2, 3, f_assert_equal}, 8092 {"assert_equal", 2, 3, f_assert_equal},
8092 {"assert_exception", 1, 2, f_assert_exception}, 8093 {"assert_exception", 1, 2, f_assert_exception},
8094 {"assert_fails", 1, 2, f_assert_fails},
8093 {"assert_false", 1, 2, f_assert_false}, 8095 {"assert_false", 1, 2, f_assert_false},
8094 {"assert_true", 1, 2, f_assert_true}, 8096 {"assert_true", 1, 2, f_assert_true},
8095 #ifdef FEAT_FLOAT 8097 #ifdef FEAT_FLOAT
8096 {"atan", 1, 1, f_atan}, 8098 {"atan", 1, 1, f_atan},
8097 {"atan2", 2, 2, f_atan2}, 8099 {"atan2", 2, 2, f_atan2},
9007 || argvars[2].v_type != VAR_NUMBER) 9009 || argvars[2].v_type != VAR_NUMBER)
9008 EMSG(_(e_invarg)); 9010 EMSG(_(e_invarg));
9009 else 9011 else
9010 { 9012 {
9011 alloc_fail_id = argvars[0].vval.v_number; 9013 alloc_fail_id = argvars[0].vval.v_number;
9014 if (alloc_fail_id >= aid_last)
9015 EMSG(_(e_invarg));
9012 alloc_fail_countdown = argvars[1].vval.v_number; 9016 alloc_fail_countdown = argvars[1].vval.v_number;
9013 alloc_fail_repeat = argvars[2].vval.v_number; 9017 alloc_fail_repeat = argvars[2].vval.v_number;
9018 did_outofmem_msg = FALSE;
9014 } 9019 }
9015 } 9020 }
9016 9021
9017 /* 9022 /*
9018 * "and(expr, expr)" function 9023 * "and(expr, expr)" function
9296 fill_assert_error(&ga, &argvars[1], NULL, &argvars[0], 9301 fill_assert_error(&ga, &argvars[1], NULL, &argvars[0],
9297 &vimvars[VV_EXCEPTION].vv_tv); 9302 &vimvars[VV_EXCEPTION].vv_tv);
9298 assert_error(&ga); 9303 assert_error(&ga);
9299 ga_clear(&ga); 9304 ga_clear(&ga);
9300 } 9305 }
9306 }
9307
9308 /*
9309 * "assert_fails(cmd [, error])" function
9310 */
9311 static void
9312 f_assert_fails(argvars, rettv)
9313 typval_T *argvars;
9314 typval_T *rettv UNUSED;
9315 {
9316 char_u *cmd = get_tv_string_chk(&argvars[0]);
9317 garray_T ga;
9318
9319 called_emsg = FALSE;
9320 suppress_errthrow = TRUE;
9321 emsg_silent = TRUE;
9322 do_cmdline_cmd(cmd);
9323 if (!called_emsg)
9324 {
9325 prepare_assert_error(&ga);
9326 ga_concat(&ga, (char_u *)"command did not fail: ");
9327 ga_concat(&ga, cmd);
9328 assert_error(&ga);
9329 ga_clear(&ga);
9330 }
9331 else if (argvars[1].v_type != VAR_UNKNOWN)
9332 {
9333 char_u buf[NUMBUFLEN];
9334 char *error = (char *)get_tv_string_buf_chk(&argvars[1], buf);
9335
9336 if (strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL)
9337 {
9338 prepare_assert_error(&ga);
9339 fill_assert_error(&ga, &argvars[2], NULL, &argvars[1],
9340 &vimvars[VV_ERRMSG].vv_tv);
9341 assert_error(&ga);
9342 ga_clear(&ga);
9343 }
9344 }
9345
9346 called_emsg = FALSE;
9347 suppress_errthrow = FALSE;
9348 emsg_silent = FALSE;
9349 emsg_on_display = FALSE;
9350 set_vim_var_string(VV_ERRMSG, NULL, 0);
9301 } 9351 }
9302 9352
9303 /* 9353 /*
9304 * Common for assert_true() and assert_false(). 9354 * Common for assert_true() and assert_false().
9305 */ 9355 */