Mercurial > vim
annotate src/testdir/test_changelist.vim @ 33167:13258b342d38 v9.0.1865
patch 9.0.1865: Vim9: garbage collection may cause crash
Commit: https://github.com/vim/vim/commit/544be0d893e68c494aed09232d5bee4ca8b74619
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Mon Sep 4 22:14:28 2023 +0200
patch 9.0.1865: Vim9: garbage collection may cause crash
Problem: Vim9: garbage collection may cause crash
Solution: validate that class members typeval is not null
closes: #13028
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 04 Sep 2023 22:30:03 +0200 |
parents | f7a2de8a4ddc |
children |
rev | line source |
---|---|
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Tests for the changelist functionality |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
29026
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
3 " When splitting a window the changelist position is wrong. |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
4 " Test the changelist position after splitting a window. |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
5 " Test for the bug fixed by 7.4.386 |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
6 func Test_changelist() |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
7 let save_ul = &ul |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
8 enew! |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
9 call append('$', ['1', '2']) |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
10 exe "normal i\<C-G>u" |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
11 exe "normal Gkylpa\<C-G>u" |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
12 set ul=100 |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
13 exe "normal Gylpa\<C-G>u" |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
14 set ul=100 |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
15 normal gg |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
16 vsplit |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
17 normal g; |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
18 call assert_equal([3, 2], [line('.'), col('.')]) |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
19 normal g; |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
20 call assert_equal([2, 2], [line('.'), col('.')]) |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
21 call assert_fails('normal g;', 'E662:') |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
22 new |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
23 call assert_fails('normal g;', 'E664:') |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
24 %bwipe! |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
25 let &ul = save_ul |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
26 endfunc |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
27 |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
28 " Moving a split should not change its changelist index. |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
29 func Test_changelist_index_move_split() |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
30 exe "norm! iabc\<C-G>u\ndef\<C-G>u\nghi" |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
31 vsplit |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
32 normal 99g; |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
33 call assert_equal(0, getchangelist('%')[1]) |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
34 wincmd L |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
35 call assert_equal(0, getchangelist('%')[1]) |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
36 endfunc |
5baf5e50049b
patch 8.2.5035: when splitting a window the changelist position moves
Bram Moolenaar <Bram@vim.org>
parents:
28413
diff
changeset
|
37 |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
38 " Tests for the getchangelist() function |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
39 func Test_changelist_index() |
29997
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
40 edit Xgclfile1.txt |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
41 exe "normal iabc\<C-G>u\ndef\<C-G>u\nghi" |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
42 call assert_equal(3, getchangelist('%')[1]) |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
43 " Move one step back in the changelist. |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
44 normal 2g; |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
45 |
29997
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
46 hide edit Xgclfile2.txt |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
47 exe "normal iabcd\<C-G>u\ndefg\<C-G>u\nghij" |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
48 call assert_equal(3, getchangelist('%')[1]) |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
49 " Move to the beginning of the changelist. |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
50 normal 99g; |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
51 |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
52 " Check the changelist indices. |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
53 call assert_equal(0, getchangelist('%')[1]) |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
54 call assert_equal(1, getchangelist('#')[1]) |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
55 |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
56 bwipe! |
29997
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
57 call delete('Xgclfile1.txt') |
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
58 call delete('Xgclfile2.txt') |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
59 endfunc |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
60 |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
61 func Test_getchangelist() |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
62 bwipe! |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
63 enew |
17857
4935244c1128
patch 8.1.1925: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents:
13290
diff
changeset
|
64 call assert_equal([], 10->getchangelist()) |
4935244c1128
patch 8.1.1925: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents:
13290
diff
changeset
|
65 call assert_equal([[], 0], getchangelist()) |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
66 |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
29997
diff
changeset
|
67 call writefile(['line1', 'line2', 'line3'], 'Xclistfile1.txt', 'D') |
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
29997
diff
changeset
|
68 call writefile(['line1', 'line2', 'line3'], 'Xclistfile2.txt', 'D') |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
69 |
29997
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
70 edit Xclistfile1.txt |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
71 let buf_1 = bufnr() |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
72 exe "normal 1Goline\<C-G>u1.1" |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
73 exe "normal 3Goline\<C-G>u2.1" |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
74 exe "normal 5Goline\<C-G>u3.1" |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
75 normal g; |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
76 call assert_equal([[ |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
77 \ {'lnum' : 2, 'col' : 4, 'coladd' : 0}, |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 \ {'lnum' : 4, 'col' : 4, 'coladd' : 0}, |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2], |
13290
3f3d9ed211b2
patch 8.0.1519: getchangelist() does not use argument as bufname()
Christian Brabandt <cb@256bit.org>
parents:
13280
diff
changeset
|
80 \ getchangelist('%')) |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
81 |
29997
98f5a0618a77
patch 9.0.0336: tests are flaky because of using a common file name
Bram Moolenaar <Bram@vim.org>
parents:
29026
diff
changeset
|
82 hide edit Xclistfile2.txt |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
83 let buf_2 = bufnr() |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
84 exe "normal 1GOline\<C-G>u1.0" |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
85 exe "normal 2Goline\<C-G>u2.0" |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
86 call assert_equal([[ |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
87 \ {'lnum' : 1, 'col' : 6, 'coladd' : 0}, |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
88 \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2], |
13290
3f3d9ed211b2
patch 8.0.1519: getchangelist() does not use argument as bufname()
Christian Brabandt <cb@256bit.org>
parents:
13280
diff
changeset
|
89 \ getchangelist('%')) |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
90 hide enew |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
91 |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
92 call assert_equal([[ |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
93 \ {'lnum' : 2, 'col' : 4, 'coladd' : 0}, |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
94 \ {'lnum' : 4, 'col' : 4, 'coladd' : 0}, |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
95 \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2], |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
96 \ getchangelist(buf_1)) |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
97 call assert_equal([[ |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
98 \ {'lnum' : 1, 'col' : 6, 'coladd' : 0}, |
28413
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
99 \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2], |
1170b35651a5
patch 8.2.4731: the changelist index is not remembered per buffer
Bram Moolenaar <Bram@vim.org>
parents:
26532
diff
changeset
|
100 \ getchangelist(buf_2)) |
13280
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
101 |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
102 bwipe! |
fbda23eb0996
patch 8.0.1514: getting the list of changes is not easy
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
103 endfunc |
19625
f70a3c1000bb
patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17857
diff
changeset
|
104 |
f70a3c1000bb
patch 8.2.0369: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
17857
diff
changeset
|
105 " vim: shiftwidth=2 sts=2 expandtab |