aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/functional/core/job_spec.lua5
-rw-r--r--test/functional/fixtures/tty-test.c24
-rw-r--r--test/functional/helpers.lua14
-rw-r--r--test/functional/legacy/061_undo_tree_spec.lua10
-rw-r--r--test/functional/ui/mouse_spec.lua10
5 files changed, 42 insertions, 21 deletions
diff --git a/test/functional/core/job_spec.lua b/test/functional/core/job_spec.lua
index 58594db8ac..9d24ba62db 100644
--- a/test/functional/core/job_spec.lua
+++ b/test/functional/core/job_spec.lua
@@ -481,10 +481,9 @@ describe('jobs', function()
eq('rows: 40, cols: 10', next_chunk())
end)
- it('calling jobclose()', function()
- -- this should send SIGHUP to the process
+ it('jobclose() sends SIGHUP', function()
nvim('command', 'call jobclose(j)')
- eq({'notification', 'exit', {0, 1}}, next_msg())
+ eq({'notification', 'exit', {0, 42}}, next_msg())
end)
end)
end)
diff --git a/test/functional/fixtures/tty-test.c b/test/functional/fixtures/tty-test.c
index ca905ce65e..778e7f3cd3 100644
--- a/test/functional/fixtures/tty-test.c
+++ b/test/functional/fixtures/tty-test.c
@@ -32,11 +32,21 @@ static void walk_cb(uv_handle_t *handle, void *arg) {
}
#ifndef WIN32
-static void sigwinch_handler(int signum)
+static void sig_handler(int signum)
{
- int width, height;
- uv_tty_get_winsize(&tty, &width, &height);
- fprintf(stderr, "rows: %d, cols: %d\n", height, width);
+ switch(signum) {
+ case SIGWINCH: {
+ int width, height;
+ uv_tty_get_winsize(&tty, &width, &height);
+ fprintf(stderr, "rows: %d, cols: %d\n", height, width);
+ return;
+ }
+ case SIGHUP:
+ exit(42); // arbitrary exit code to test against
+ return;
+ default:
+ return;
+ }
}
#endif
@@ -141,7 +151,8 @@ int main(int argc, char **argv)
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
- sa.sa_handler = sigwinch_handler;
+ sa.sa_handler = sig_handler;
+ sigaction(SIGHUP, &sa, NULL);
sigaction(SIGWINCH, &sa, NULL);
// uv_signal_t sigwinch_watcher;
// uv_signal_init(uv_default_loop(), &sigwinch_watcher);
@@ -150,5 +161,8 @@ int main(int argc, char **argv)
#endif
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+ // XXX: Without this the SIGHUP handler is skipped on some systems.
+ sleep(100);
+
return 0;
}
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index ff62b4de86..d1ab02f361 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -243,6 +243,19 @@ local function connect(file_or_address)
return Session.new(stream)
end
+-- Calls fn() until it returns without error, up to `max` times.
+local function retry(fn, max)
+ local retries = max and (max - 1) or 2
+ for _ = 1, retries do
+ local success = pcall(fn)
+ if success then
+ return
+ end
+ end
+ -- pcall() is not used for the final attempt so failure can bubble up.
+ fn()
+end
+
local function clear(...)
local args = {unpack(nvim_argv)}
local new_args
@@ -530,6 +543,7 @@ return function(after_each)
prepend_argv = prepend_argv,
clear = clear,
connect = connect,
+ retry = retry,
spawn = spawn,
dedent = dedent,
source = source,
diff --git a/test/functional/legacy/061_undo_tree_spec.lua b/test/functional/legacy/061_undo_tree_spec.lua
index 9bf69ccba1..2069204938 100644
--- a/test/functional/legacy/061_undo_tree_spec.lua
+++ b/test/functional/legacy/061_undo_tree_spec.lua
@@ -98,15 +98,7 @@ describe('undo tree:', function()
expect_line('123456abc')
end
- -- Retry up to 3 times. pcall() is _not_ used for the final attempt, so
- -- that failure messages can bubble up.
- for _ = 1, 2 do
- local success = pcall(test_earlier_later)
- if success then
- return
- end
- end
- test_earlier_later()
+ helpers.retry(test_earlier_later)
end)
it('file-write specifications', function()
diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua
index 13bfe9e23f..b729b0db08 100644
--- a/test/functional/ui/mouse_spec.lua
+++ b/test/functional/ui/mouse_spec.lua
@@ -153,8 +153,9 @@ describe('Mouse input', function()
end)
it('in tabline to the left moves tab left', function()
- if os.getenv("TRAVIS") and helpers.os_name() == "osx" then
- pending("[Fails on Travis macOS. #4874]", function() end)
+ if os.getenv("TRAVIS") and (helpers.os_name() == "osx"
+ or os.getenv("CLANG_SANITIZER") == "ASAN_UBSAN") then
+ pending("[Fails on Travis macOS, ASAN_UBSAN. #4874]", function() end)
return
end
@@ -256,8 +257,9 @@ describe('Mouse input', function()
end)
it('out of tabline to the left moves tab left', function()
- if os.getenv("TRAVIS") and helpers.os_name() == "osx" then
- pending("[Fails on Travis macOS. #4874]", function() end)
+ if os.getenv("TRAVIS") and (helpers.os_name() == "osx"
+ or os.getenv("CLANG_SANITIZER") == "ASAN_UBSAN") then
+ pending("[Fails on Travis macOS, ASAN_UBSAN. #4874]", function() end)
return
end