annotate src/testdir/test_signals.vim @ 33399:95db67c7b754 v9.0.1958

patch 9.0.1958: cannot complete option values Commit: https://github.com/vim/vim/commit/900894b09a95398dfc75599e9f0aa2ea25723384 Author: Yee Cheng Chin <ychin.git@gmail.com> Date: Fri Sep 29 20:42:32 2023 +0200 patch 9.0.1958: cannot complete option values Problem: cannot complete option values Solution: Add completion functions for several options Add cmdline tab-completion for setting string options Add tab-completion for setting string options on the cmdline using `:set=` (along with `:set+=` and `:set-=`). The existing tab completion for setting options currently only works when nothing is typed yet, and it only fills in with the existing value, e.g. when the user does `:set diffopt=<Tab>` it will be completed to `set diffopt=internal,filler,closeoff` and nothing else. This isn't too useful as a user usually wants auto-complete to suggest all the possible values, such as 'iblank', or 'algorithm:patience'. For set= and set+=, this adds a new optional callback function for each option that can be invoked when doing completion. This allows for each option to have control over how completion works. For example, in 'diffopt', it will suggest the default enumeration, but if `algorithm:` is selected, it will further suggest different algorithm types like 'meyers' and 'patience'. When using set=, the existing option value will be filled in as the first choice to preserve the existing behavior. When using set+= this won't happen as it doesn't make sense. For flag list options (e.g. 'mouse' and 'guioptions'), completion will take into account existing typed values (and in the case of set+=, the existing option value) to make sure it doesn't suggest duplicates. For set-=, there is a new `ExpandSettingSubtract` function which will handle flag list and comma-separated options smartly, by only suggesting values that currently exist in the option. Note that Vim has some existing code that adds special handling for 'filetype', 'syntax', and misc dir options like 'backupdir'. This change preserves them as they already work, instead of converting to the new callback API for each option. closes: #13182 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Fri, 29 Sep 2023 20:45:04 +0200
parents dbec60b8c253
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Test signal handling.
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
3 source check.vim
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
4 source term_util.vim
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
5
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
6 CheckUnix
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
8 source shared.vim
16192
1ab0d1f7807a patch 8.1.1101: signals test may fail in the GUI
Bram Moolenaar <Bram@vim.org>
parents: 16084
diff changeset
9
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
10 " Check whether a signal is available on this system.
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
11 func HasSignal(signal)
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
12 let signals = system('kill -l')
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
13 return signals =~# '\<' .. a:signal .. '\>'
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
14 endfunc
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 " Test signal WINCH (window resize signal)
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 func Test_signal_WINCH()
17657
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
18 CheckNotGui
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
19 if !HasSignal('WINCH')
0da9bc55c31a patch 8.1.1826: tests use hand coded feature and option checks
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
20 throw 'Skipped: WINCH signal not supported'
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 endif
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 " We do not actually want to change the size of the terminal.
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 let old_WS = ''
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 if exists('&t_WS')
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 let old_WS = &t_WS
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27 let &t_WS = ''
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 endif
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 let old_lines = &lines
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 let old_columns = &columns
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 let new_lines = &lines - 2
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 let new_columns = &columns - 2
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
35 exe 'set lines=' .. new_lines
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
36 exe 'set columns=' .. new_columns
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 call assert_equal(new_lines, &lines)
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 call assert_equal(new_columns, &columns)
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 " Send signal and wait for signal to be processed.
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 " 'lines' and 'columns' should have been restored
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 " after handing signal WINCH.
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
43 exe 'silent !kill -s WINCH ' .. getpid()
16084
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 call WaitForAssert({-> assert_equal(old_lines, &lines)})
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 call assert_equal(old_columns, &columns)
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 if old_WS != ''
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 let &t_WS = old_WS
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 endif
ed1482db2d72 patch 8.1.1047: WINCH signal is not tested
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 endfunc
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
51
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
52 " Test signal PWR, which should update the swap file.
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
53 func Test_signal_PWR()
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
54 if !HasSignal('PWR')
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
55 throw 'Skipped: PWR signal not supported'
16415
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
56 endif
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
57
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
58 " Set a very large 'updatetime' and 'updatecount', so that we can be sure
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
59 " that swap file is updated as a result of sending PWR signal, and not
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
60 " because of exceeding 'updatetime' or 'updatecount' when changing buffer.
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
61 set updatetime=100000 updatecount=100000
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
62 new Xtest_signal_PWR
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
63 let swap_name = swapname('%')
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
64 call setline(1, '123')
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
65 preserve
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
66 let swap_content = readfile(swap_name, 'b')
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
67
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
68 " Update the buffer and check that the swap file is not yet updated,
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
69 " since we set 'updatetime' and 'updatecount' to large values.
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
70 call setline(1, 'abc')
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
71 call assert_equal(swap_content, readfile(swap_name, 'b'))
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
72
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
73 " Sending PWR signal should update the swap file.
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
74 exe 'silent !kill -s PWR ' .. getpid()
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
75 call WaitForAssert({-> assert_notequal(swap_content, readfile(swap_name, 'b'))})
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
76
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
77 bwipe!
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
78 set updatetime& updatecount&
a0e98821a2ed patch 8.1.1212: signal PWR is not tested
Bram Moolenaar <Bram@vim.org>
parents: 16192
diff changeset
79 endfunc
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
80
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
81 " Test signal INT. Handler sets got_int. It should be like typing CTRL-C.
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
82 func Test_signal_INT()
20625
116c7bd5e980 patch 8.2.0866: not enough tests for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 20429
diff changeset
83 CheckRunVimInTerminal
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
84 if !HasSignal('INT')
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
85 throw 'Skipped: INT signal not supported'
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
86 endif
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
87
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
88 let buf = RunVimInTerminal('', {'rows': 6})
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
89 let pid_vim = term_getjob(buf)->job_info().process
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
90
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
91 " Check that an endless loop in Vim is interrupted by signal INT.
29281
cf881b3169ce patch 8.2.5158: TSTP and INT signal tests are not run with valgrind
Bram Moolenaar <Bram@vim.org>
parents: 28171
diff changeset
92 call term_sendkeys(buf, ":call setline(1, 'running')\n")
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
93 call term_sendkeys(buf, ":while 1 | endwhile\n")
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
94 call WaitForAssert({-> assert_equal(':while 1 | endwhile', term_getline(buf, 6))})
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
95 exe 'silent !kill -s INT ' .. pid_vim
29281
cf881b3169ce patch 8.2.5158: TSTP and INT signal tests are not run with valgrind
Bram Moolenaar <Bram@vim.org>
parents: 28171
diff changeset
96 sleep 50m
28171
b4c111ea83b1 patch 8.2.4611: typos in tests; one lua line not covered by test
Bram Moolenaar <Bram@vim.org>
parents: 26825
diff changeset
97 call term_sendkeys(buf, ":call setline(1, 'INTERRUPTED')\n")
b4c111ea83b1 patch 8.2.4611: typos in tests; one lua line not covered by test
Bram Moolenaar <Bram@vim.org>
parents: 26825
diff changeset
98 call WaitForAssert({-> assert_equal('INTERRUPTED', term_getline(buf, 1))})
19754
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
99
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
100 call StopVimInTerminal(buf)
c9cc9e5c87e0 patch 8.2.0433: INT signal not properly tested
Bram Moolenaar <Bram@vim.org>
parents: 17657
diff changeset
101 endfunc
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
102
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
103 " Test signal TSTP. Handler sets got_tstp.
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
104 func Test_signal_TSTP()
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
105 CheckRunVimInTerminal
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
106 if !HasSignal('TSTP')
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
107 throw 'Skipped: TSTP signal not supported'
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
108 endif
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
109
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
110 " If test fails once, it can leave temporary files and trying to rerun
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
111 " the test would then fail again if they are not deleted first.
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
112 call delete('.Xsig_TERM.swp')
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
113 call delete('XsetupAucmd')
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
114 call delete('XautoOut1')
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
115 call delete('XautoOut2')
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
116 let lines =<< trim END
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
117 au VimSuspend * call writefile(["VimSuspend triggered"], "XautoOut1", "as")
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
118 au VimResume * call writefile(["VimResume triggered"], "XautoOut2", "as")
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
119 END
30769
ae10b91ac6b3 patch 9.0.0719: too many delete() calls in tests
Bram Moolenaar <Bram@vim.org>
parents: 30114
diff changeset
120 call writefile(lines, 'XsetupAucmd', 'D')
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
121
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
122 let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
123 let pid_vim = term_getjob(buf)->job_info().process
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
124
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
125 call term_sendkeys(buf, ":call setline(1, 'foo')\n")
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
126 call WaitForAssert({-> assert_equal('foo', term_getline(buf, 1))})
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
127
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
128 call assert_false(filereadable('Xsig_TERM'))
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
129
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
130 " After TSTP the file is not saved (same function as ^Z)
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
131 exe 'silent !kill -s TSTP ' .. pid_vim
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
132 call WaitForAssert({-> assert_true(filereadable('.Xsig_TERM.swp'))})
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
133 sleep 100m
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
134
29281
cf881b3169ce patch 8.2.5158: TSTP and INT signal tests are not run with valgrind
Bram Moolenaar <Bram@vim.org>
parents: 28171
diff changeset
135 " We resume after the suspend. Sleep a bit for the signal to take effect,
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 30769
diff changeset
136 " also when running under valgrind.
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
137 exe 'silent !kill -s CONT ' .. pid_vim
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
138 call WaitForAssert({-> assert_true(filereadable('XautoOut2'))})
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
139 sleep 10m
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
140
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
141 call StopVimInTerminal(buf)
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
142
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
143 let result = readfile('XautoOut1')
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
144 call assert_equal(["VimSuspend triggered"], result)
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
145 let result = readfile('XautoOut2')
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
146 call assert_equal(["VimResume triggered"], result)
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
147
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
148 %bwipe!
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
149 call delete('.Xsig_TERM.swp')
30114
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
150 call delete('XautoOut1')
eae1e99e66de patch 9.0.0393: signals test often fails on FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 29281
diff changeset
151 call delete('XautoOut2')
26825
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
152 endfunc
3c1dcb63f579 patch 8.2.3941: SIGTSTP is not handled
Bram Moolenaar <Bram@vim.org>
parents: 23467
diff changeset
153
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
154 " Test a deadly signal.
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
155 "
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
156 " There are several deadly signals: SISEGV, SIBUS, SIGTERM...
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
157 " Test uses signal SIGTERM as it does not create a core
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
158 " dump file unlike SIGSEGV, SIGBUS, etc. See "man 7 signals.
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
159 "
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
160 " Vim should exit with a deadly signal and unsaved changes
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
161 " should be recoverable from the swap file preserved as a
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
162 " result of the deadly signal handler.
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
163 func Test_deadly_signal_TERM()
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
164 if !HasSignal('TERM')
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
165 throw 'Skipped: TERM signal not supported'
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
166 endif
20625
116c7bd5e980 patch 8.2.0866: not enough tests for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 20429
diff changeset
167 CheckRunVimInTerminal
20641
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
168
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
169 " If test fails once, it can leave temporary files and trying to rerun
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
170 " the test would then fail again if they are not deleted first.
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
171 call delete('.Xsig_TERM.swp')
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
172 call delete('XsetupAucmd')
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
173 call delete('XautoOut')
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
174 let lines =<< trim END
20641
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
175 au VimLeave * call writefile(["VimLeave triggered"], "XautoOut", "as")
20b6d5304e56 patch 8.2.0874: signals test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 20625
diff changeset
176 au VimLeavePre * call writefile(["VimLeavePre triggered"], "XautoOut", "as")
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
177 END
30769
ae10b91ac6b3 patch 9.0.0719: too many delete() calls in tests
Bram Moolenaar <Bram@vim.org>
parents: 30114
diff changeset
178 call writefile(lines, 'XsetupAucmd', 'D')
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
179
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
180 let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
181 let pid_vim = term_getjob(buf)->job_info().process
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
182
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
183 call term_sendkeys(buf, ":call setline(1, 'foo')\n")
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
184 call WaitForAssert({-> assert_equal('foo', term_getline(buf, 1))})
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
185
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
186 call assert_false(filereadable('Xsig_TERM'))
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
187 exe 'silent !kill -s TERM ' .. pid_vim
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
188 call WaitForAssert({-> assert_true(filereadable('.Xsig_TERM.swp'))})
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
189
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
190 " Don't call StopVimInTerminal() as it expects job to be still running.
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
191 call WaitForAssert({-> assert_equal("finished", term_getstatus(buf))})
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
192
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
193 new
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
194 silent recover .Xsig_TERM.swp
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
195 call assert_equal(['foo'], getline(1, '$'))
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
196
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
197 let result = readfile('XautoOut')
23108
34a74f5f0fb4 patch 8.2.2100: insufficient testing for function range and dict
Bram Moolenaar <Bram@vim.org>
parents: 20641
diff changeset
198 call assert_equal(["VimLeavePre triggered", "VimLeave triggered"], result)
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
199
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
200 %bwipe!
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
201 call delete('.Xsig_TERM.swp')
20429
c88ebfcbab03 patch 8.2.0769: VimLeavePre not triggered when Vim is terminated
Bram Moolenaar <Bram@vim.org>
parents: 20388
diff changeset
202 call delete('XautoOut')
20373
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
203 endfunc
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
204
f8835e16c34e patch 8.2.0742: handling of a TERM signal not tested
Bram Moolenaar <Bram@vim.org>
parents: 19754
diff changeset
205 " vim: ts=8 sw=2 sts=2 tw=80 fdm=marker