Mercurial > vim
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 */ |