diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-07-16 14:33:30 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2024-07-16 14:40:14 +0800 |
commit | a35eda36c34ed9d43d775335f87e8719d383e2d4 (patch) | |
tree | 6f0f393c1043baa7c479c8a8789749188ee756fb | |
parent | 76aede11622aa790cbe5de629b0fb9c9fe2770ab (diff) | |
download | rneovim-a35eda36c34ed9d43d775335f87e8719d383e2d4.tar.gz rneovim-a35eda36c34ed9d43d775335f87e8719d383e2d4.tar.bz2 rneovim-a35eda36c34ed9d43d775335f87e8719d383e2d4.zip |
vim-patch:8.2.5158: TSTP and INT signal tests are not run with valgrind
Problem: TSTP and INT signal tests are not run with valgrind.
Solution: Sleep a bit longer. (closes vim/vim#10614)
https://github.com/vim/vim/commit/61e3784819d3776ec6fb40d97a12a1bb659e8143
Cherry-pick Test_signal_TSTP() from patch 8.2.3941.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r-- | test/old/testdir/test_signals.vim | 55 |
1 files changed, 48 insertions, 7 deletions
diff --git a/test/old/testdir/test_signals.vim b/test/old/testdir/test_signals.vim index 2f9b6c09d8..b2dd7f9173 100644 --- a/test/old/testdir/test_signals.vim +++ b/test/old/testdir/test_signals.vim @@ -86,26 +86,67 @@ func Test_signal_INT() throw 'Skipped: INT signal not supported' endif - " Skip 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('XautoOut') + let lines =<< trim END + au VimSuspend * call writefile(["VimSuspend triggered"], "XautoOut", "as") + au VimResume * call writefile(["VimResume triggered"], "XautoOut", "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'))}) + + " 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 + sleep 100m + + call StopVimInTerminal(buf) + + let result = readfile('XautoOut') + call assert_equal(["VimSuspend triggered", "VimResume triggered"], result) + + %bwipe! + call delete('.Xsig_TERM.swp') + call delete('XsetupAucmd') + call delete('XautoOut') +endfunc + " Test a deadly signal. " " There are several deadly signals: SISEGV, SIBUS, SIGTERM... |