annotate src/testdir/test_timers.vim @ 19490:ac68906da0ae

Added tag v8.2.0302 for changeset 31ac050a29a7dec656bfce3f6529502a84f626d8
author Bram Moolenaar <Bram@vim.org>
date Sat, 22 Feb 2020 23:00:05 +0100
parents 2f0f308c069c
children fe827d6267c2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Test for timers
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
17089
8e9e9124c7a2 patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents: 17049
diff changeset
3 source check.vim
8e9e9124c7a2 patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents: 17049
diff changeset
4 CheckFeature timers
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5
12568
440d934bd616 patch 8.0.1162: shared script for tests cannot be included twice
Christian Brabandt <cb@256bit.org>
parents: 12459
diff changeset
6 source shared.vim
17164
7927cf327396 patch 8.1.1581: shared functions for testing are disorganised
Bram Moolenaar <Bram@vim.org>
parents: 17159
diff changeset
7 source term_util.vim
12351
4e61b77cd96f patch 8.0.1055: bufline test hangs on MS-Windows
Christian Brabandt <cb@256bit.org>
parents: 12347
diff changeset
8
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 func MyHandler(timer)
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
10 let g:val += 1
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 endfunc
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12
9153
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
13 func MyHandlerWithLists(lists, timer)
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
14 let x = string(a:lists)
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
15 endfunc
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
16
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
17 func Test_timer_oneshot()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
18 let g:val = 0
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 let timer = timer_start(50, 'MyHandler')
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
20 let slept = WaitFor('g:val == 1')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
21 call assert_equal(1, g:val)
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
22 if has('mac')
18964
8295f4061dc2 patch 8.2.0043: timers test is still flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18920
diff changeset
23 " Mac on Travis can be very slow.
8295f4061dc2 patch 8.2.0043: timers test is still flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18920
diff changeset
24 let limit = 180
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
25 else
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
26 let limit = 100
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
27 endif
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
28 if has('reltime')
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
29 call assert_inrange(49, limit, slept)
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
30 else
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
31 call assert_inrange(20, limit, slept)
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
32 endif
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 endfunc
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
35 func Test_timer_repeat_three()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
36 let g:val = 0
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 let timer = timer_start(50, 'MyHandler', {'repeat': 3})
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
38 let slept = WaitFor('g:val == 3')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
39 call assert_equal(3, g:val)
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
40 if has('reltime')
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
41 if has('mac')
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
42 " Mac on Travis can be slow.
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
43 call assert_inrange(149, 400, slept)
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
44 else
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
45 call assert_inrange(149, 250, slept)
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
46 endif
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
47 else
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
48 call assert_inrange(80, 200, slept)
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
49 endif
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 endfunc
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
52 func Test_timer_repeat_many()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
53 let g:val = 0
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 let timer = timer_start(50, 'MyHandler', {'repeat': -1})
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 sleep 200m
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 call timer_stop(timer)
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
57 " Mac on Travis can be slow.
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
58 if has('mac')
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
59 call assert_inrange(1, 5, g:val)
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
60 else
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
61 call assert_inrange(2, 5, g:val)
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
62 endif
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 endfunc
8734
986f7c00d43d commit https://github.com/vim/vim/commit/92e35efaf6a3278e4729115648997f09cd4005f5
Christian Brabandt <cb@256bit.org>
parents: 8577
diff changeset
64
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
65 func Test_timer_with_partial_callback()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
66 let g:val = 0
10178
776d0aef1d80 commit https://github.com/vim/vim/commit/26fe0d56912e42c2b16a61b2480e19ba569aee98
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
67 let meow = {'one': 1}
776d0aef1d80 commit https://github.com/vim/vim/commit/26fe0d56912e42c2b16a61b2480e19ba569aee98
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
68 function meow.bite(...)
776d0aef1d80 commit https://github.com/vim/vim/commit/26fe0d56912e42c2b16a61b2480e19ba569aee98
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
69 let g:val += self.one
8734
986f7c00d43d commit https://github.com/vim/vim/commit/92e35efaf6a3278e4729115648997f09cd4005f5
Christian Brabandt <cb@256bit.org>
parents: 8577
diff changeset
70 endfunction
986f7c00d43d commit https://github.com/vim/vim/commit/92e35efaf6a3278e4729115648997f09cd4005f5
Christian Brabandt <cb@256bit.org>
parents: 8577
diff changeset
71
10178
776d0aef1d80 commit https://github.com/vim/vim/commit/26fe0d56912e42c2b16a61b2480e19ba569aee98
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
72 call timer_start(50, meow.bite)
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
73 let slept = WaitFor('g:val == 1')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
74 call assert_equal(1, g:val)
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
75 if has('reltime')
18975
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
76 " Mac on Travis can be slow.
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
77 if has('mac')
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
78 call assert_inrange(49, 180, slept)
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
79 else
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
80 call assert_inrange(49, 130, slept)
8696f0ebeb43 patch 8.2.0048: another timers test is flaky on Travis for Mac
Bram Moolenaar <Bram@vim.org>
parents: 18964
diff changeset
81 endif
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
82 else
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
83 call assert_inrange(20, 100, slept)
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
84 endif
8734
986f7c00d43d commit https://github.com/vim/vim/commit/92e35efaf6a3278e4729115648997f09cd4005f5
Christian Brabandt <cb@256bit.org>
parents: 8577
diff changeset
85 endfunc
9153
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
86
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
87 func Test_timer_retain_partial()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
88 call timer_start(50, function('MyHandlerWithLists', [['a']]))
9153
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
89 call test_garbagecollect_now()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
90 sleep 100m
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
91 endfunc
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
92
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
93 func Test_timer_info()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
94 let id = timer_start(1000, 'MyHandler')
18035
11dca9732a48 patch 8.1.2013: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 18031
diff changeset
95 let info = id->timer_info()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
96 call assert_equal(id, info[0]['id'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
97 call assert_equal(1000, info[0]['time'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
98 call assert_true(info[0]['remaining'] > 500)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
99 call assert_true(info[0]['remaining'] <= 1000)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
100 call assert_equal(1, info[0]['repeat'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
101 call assert_equal("function('MyHandler')", string(info[0]['callback']))
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
102
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
103 let found = 0
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
104 for info in timer_info()
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
105 if info['id'] == id
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
106 let found += 1
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
107 endif
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
108 endfor
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
109 call assert_equal(1, found)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
110
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
111 call timer_stop(id)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
112 call assert_equal([], timer_info(id))
19289
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
113
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
114 call assert_fails('call timer_info("abc")', 'E39:')
9153
c2fe86f2bda1 commit https://github.com/vim/vim/commit/e3188e261569ae512fb1ae2653b57fdd9e259ca3
Christian Brabandt <cb@256bit.org>
parents: 8734
diff changeset
115 endfunc
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
116
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
117 func Test_timer_stopall()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
118 let id1 = timer_start(1000, 'MyHandler')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
119 let id2 = timer_start(2000, 'MyHandler')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
120 let info = timer_info()
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
121 call assert_equal(2, len(info))
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
122
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
123 call timer_stopall()
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
124 let info = timer_info()
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
125 call assert_equal(0, len(info))
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
126 endfunc
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
127
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
128 func Test_timer_paused()
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
129 let g:val = 0
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
130
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
131 let id = timer_start(50, 'MyHandler')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
132 let info = timer_info(id)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
133 call assert_equal(0, info[0]['paused'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
134
18035
11dca9732a48 patch 8.1.2013: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 18031
diff changeset
135 eval id->timer_pause(1)
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
136 let info = timer_info(id)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
137 call assert_equal(1, info[0]['paused'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
138 sleep 100m
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
139 call assert_equal(0, g:val)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
140
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
141 call timer_pause(id, 0)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
142 let info = timer_info(id)
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
143 call assert_equal(0, info[0]['paused'])
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
144
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
145 let slept = WaitFor('g:val == 1')
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
146 call assert_equal(1, g:val)
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
147 if has('reltime')
13098
318577da90b1 patch 8.0.1424: the timer_pause test is flaky on Travis
Christian Brabandt <cb@256bit.org>
parents: 12568
diff changeset
148 if has('mac')
318577da90b1 patch 8.0.1424: the timer_pause test is flaky on Travis
Christian Brabandt <cb@256bit.org>
parents: 12568
diff changeset
149 " The travis Mac machines appear to be very busy.
18920
a76fdc6560c3 patch 8.2.0021: timer test fails too often on Travis with MacOS
Bram Moolenaar <Bram@vim.org>
parents: 18035
diff changeset
150 call assert_inrange(0, 90, slept)
13098
318577da90b1 patch 8.0.1424: the timer_pause test is flaky on Travis
Christian Brabandt <cb@256bit.org>
parents: 12568
diff changeset
151 else
318577da90b1 patch 8.0.1424: the timer_pause test is flaky on Travis
Christian Brabandt <cb@256bit.org>
parents: 12568
diff changeset
152 call assert_inrange(0, 30, slept)
318577da90b1 patch 8.0.1424: the timer_pause test is flaky on Travis
Christian Brabandt <cb@256bit.org>
parents: 12568
diff changeset
153 endif
9933
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
154 else
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
155 call assert_inrange(0, 10, slept)
7f38e72a9d65 commit https://github.com/vim/vim/commit/f267f8bdf777073e392ada5b31d837c7b6090eb4
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
156 endif
19289
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
157
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
158 call assert_fails('call timer_pause("abc", 1)', 'E39:')
9810
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
159 endfunc
6a28d0c6f929 commit https://github.com/vim/vim/commit/b73598e2f022a22fec512ea681c70d2775e8fd87
Christian Brabandt <cb@256bit.org>
parents: 9153
diff changeset
160
10066
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
161 func StopMyself(timer)
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
162 let g:called += 1
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
163 if g:called == 2
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
164 call timer_stop(a:timer)
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
165 endif
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
166 endfunc
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
167
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
168 func Test_timer_delete_myself()
10066
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
169 let g:called = 0
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
170 let t = timer_start(10, 'StopMyself', {'repeat': -1})
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13164
diff changeset
171 call WaitForAssert({-> assert_equal(2, g:called)})
10066
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
172 call assert_equal(2, g:called)
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
173 call assert_equal([], timer_info(t))
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
174 endfunc
dc1610dc910f commit https://github.com/vim/vim/commit/417ccd7138d4d230d328de8b0d3892dd82ff1bee
Christian Brabandt <cb@256bit.org>
parents: 10017
diff changeset
175
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
176 func StopTimer1(timer)
18035
11dca9732a48 patch 8.1.2013: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 18031
diff changeset
177 let g:timer2 = 10->timer_start('StopTimer2')
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
178 " avoid maxfuncdepth error
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
179 call timer_pause(g:timer1, 1)
17734
c92899aa761a patch 8.1.1864: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17724
diff changeset
180 sleep 20m
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
181 endfunc
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
182
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
183 func StopTimer2(timer)
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
184 call timer_stop(g:timer1)
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
185 endfunc
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
186
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
187 func Test_timer_stop_in_callback()
17724
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
188 call assert_equal(0, len(timer_info()))
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
189 let g:timer1 = timer_start(10, 'StopTimer1')
17740
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
190 let slept = 0
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
191 for i in range(10)
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
192 if len(timer_info()) == 0
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
193 break
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
194 endif
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
195 sleep 10m
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
196 let slept += 10
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
197 endfor
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
198 " This should take only 30 msec, but on Mac it's often longer
01205ef5646d patch 8.1.1867: still a timer test that is flaky on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17734
diff changeset
199 call assert_inrange(0, 50, slept)
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
200 endfunc
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
201
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
202 func StopTimerAll(timer)
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
203 call timer_stopall()
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
204 endfunc
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
205
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
206 func Test_timer_stop_all_in_callback()
17724
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
207 call assert_equal(0, len(timer_info()))
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
208 call timer_start(10, 'StopTimerAll')
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
209 call assert_equal(1, len(timer_info()))
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
210 let slept = 0
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
211 for i in range(10)
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
212 if len(timer_info()) == 0
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
213 break
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
214 endif
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
215 sleep 10m
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
216 let slept += 10
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
217 endfor
76fba68d1c67 patch 8.1.1859: timer test sometimes fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 17716
diff changeset
218 call assert_inrange(0, 30, slept)
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
219 endfunc
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
220
11575
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
221 func FeedkeysCb(timer)
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
222 call feedkeys("hello\<CR>", 'nt')
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
223 endfunc
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
224
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
225 func InputCb(timer)
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
226 call timer_start(10, 'FeedkeysCb')
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
227 let g:val = input('?')
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
228 call Resume()
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
229 endfunc
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
230
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
231 func Test_timer_input_in_timer()
11575
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
232 let g:val = ''
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
233 call timer_start(10, 'InputCb')
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
234 call Standby(1000)
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
235 call assert_equal('hello', g:val)
0ec755ff1fe2 patch 8.0.0670: can't use input() in a timer callback
Christian Brabandt <cb@256bit.org>
parents: 10178
diff changeset
236 endfunc
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10066
diff changeset
237
11639
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
238 func FuncWithError(timer)
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
239 let g:call_count += 1
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
240 if g:call_count == 4
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
241 return
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
242 endif
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
243 doesnotexist
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
244 endfunc
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
245
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
246 func Test_timer_errors()
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
247 let g:call_count = 0
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
248 let timer = timer_start(10, 'FuncWithError', {'repeat': -1})
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
249 " Timer will be stopped after failing 3 out of 3 times.
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13164
diff changeset
250 call WaitForAssert({-> assert_equal(3, g:call_count)})
11639
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
251 sleep 50m
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
252 call assert_equal(3, g:call_count)
19289
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
253
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
254 call assert_fails('call timer_start(100, "MyHandler", "abc")', 'E475:')
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
255 call assert_fails('call timer_start(100, [])', 'E921:')
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
256 call assert_fails('call timer_stop("abc")', 'E39:')
11639
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
257 endfunc
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
258
12375
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
259 func FuncWithCaughtError(timer)
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
260 let g:call_count += 1
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
261 try
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
262 doesnotexist
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
263 catch
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
264 " nop
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
265 endtry
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
266 endfunc
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
267
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
268 func Test_timer_catch_error()
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
269 let g:call_count = 0
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
270 let timer = timer_start(10, 'FuncWithCaughtError', {'repeat': 4})
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
271 " Timer will not be stopped.
13808
16a062cf08c2 patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why
Christian Brabandt <cb@256bit.org>
parents: 13164
diff changeset
272 call WaitForAssert({-> assert_equal(4, g:call_count)})
12375
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
273 sleep 50m
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
274 call assert_equal(4, g:call_count)
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
275 endfunc
ab0d827151a1 patch 8.0.1067: try/catch in timer does not prevent it from being stopped
Christian Brabandt <cb@256bit.org>
parents: 12351
diff changeset
276
12337
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
277 func FeedAndPeek(timer)
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
278 call test_feedinput('a')
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
279 call getchar(1)
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
280 endfunc
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
281
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
282 func Interrupt(timer)
18031
8a2fb21c23c0 patch 8.1.2011: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17740
diff changeset
283 eval "\<C-C>"->test_feedinput()
12337
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
284 endfunc
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
285
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
286 func Test_timer_peek_and_get_char()
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
287 CheckUnix
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
288 CheckGui
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
289
12337
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
290 call timer_start(0, 'FeedAndPeek')
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
291 let intr = timer_start(100, 'Interrupt')
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
292 let c = getchar()
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
293 call assert_equal(char2nr('a'), c)
18035
11dca9732a48 patch 8.1.2013: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 18031
diff changeset
294 eval intr->timer_stop()
12337
040a892d0eed patch 8.0.1048: no test for what 8.0.1020 fixes
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
295 endfunc
11639
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11575
diff changeset
296
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
297 func Test_timer_getchar_zero()
15687
cb501b3c9fb5 patch 8.1.0851: feedkeys() with "L" does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 15673
diff changeset
298 if has('win32') && !has('gui_running')
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17249
diff changeset
299 throw 'Skipped: cannot get low-level input'
15669
d2ec272ae777 patch 8.1.0842: getchar_zero test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
300 endif
19249
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18975
diff changeset
301 CheckFunction reltimefloat
15669
d2ec272ae777 patch 8.1.0842: getchar_zero test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
302
15673
2973d8252740 patch 8.1.0844: when timer fails test will hang forever
Bram Moolenaar <Bram@vim.org>
parents: 15669
diff changeset
303 " Measure the elapsed time to avoid a hang when it fails.
2973d8252740 patch 8.1.0844: when timer fails test will hang forever
Bram Moolenaar <Bram@vim.org>
parents: 15669
diff changeset
304 let start = reltime()
15687
cb501b3c9fb5 patch 8.1.0851: feedkeys() with "L" does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 15673
diff changeset
305 let id = timer_start(20, {-> feedkeys('x', 'L')})
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
306 let c = 0
15673
2973d8252740 patch 8.1.0844: when timer fails test will hang forever
Bram Moolenaar <Bram@vim.org>
parents: 15669
diff changeset
307 while c == 0 && reltimefloat(reltime(start)) < 0.2
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
308 let c = getchar(0)
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
309 sleep 10m
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
310 endwhile
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
311 call assert_equal('x', nr2char(c))
15669
d2ec272ae777 patch 8.1.0842: getchar_zero test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
312 call timer_stop(id)
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
313 endfunc
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 13892
diff changeset
314
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
315 func Test_timer_ex_mode()
12459
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
316 " Function with an empty line.
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
317 func Foo(...)
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
318
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
319 endfunc
15669
d2ec272ae777 patch 8.1.0842: getchar_zero test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
320 let timer = timer_start(40, function('g:Foo'), {'repeat':-1})
12459
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
321 " This used to throw error E749.
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
322 exe "normal Qsleep 100m\rvi\r"
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
323 call timer_stop(timer)
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
324 endfunc
937356f8f8d6 patch 8.0.1109: timer causes error on exit from Ex mode
Christian Brabandt <cb@256bit.org>
parents: 12375
diff changeset
325
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
326 func Test_timer_restore_count()
13892
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
327 if !CanRunVimInTerminal()
16965
ba7727889385 patch 8.1.1483: skipped tests are not properly listed
Bram Moolenaar <Bram@vim.org>
parents: 15687
diff changeset
328 throw 'Skipped: cannot run Vim in a terminal window'
13892
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
329 endif
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
330 " Check that v:count is saved and restored, not changed by a timer.
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
331 call writefile([
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
332 \ 'nnoremap <expr><silent> L v:count ? v:count . "l" : "l"',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
333 \ 'func Doit(id)',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
334 \ ' normal 3j',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
335 \ 'endfunc',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
336 \ 'call timer_start(100, "Doit")',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
337 \ ], 'Xtrcscript')
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
338 call writefile([
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
339 \ '1-1234',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
340 \ '2-1234',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
341 \ '3-1234',
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
342 \ ], 'Xtrctext')
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
343 let buf = RunVimInTerminal('-S Xtrcscript Xtrctext', {})
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
344
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
345 " Wait for the timer to move the cursor to the third line.
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
346 call WaitForAssert({-> assert_equal(3, term_getcursor(buf)[0])})
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
347 call assert_equal(1, term_getcursor(buf)[1])
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
348 " Now check that v:count has not been set to 3
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
349 call term_sendkeys(buf, 'L')
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
350 call WaitForAssert({-> assert_equal(2, term_getcursor(buf)[1])})
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
351
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
352 call StopVimInTerminal(buf)
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
353 call delete('Xtrcscript')
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
354 call delete('Xtrctext')
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
355 endfunc
eadecbe4e390 patch 8.0.1817: a timer may change v:count unexpectedly
Christian Brabandt <cb@256bit.org>
parents: 13808
diff changeset
356
17159
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
357 " Test that the garbage collector isn't triggered if a timer callback invokes
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
358 " vgetc().
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
359 func Test_timer_nocatch_garbage_collect()
17159
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
360 " 'uptimetime. must be bigger than the timer timeout
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
361 set ut=200
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
362 call test_garbagecollect_soon()
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
363 call test_override('no_wait_return', 0)
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
364 func CauseAnError(id)
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
365 " This will show an error and wait for Enter.
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
366 let a = {'foo', 'bar'}
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
367 endfunc
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
368 func FeedChar(id)
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
369 call feedkeys('x', 't')
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
370 endfunc
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
371 call timer_start(300, 'FeedChar')
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
372 call timer_start(100, 'CauseAnError')
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
373 let x = getchar()
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
374
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
375 set ut&
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
376 call test_override('no_wait_return', 1)
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
377 delfunc CauseAnError
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
378 delfunc FeedChar
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
379 endfunc
3fd0765f454f patch 8.1.1579: dict and list could be GC'ed while displaying error
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
380
17716
50b3b9c13ab8 patch 8.1.1855: another failing timer test
Bram Moolenaar <Bram@vim.org>
parents: 17710
diff changeset
381 func Test_timer_error_in_timer_callback()
17249
3e2e998ce0db patch 8.1.1624: when testing in the GUI may try to run gvim in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 17239
diff changeset
382 if !has('terminal') || (has('win32') && has('gui_running'))
17184
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
383 throw 'Skipped: cannot run Vim in a terminal window'
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
384 endif
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
385
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
386 let lines =<< trim [CODE]
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
387 func Func(timer)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
388 " fail to create list
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
389 let x = [
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
390 endfunc
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
391 set updatetime=50
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
392 call timer_start(1, 'Func')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
393 [CODE]
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
394 call writefile(lines, 'Xtest.vim')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
395
17249
3e2e998ce0db patch 8.1.1624: when testing in the GUI may try to run gvim in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 17239
diff changeset
396 let buf = term_start(GetVimCommandCleanTerm() .. ' -S Xtest.vim', {'term_rows': 8})
17184
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
397 let job = term_getjob(buf)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
398 call WaitForAssert({-> assert_notequal('', term_getline(buf, 8))})
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
399
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
400 " GC must not run during timer callback, which can make Vim crash.
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
401 call term_wait(buf, 100)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
402 call term_sendkeys(buf, "\<CR>")
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
403 call term_wait(buf, 100)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
404 call assert_equal('run', job_status(job))
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
405
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
406 call term_sendkeys(buf, ":qall!\<CR>")
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
407 call WaitFor({-> job_status(job) ==# 'dead'})
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
408 if has('unix')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
409 call assert_equal('', job_info(job).termsig)
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
410 endif
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
411
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
412 call delete('Xtest.vim')
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
413 exe buf .. 'bwipe!'
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
414 endfunc
a5c3d374e1d3 patch 8.1.1591: on error garbage collection may free memory in use
Bram Moolenaar <Bram@vim.org>
parents: 17164
diff changeset
415
19289
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
416 " Test for garbage collection when a timer is still running
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
417 func Test_timer_garbage_collect()
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
418 let timer = timer_start(1000, function('MyHandler'), {'repeat' : 10})
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
419 call test_garbagecollect_now()
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
420 let l = timer_info(timer)
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
421 call assert_equal(function('MyHandler'), l[0].callback)
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
422 call timer_stop(timer)
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
423 endfunc
2f0f308c069c patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
424
9909
3ee84d270ea7 commit https://github.com/vim/vim/commit/9e4d8215d386100ab660d7d11e6620fd148b605e
Christian Brabandt <cb@256bit.org>
parents: 9822
diff changeset
425 " vim: shiftwidth=2 sts=2 expandtab