diff src/testdir/test_signals.vim @ 16084:ed1482db2d72 v8.1.1047

patch 8.1.1047: WINCH signal is not tested commit https://github.com/vim/vim/commit/db77b84ac2b6373ae4200d47945fc6ca64337e31 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 24 14:58:31 2019 +0100 patch 8.1.1047: WINCH signal is not tested Problem: WINCH signal is not tested. Solution: Add a test. (Dominique Pelle, closes https://github.com/vim/vim/issues/4158)
author Bram Moolenaar <Bram@vim.org>
date Sun, 24 Mar 2019 15:00:07 +0100
parents
children 1ab0d1f7807a
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_signals.vim
@@ -0,0 +1,44 @@
+" Test signal handling.
+
+if !has('unix')
+  finish
+endif
+
+source shared.vim
+
+" Test signal WINCH (window resize signal)
+func Test_signal_WINCH()
+  let signals = system('kill -l')
+  if signals !~ '\<WINCH\>'
+    " signal WINCH is not available, skip the test.
+    return
+  endif
+
+  " We do not actually want to change the size of the terminal.
+  let old_WS = ''
+  if exists('&t_WS')
+    let old_WS = &t_WS
+    let &t_WS = ''
+  endif
+
+  let old_lines = &lines
+  let old_columns = &columns
+  let new_lines = &lines - 2
+  let new_columns = &columns - 2
+
+  exe 'set lines=' . new_lines
+  exe 'set columns=' . new_columns
+  call assert_equal(new_lines, &lines)
+  call assert_equal(new_columns, &columns)
+
+  " Send signal and wait for signal to be processed.
+  " 'lines' and 'columns' should have been restored
+  " after handing signal WINCH.
+  exe 'silent !kill -s WINCH ' . getpid()
+  call WaitForAssert({-> assert_equal(old_lines, &lines)})
+  call assert_equal(old_columns, &columns)
+
+  if old_WS != ''
+    let &t_WS = old_WS
+  endif
+endfunc