diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-05-05 12:59:43 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-05-05 19:43:16 +0800 |
commit | c11417b3d74f02568e37ea3370a7c24141d4f18a (patch) | |
tree | e1f359d22125f4b6c046d66b2595a70db7989ef2 | |
parent | 49c3eb01ab53c4f6bb3f372590878d46ef0c163a (diff) | |
download | rneovim-c11417b3d74f02568e37ea3370a7c24141d4f18a.tar.gz rneovim-c11417b3d74f02568e37ea3370a7c24141d4f18a.tar.bz2 rneovim-c11417b3d74f02568e37ea3370a7c24141d4f18a.zip |
vim-patch:9.0.1507: assert message is confusing with boolean result
Problem: Assert message is confusing with boolean result. assert_inrange()
replaces message instead of adding it.
Solution: Don't put quotes around expected boolean value. Append message
for assert_inrange(). (closes vim/vim#12342, closes vim/vim#12341)
https://github.com/vim/vim/commit/53f5e51628b56ef9171671cd6e9970374036a084
Move assert_type_T to testing.c and remove ASSERT_INRANGE.
-rw-r--r-- | src/nvim/eval.h | 10 | ||||
-rw-r--r-- | src/nvim/testing.c | 37 | ||||
-rw-r--r-- | test/old/testdir/test_assert.vim | 13 |
3 files changed, 27 insertions, 33 deletions
diff --git a/src/nvim/eval.h b/src/nvim/eval.h index e9cdb108a8..5fbfc4702c 100644 --- a/src/nvim/eval.h +++ b/src/nvim/eval.h @@ -229,16 +229,6 @@ typedef struct { Callback callback; } timer_T; -/// Type of assert_* check being performed -typedef enum { - ASSERT_EQUAL, - ASSERT_NOTEQUAL, - ASSERT_MATCH, - ASSERT_NOTMATCH, - ASSERT_INRANGE, - ASSERT_OTHER, -} assert_type_T; - /// types for expressions. typedef enum { EXPR_UNKNOWN = 0, diff --git a/src/nvim/testing.c b/src/nvim/testing.c index d9c376dd6a..430d6713ff 100644 --- a/src/nvim/testing.c +++ b/src/nvim/testing.c @@ -30,6 +30,16 @@ #include "nvim/types.h" #include "nvim/vim.h" +/// Type of assert_* check being performed +typedef enum { + ASSERT_EQUAL, + ASSERT_NOTEQUAL, + ASSERT_MATCH, + ASSERT_NOTMATCH, + ASSERT_FAILS, + ASSERT_OTHER, +} assert_type_T; + #ifdef INCLUDE_GENERATED_DECLARATIONS # include "testing.c.generated.h" #endif @@ -220,11 +230,11 @@ static void fill_assert_error(garray_T *gap, typval_T *opt_msg_tv, const char *e ga_concat_shorten_esc(gap, tofree); xfree(tofree); } else { - if (atype != ASSERT_INRANGE) { + if (atype == ASSERT_FAILS) { ga_concat(gap, "'"); } ga_concat_shorten_esc(gap, exp_str); - if (atype != ASSERT_INRANGE) { + if (atype == ASSERT_FAILS) { ga_concat(gap, "'"); } } @@ -622,7 +632,7 @@ void f_assert_fails(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) actual_tv.vval.v_string = actual; } fill_assert_error(&ga, &argvars[2], expected_str, - &argvars[error_found_index], &actual_tv, ASSERT_OTHER); + &argvars[error_found_index], &actual_tv, ASSERT_FAILS); ga_concat(&ga, ": "); assert_append_cmd_or_arg(&ga, argvars, cmd); assert_error(&ga); @@ -672,16 +682,9 @@ static int assert_inrange(typval_T *argvars) if (factual < flower || factual > fupper) { garray_T ga; prepare_assert_error(&ga); - if (argvars[3].v_type != VAR_UNKNOWN) { - char *const tofree = encode_tv2string(&argvars[3], NULL); - ga_concat(&ga, tofree); - xfree(tofree); - } else { - char msg[80]; - vim_snprintf(msg, sizeof(msg), "Expected range %g - %g, but got %g", - flower, fupper, factual); - ga_concat(&ga, msg); - } + char expected_str[200]; + vim_snprintf(expected_str, sizeof(expected_str), "range %g - %g,", flower, fupper); + fill_assert_error(&ga, &argvars[3], expected_str, NULL, &argvars[2], ASSERT_OTHER); assert_error(&ga); ga_clear(&ga); return 1; @@ -697,13 +700,11 @@ static int assert_inrange(typval_T *argvars) if (actual < lower || actual > upper) { garray_T ga; prepare_assert_error(&ga); - - char msg[55]; - vim_snprintf(msg, sizeof(msg), + char expected_str[200]; + vim_snprintf(expected_str, sizeof(expected_str), "range %" PRIdVARNUMBER " - %" PRIdVARNUMBER ",", lower, upper); // -V576 - fill_assert_error(&ga, &argvars[3], msg, NULL, &argvars[2], - ASSERT_INRANGE); + fill_assert_error(&ga, &argvars[3], expected_str, NULL, &argvars[2], ASSERT_OTHER); assert_error(&ga); ga_clear(&ga); return 1; diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim index 087eea3bcf..57d11d0e3a 100644 --- a/test/old/testdir/test_assert.vim +++ b/test/old/testdir/test_assert.vim @@ -9,11 +9,11 @@ func Test_assert_false() call assert_equal(0, v:false->assert_false()) call assert_equal(1, assert_false(123)) - call assert_match("Expected 'False' but got 123", v:errors[0]) + call assert_match("Expected False but got 123", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 123->assert_false()) - call assert_match("Expected 'False' but got 123", v:errors[0]) + call assert_match("Expected False but got 123", v:errors[0]) call remove(v:errors, 0) endfunc @@ -24,11 +24,11 @@ func Test_assert_true() call assert_equal(0, v:true->assert_true()) call assert_equal(1, assert_true(0)) - call assert_match("Expected 'True' but got 0", v:errors[0]) + call assert_match("Expected True but got 0", v:errors[0]) call remove(v:errors, 0) call assert_equal(1, 0->assert_true()) - call assert_match("Expected 'True' but got 0", v:errors[0]) + call assert_match("Expected True but got 0", v:errors[0]) call remove(v:errors, 0) endfunc @@ -405,8 +405,11 @@ func Test_assert_inrange() call remove(v:errors, 0) " Use a custom message + call assert_equal(1, assert_inrange(5, 7, 8, "Higher")) + call assert_match("Higher: Expected range 5 - 7, but got 8", v:errors[0]) + call remove(v:errors, 0) call assert_equal(1, assert_inrange(5, 7, 8.0, "Higher")) - call assert_match("Higher", v:errors[0]) + call assert_match("Higher: Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) call remove(v:errors, 0) " Invalid arguments |