aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-16 08:37:47 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-03-08 21:35:03 -0500
commitc1ee5e0694e00595bece82a05098cfa44bfe8fd4 (patch)
treece77b65e0e21cb411a05754c3693d9a76d6943d9 /src/nvim/testdir
parent4352d41db0d93ab9266c64be48eda872cb5ea589 (diff)
downloadrneovim-c1ee5e0694e00595bece82a05098cfa44bfe8fd4.tar.gz
rneovim-c1ee5e0694e00595bece82a05098cfa44bfe8fd4.tar.bz2
rneovim-c1ee5e0694e00595bece82a05098cfa44bfe8fd4.zip
vim-patch:8.0.1372: profile log may be truncated halfway a character
Problem: Profile log may be truncated halfway a character. Solution: Find the start of the character. (Ozaki Kiichi, closes vim/vim#2385) https://github.com/vim/vim/commit/ac112f01a6930c9d15cf0360b657373699916bfd nvim does not support "--clean" yet but "-es" should suffice for the test.
Diffstat (limited to 'src/nvim/testdir')
-rw-r--r--src/nvim/testdir/test_profile.vim41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_profile.vim b/src/nvim/testdir/test_profile.vim
index 4cbd800da5..8996e86b43 100644
--- a/src/nvim/testdir/test_profile.vim
+++ b/src/nvim/testdir/test_profile.vim
@@ -181,3 +181,44 @@ func Test_profile_errors()
call assert_fails("profile pause", 'E750:')
call assert_fails("profile continue", 'E750:')
endfunc
+
+func Test_profile_truncate_mbyte()
+ if !has('multi_byte') || &enc !=# 'utf-8'
+ return
+ endif
+
+ let lines = [
+ \ 'scriptencoding utf-8',
+ \ 'func! Foo()',
+ \ ' return [',
+ \ ' \ "' . join(map(range(0x4E00, 0x4E00 + 340), 'nr2char(v:val)'), '') . '",',
+ \ ' \ "' . join(map(range(0x4F00, 0x4F00 + 340), 'nr2char(v:val)'), '') . '",',
+ \ ' \ ]',
+ \ 'endfunc',
+ \ 'call Foo()',
+ \ ]
+
+ call writefile(lines, 'Xprofile_file.vim')
+ call system(v:progpath
+ \ . ' -es --cmd "set enc=utf-8"'
+ \ . ' -c "profile start Xprofile_file.log"'
+ \ . ' -c "profile file Xprofile_file.vim"'
+ \ . ' -c "so Xprofile_file.vim"'
+ \ . ' -c "qall!"')
+ call assert_equal(0, v:shell_error)
+
+ split Xprofile_file.log
+ if &fenc != ''
+ call assert_equal('utf-8', &fenc)
+ endif
+ /func! Foo()
+ let lnum = line('.')
+ call assert_match('^\s*return \[$', getline(lnum + 1))
+ call assert_match("\u4F52$", getline(lnum + 2))
+ call assert_match("\u5052$", getline(lnum + 3))
+ call assert_match('^\s*\\ \]$', getline(lnum + 4))
+ bwipe!
+
+ call delete('Xprofile_file.vim')
+ call delete('Xprofile_file.log')
+endfunc