Mercurial > vim
annotate src/testdir/test_retab.vim @ 29165:0e0e298e05c1 v8.2.5102
patch 8.2.5102: interrupt not caught in test
Commit: https://github.com/vim/vim/commit/8bea171f154845046239c61bdef50a8e0f12f643
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 15 20:49:35 2022 +0100
patch 8.2.5102: interrupt not caught in test
Problem: Interrupt not caught in test.
Solution: Consider an exception thrown in the current try/catch when got_int
is set. Also catch early exit when not using try/catch.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 15 Jun 2022 22:00:04 +0200 |
parents | fc0a70812f24 |
children | 420f84328526 |
rev | line source |
---|---|
10633
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Test :retab |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
10633
diff
changeset
|
2 |
10633
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 func SetUp() |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 new |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 call setline(1, "\ta \t b c ") |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 endfunc |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 func TearDown() |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 bwipe! |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 endfunc |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 func Retab(bang, n) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 let l:old_tabstop = &tabstop |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 let l:old_line = getline(1) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 exe "retab" . a:bang . a:n |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 let l:line = getline(1) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 call setline(1, l:old_line) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 if a:n > 0 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 " :retab changes 'tabstop' to n with argument n > 0. |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 call assert_equal(a:n, &tabstop) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 exe 'set tabstop=' . l:old_tabstop |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 else |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 " :retab does not change 'tabstop' with empty or n <= 0. |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 call assert_equal(l:old_tabstop, &tabstop) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 endif |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 return l:line |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 endfunc |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 func Test_retab() |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 set tabstop=8 noexpandtab |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
31 call assert_equal("\ta\t b c ", Retab('', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
32 call assert_equal("\ta\t b c ", Retab('', 0)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
33 call assert_equal("\ta\t b c ", Retab('', 8)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
34 call assert_equal("\ta\t b\t c\t ", Retab('!', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
35 call assert_equal("\ta\t b\t c\t ", Retab('!', 0)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
36 call assert_equal("\ta\t b\t c\t ", Retab('!', 8)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
37 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
38 call assert_equal("\t\ta\t\t\tb c ", Retab('', 4)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
39 call assert_equal("\t\ta\t\t\tb\t\t c\t ", Retab('!', 4)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
40 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
41 call assert_equal(" a\t\tb c ", Retab('', 10)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 call assert_equal(" a\t\tb c ", Retab('!', 10)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
43 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
44 set tabstop=8 expandtab |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
45 call assert_equal(" a b c ", Retab('', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
46 call assert_equal(" a b c ", Retab('', 0)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
47 call assert_equal(" a b c ", Retab('', 8)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
48 call assert_equal(" a b c ", Retab('!', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
49 call assert_equal(" a b c ", Retab('!', 0)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
50 call assert_equal(" a b c ", Retab('!', 8)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
51 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
52 call assert_equal(" a b c ", Retab(' ', 4)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
53 call assert_equal(" a b c ", Retab('!', 4)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
54 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
55 call assert_equal(" a b c ", Retab(' ', 10)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
56 call assert_equal(" a b c ", Retab('!', 10)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
57 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
58 set tabstop=4 noexpandtab |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
59 call assert_equal("\ta\t\tb c ", Retab('', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
60 call assert_equal("\ta\t\tb\t\t c\t ", Retab('!', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
61 call assert_equal("\t a\t\t\tb c ", Retab('', 3)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
62 call assert_equal("\t a\t\t\tb\t\t\tc\t ", Retab('!', 3)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
63 call assert_equal(" a\t b c ", Retab('', 5)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
64 call assert_equal(" a\t b\t\t c\t ", Retab('!', 5)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
65 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
66 set tabstop=4 expandtab |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
67 call assert_equal(" a b c ", Retab('', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
68 call assert_equal(" a b c ", Retab('!', '')) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
69 call assert_equal(" a b c ", Retab('', 3)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
70 call assert_equal(" a b c ", Retab('!', 3)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
71 call assert_equal(" a b c ", Retab('', 5)) |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
72 call assert_equal(" a b c ", Retab('!', 5)) |
27667
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
73 |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
74 set tabstop& expandtab& |
10633
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
75 endfunc |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
76 |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
77 func Test_retab_error() |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 call assert_fails('retab -1', 'E487:') |
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 call assert_fails('retab! -1', 'E487:') |
25733
4b2616ffe32b
patch 8.2.3402: invalid memory access when using :retab with large value
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
80 call assert_fails('ret -1000', 'E487:') |
4b2616ffe32b
patch 8.2.3402: invalid memory access when using :retab with large value
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
81 call assert_fails('ret 10000', 'E475:') |
4b2616ffe32b
patch 8.2.3402: invalid memory access when using :retab with large value
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
82 call assert_fails('ret 80000000000000000000', 'E475:') |
10633
91444fa276eb
patch 8.0.0206: test coverage for :retab insufficient
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
83 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
10633
diff
changeset
|
84 |
29165
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
85 func RetabLoop() |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
86 while 1 |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
87 set ts=4000 |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
88 retab 4 |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
89 endwhile |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
90 endfunc |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
91 |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
92 func Test_retab_endless() |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
93 " inside try/catch we catch the error message |
27667
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
94 new |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
95 call setline(1, "\t0\t") |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
96 let caught = 'no' |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
97 try |
29165
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
98 call RetabLoop() |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
99 catch /E1240:/ |
29124
fc0a70812f24
patch 8.2.5082: retab test fails
Bram Moolenaar <Bram@vim.org>
parents:
27667
diff
changeset
|
100 let caught = v:exception |
27667
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
101 endtry |
29165
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
102 call assert_match('E1240:', caught) |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
103 bwipe! |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
104 set tabstop& |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
105 endfunc |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
106 |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
107 func Test_nocatch_retab_endless() |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
108 " not inside try/catch an interrupt is generated to get out of loops |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
109 new |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
110 call setline(1, "\t0\t") |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
111 call assert_fails('call RetabLoop()', ['E1240:', 'Interrupted']) |
0e0e298e05c1
patch 8.2.5102: interrupt not caught in test
Bram Moolenaar <Bram@vim.org>
parents:
29124
diff
changeset
|
112 |
27667
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
113 bwipe! |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
114 set tabstop& |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
115 endfunc |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
116 |
289e87a78307
patch 8.2.4359: crash when repeatedly using :retab
Bram Moolenaar <Bram@vim.org>
parents:
25733
diff
changeset
|
117 |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
10633
diff
changeset
|
118 " vim: shiftwidth=2 sts=2 expandtab |