commit 544bde3accf33370d1ac1b3306abb23bdbb2d01a
parent 6061169183c02e6e6cabae09a56dd68989afe257
Author: zeertzjq <zeertzjq@outlook.com>
Date: Wed, 17 Dec 2025 06:46:22 +0800
vim-patch:9.1.1987: assert_equal() prepends unnecessary ':' when typed
Problem: assert_equal() prepends unnecessary ':' when typed
(after 9.0.1758).
Solution: Don't change a NULL stacktrace to an empty string (zeertzjq).
closes: vim/vim#18936
https://github.com/vim/vim/commit/c4b3aefd0d5f81693e7098f224d3e4bfe24a7aa7
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/nvim/runtime.c b/src/nvim/runtime.c
@@ -229,7 +229,10 @@ char *estack_sfile(estack_arg_T which)
}
}
- ga_append(&ga, NUL);
+ // Only NUL-terminate when not returning NULL.
+ if (ga.ga_data != NULL) {
+ ga_append(&ga, NUL);
+ }
return (char *)ga.ga_data;
}
diff --git a/test/old/testdir/test_assert.vim b/test/old/testdir/test_assert.vim
@@ -386,6 +386,19 @@ func Test_assert_fails_in_timer()
call StopVimInTerminal(buf)
endfunc
+" Check that a typed assert_equal() doesn't prepend an unnecessary ':'.
+func Test_assert_equal_typed()
+ let after =<< trim END
+ call feedkeys(":call assert_equal(0, 1)\<CR>", 't')
+ call feedkeys(":call writefile(v:errors, 'Xerrors')\<CR>", 't')
+ call feedkeys(":qa!\<CR>", 't')
+ END
+ call assert_equal(1, RunVim([], after, ''))
+ call assert_equal(['Expected 0 but got 1'], readfile('Xerrors'))
+
+ call delete('Xerrors')
+endfunc
+
func Test_assert_beeps()
new
call assert_equal(0, assert_beeps('normal h'))