comparison src/testdir/test_viminfo.vim @ 20735:298ef749e5fb v8.2.0920

patch 8.2.0920: writing viminfo fails with a circular reference Commit: https://github.com/vim/vim/commit/5b157fe2edfdce5f77080aeac2b4a03f39eb1c1a Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 7 16:08:08 2020 +0200 patch 8.2.0920: writing viminfo fails with a circular reference Problem: Writing viminfo fails with a circular reference. Solution: Use copyID to detect the cycle. (closes https://github.com/vim/vim/issues/6217)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Jun 2020 16:15:03 +0200
parents 2c4d9ca33769
children 505d97ea54da
comparison
equal deleted inserted replaced
20734:88e438717510 20735:298ef749e5fb
84 call assert_equal(test_blob, g:MY_GLOBAL_BLOB) 84 call assert_equal(test_blob, g:MY_GLOBAL_BLOB)
85 call assert_equal(test_false, g:MY_GLOBAL_FALSE) 85 call assert_equal(test_false, g:MY_GLOBAL_FALSE)
86 call assert_equal(test_true, g:MY_GLOBAL_TRUE) 86 call assert_equal(test_true, g:MY_GLOBAL_TRUE)
87 call assert_equal(test_null, g:MY_GLOBAL_NULL) 87 call assert_equal(test_null, g:MY_GLOBAL_NULL)
88 call assert_equal(test_none, g:MY_GLOBAL_NONE) 88 call assert_equal(test_none, g:MY_GLOBAL_NONE)
89
90 call delete('Xviminfo')
91 set viminfo-=!
92 endfunc
93
94 func Test_global_vars_with_circular_reference()
95 let g:MY_GLOBAL_LIST = []
96 call add(g:MY_GLOBAL_LIST, g:MY_GLOBAL_LIST)
97 let g:MY_GLOBAL_DICT = {}
98 let g:MY_GLOBAL_DICT['self'] = g:MY_GLOBAL_DICT
99
100 set viminfo='100,<50,s10,h,!,nviminfo
101 wv! Xviminfo
102 call assert_equal(v:errmsg, '')
103
104 unlet g:MY_GLOBAL_LIST
105 unlet g:MY_GLOBAL_DICT
106
107 rv! Xviminfo
108 call assert_equal(v:errmsg, '')
109 call assert_true(!exists('g:MY_GLOBAL_LIST'))
110 call assert_true(!exists('g:MY_GLOBAL_DICT'))
89 111
90 call delete('Xviminfo') 112 call delete('Xviminfo')
91 set viminfo-=! 113 set viminfo-=!
92 endfunc 114 endfunc
93 115