summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-06-06 21:07:52 +0200
committerBram Moolenaar <Bram@vim.org>2016-06-06 21:07:52 +0200
commit45d2eeaad66939348893b9254171067b0457cd9d (patch)
tree9259906f02afa0de6c6752982ad0c936e08033e5 /src/testdir
parentbbe8d91e695184771d7e45315258fab8eb3e6b07 (diff)
downloadvim-git-45d2eeaad66939348893b9254171067b0457cd9d.tar.gz
patch 7.4.1903v7.4.1903
Problem: When writing viminfo merging current history with history in viminfo may drop recent history entries. Solution: Add new format for viminfo lines, use it for history entries. Use a timestamp for ordering the entries. Add test_settime(). Add the viminfo version. Does not do merging on timestamp yet.
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/test_viminfo.vim72
1 files changed, 70 insertions, 2 deletions
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index a979ab996..9c2acf0c9 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -1,6 +1,7 @@
" Test for reading and writing .viminfo
function Test_read_and_write()
+ call histdel(':')
let lines = [
\ '# comment line',
\ '*encoding=utf-8',
@@ -18,14 +19,16 @@ function Test_read_and_write()
for line in lines
if line[0] == '|'
if done == 0
- call assert_equal('|copied as-is', line)
+ call assert_equal('|1,2', line)
elseif done == 1
+ call assert_equal('|copied as-is', line)
+ elseif done == 2
call assert_equal('|and one more', line)
endif
let done += 1
endif
endfor
- call assert_equal(2, done)
+ call assert_equal(3, done)
call delete('Xviminfo')
endfunc
@@ -48,3 +51,68 @@ func Test_global_vars()
call delete('Xviminfo')
set viminfo-=!
endfunc
+
+func Test_cmdline_history()
+ call histdel(':')
+ call test_settime(11)
+ call histadd(':', "echo 'one'")
+ call test_settime(12)
+ " split into two lines
+ let long800 = repeat(" 'eight'", 100)
+ call histadd(':', "echo " . long800)
+ call test_settime(13)
+ " split into three lines
+ let long1400 = repeat(" 'fourteeeeen'", 100)
+ call histadd(':', "echo " . long1400)
+ wviminfo Xviminfo
+ let lines = readfile('Xviminfo')
+ let done_colon = 0
+ let done_bar = 0
+ let lnum = 0
+ while lnum < len(lines)
+ let line = lines[lnum] | let lnum += 1
+ if line[0] == ':'
+ if done_colon == 0
+ call assert_equal(":\x161408", line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('<echo ' . long1400, line)
+ elseif done_colon == 1
+ call assert_equal(":\x16808", line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal("<echo " . long800, line)
+ elseif done_colon == 2
+ call assert_equal(":echo 'one'", line)
+ endif
+ let done_colon += 1
+ elseif line[0:4] == '|2,0,'
+ if done_bar == 0
+ call assert_equal("|2,0,13,,>1407", line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('|<"echo ' . long1400[0:484], line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('|<' . long1400[485:974], line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('|<' . long1400[975:] . '"', line)
+ elseif done_bar == 1
+ call assert_equal('|2,0,12,,>807', line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('|<"echo ' . long800[0:484], line)
+ let line = lines[lnum] | let lnum += 1
+ call assert_equal('|<' . long800[485:] . '"', line)
+ elseif done_bar == 2
+ call assert_equal("|2,0,11,,\"echo 'one'\"", line)
+ endif
+ let done_bar += 1
+ endif
+ endwhile
+ call assert_equal(3, done_colon)
+ call assert_equal(3, done_bar)
+
+ call histdel(':')
+ rviminfo Xviminfo
+ call assert_equal("echo " . long1400, histget(':', -1))
+ call assert_equal("echo " . long800, histget(':', -2))
+ call assert_equal("echo 'one'", histget(':', -3))
+
+ call delete('Xviminfo')
+endfunc