aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-07-16 15:24:15 +0800
committerGitHub <noreply@github.com>2024-07-16 15:24:15 +0800
commit3adf9d4ec811ee39ea4774b20ccda53b644d2fcd (patch)
treee2cc5231456c8f89518b96b54f7bd47bd21f2486
parent25db0a1385377ec28fd6e4ca3553c79ce5cb80e4 (diff)
parente84a4c5a987f2bb428d46a73bed175ba36729be5 (diff)
downloadrneovim-3adf9d4ec811ee39ea4774b20ccda53b644d2fcd.tar.gz
rneovim-3adf9d4ec811ee39ea4774b20ccda53b644d2fcd.tar.bz2
rneovim-3adf9d4ec811ee39ea4774b20ccda53b644d2fcd.zip
Merge pull request #29739 from zeertzjq/vim-8.2.5158
vim-patch:8.2.{2276,5158},9.0.0393
-rw-r--r--test/old/testdir/test_signals.vim65
1 files changed, 54 insertions, 11 deletions
diff --git a/test/old/testdir/test_signals.vim b/test/old/testdir/test_signals.vim
index 667448a7c2..3ec4b975e1 100644
--- a/test/old/testdir/test_signals.vim
+++ b/test/old/testdir/test_signals.vim
@@ -86,26 +86,73 @@ func Test_signal_INT()
throw 'Skipped: INT signal not supported'
endif
- " Skip the rest of the test when running with valgrind as signal INT is not
- " received somehow by Vim when running with valgrind.
- let cmd = GetVimCommand()
- if cmd =~ 'valgrind'
- throw 'Skipped: cannot test signal INT with valgrind'
- endif
-
let buf = RunVimInTerminal('', {'rows': 6})
let pid_vim = term_getjob(buf)->job_info().process
" Check that an endless loop in Vim is interrupted by signal INT.
+ call term_sendkeys(buf, ":call setline(1, 'running')\n")
call term_sendkeys(buf, ":while 1 | endwhile\n")
call WaitForAssert({-> assert_equal(':while 1 | endwhile', term_getline(buf, 6))})
exe 'silent !kill -s INT ' .. pid_vim
+ sleep 50m
call term_sendkeys(buf, ":call setline(1, 'INTERRUPTED')\n")
call WaitForAssert({-> assert_equal('INTERRUPTED', term_getline(buf, 1))})
call StopVimInTerminal(buf)
endfunc
+" Test signal TSTP. Handler sets got_tstp.
+func Test_signal_TSTP()
+ CheckRunVimInTerminal
+ if !HasSignal('TSTP')
+ throw 'Skipped: TSTP signal not supported'
+ endif
+
+ " If test fails once, it can leave temporary files and trying to rerun
+ " the test would then fail again if they are not deleted first.
+ call delete('.Xsig_TERM.swp')
+ call delete('XsetupAucmd')
+ call delete('XautoOut1')
+ call delete('XautoOut2')
+ let lines =<< trim END
+ au VimSuspend * call writefile(["VimSuspend triggered"], "XautoOut1", "as")
+ au VimResume * call writefile(["VimResume triggered"], "XautoOut2", "as")
+ END
+ call writefile(lines, 'XsetupAucmd')
+
+ let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
+ let pid_vim = term_getjob(buf)->job_info().process
+
+ call term_sendkeys(buf, ":call setline(1, 'foo')\n")
+ call WaitForAssert({-> assert_equal('foo', term_getline(buf, 1))})
+
+ call assert_false(filereadable('Xsig_TERM'))
+
+ " After TSTP the file is not saved (same function as ^Z)
+ exe 'silent !kill -s TSTP ' .. pid_vim
+ call WaitForAssert({-> assert_true(filereadable('.Xsig_TERM.swp'))})
+ sleep 100m
+
+ " We resume after the suspend. Sleep a bit for the signal to take effect,
+ " also when running under valgrind.
+ exe 'silent !kill -s CONT ' .. pid_vim
+ call WaitForAssert({-> assert_true(filereadable('XautoOut2'))})
+ sleep 10m
+
+ call StopVimInTerminal(buf)
+
+ let result = readfile('XautoOut1')
+ call assert_equal(["VimSuspend triggered"], result)
+ let result = readfile('XautoOut2')
+ call assert_equal(["VimResume triggered"], result)
+
+ %bwipe!
+ call delete('.Xsig_TERM.swp')
+ call delete('XsetupAucmd')
+ call delete('XautoOut1')
+ call delete('XautoOut2')
+endfunc
+
" Test a deadly signal.
"
" There are several deadly signals: SISEGV, SIBUS, SIGTERM...
@@ -120,10 +167,6 @@ func Test_deadly_signal_TERM()
throw 'Skipped: TERM signal not supported'
endif
CheckRunVimInTerminal
- let cmd = GetVimCommand()
- if cmd =~ 'valgrind'
- throw 'Skipped: cannot test signal TERM with valgrind'
- endif
" If test fails once, it can leave temporary files and trying to rerun
" the test would then fail again if they are not deleted first.