aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2023-01-17 00:12:59 +0100
committerJustin M. Keyes <justinkz@gmail.com>2023-01-17 00:19:30 +0100
commit665a7dafaf892b31285f35a43a90fc6e968fd7da (patch)
tree7da94ed4e3e9eaa4018a84ba43234bb39c598c35
parent6ec7bcb6184f562157eebc8d0f25f78ba333c6a5 (diff)
downloadrneovim-665a7dafaf892b31285f35a43a90fc6e968fd7da.tar.gz
rneovim-665a7dafaf892b31285f35a43a90fc6e968fd7da.tar.bz2
rneovim-665a7dafaf892b31285f35a43a90fc6e968fd7da.zip
refactor(tests): lift retry() into assert_log()
-rw-r--r--test/functional/api/server_notifications_spec.lua4
-rw-r--r--test/functional/core/fileio_spec.lua8
-rw-r--r--test/functional/core/log_spec.lua9
-rw-r--r--test/functional/core/startup_spec.lua6
-rw-r--r--test/functional/helpers.lua23
-rw-r--r--test/functional/options/defaults_spec.lua10
-rw-r--r--test/functional/vimscript/server_spec.lua13
-rw-r--r--test/helpers.lua46
8 files changed, 50 insertions, 69 deletions
diff --git a/test/functional/api/server_notifications_spec.lua b/test/functional/api/server_notifications_spec.lua
index 1ee2e5a517..53642858b2 100644
--- a/test/functional/api/server_notifications_spec.lua
+++ b/test/functional/api/server_notifications_spec.lua
@@ -84,9 +84,7 @@ describe('notify', function()
}}
nvim('subscribe', 'event1')
nvim('unsubscribe', 'doesnotexist')
- retry(nil, 1000, function()
- assert_log("tried to unsubscribe unknown event 'doesnotexist'", testlog, 10)
- end)
+ assert_log("tried to unsubscribe unknown event 'doesnotexist'", testlog, 10)
nvim('unsubscribe', 'event1')
assert_alive()
end)
diff --git a/test/functional/core/fileio_spec.lua b/test/functional/core/fileio_spec.lua
index bbf2202f0d..4e9891a4de 100644
--- a/test/functional/core/fileio_spec.lua
+++ b/test/functional/core/fileio_spec.lua
@@ -295,9 +295,7 @@ describe('tmpdir', function()
clear({ env={ NVIM_LOG_FILE=testlog, TMPDIR=faketmp, } })
matches(tmproot_pat, funcs.stdpath('run')) -- Tickle vim_mktempdir().
-- Assert that broken tmpdir root was handled.
- retry(nil, 1000, function()
- assert_log('tempdir root not a directory', testlog, 100)
- end)
+ assert_log('tempdir root not a directory', testlog, 100)
-- "…/nvim.<user>/" has wrong permissions:
skip(is_os('win'), 'TODO(justinmk): need setfperm/getfperm on Windows. #8244')
@@ -308,9 +306,7 @@ describe('tmpdir', function()
clear({ env={ NVIM_LOG_FILE=testlog, TMPDIR=faketmp, } })
matches(tmproot_pat, funcs.stdpath('run')) -- Tickle vim_mktempdir().
-- Assert that broken tmpdir root was handled.
- retry(nil, 1000, function()
- assert_log('tempdir root has invalid permissions', testlog, 100)
- end)
+ assert_log('tempdir root has invalid permissions', testlog, 100)
end)
it('too long', function()
diff --git a/test/functional/core/log_spec.lua b/test/functional/core/log_spec.lua
index 3b1ccd9559..f682df4155 100644
--- a/test/functional/core/log_spec.lua
+++ b/test/functional/core/log_spec.lua
@@ -6,7 +6,6 @@ local eq = helpers.eq
local exec_lua = helpers.exec_lua
local expect_exit = helpers.expect_exit
local request = helpers.request
-local retry = helpers.retry
describe('log', function()
local testlog = 'Xtest_logging'
@@ -40,9 +39,7 @@ describe('log', function()
}})
local tid = _G._nvim_test_id
- retry(nil, 1000, function()
- assert_log(tid..'%.%d+%.%d +server_init:%d+: test log message', testlog, 100)
- end)
+ assert_log(tid..'%.%d+%.%d +server_init:%d+: test log message', testlog, 100)
exec_lua([[
local j1 = vim.fn.jobstart({ vim.v.progpath, '-es', '-V1', '+foochild', '+qa!' }, vim.empty_dict())
@@ -50,8 +47,6 @@ describe('log', function()
]])
-- Child Nvim spawned by jobstart() appends "/c" to parent name.
- retry(nil, 1000, function()
- assert_log('%.%d+%.%d/c +server_init:%d+: test log message', testlog, 100)
- end)
+ assert_log('%.%d+%.%d/c +server_init:%d+: test log message', testlog, 100)
end)
end)
diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua
index 9dabcd28b3..1be5de6488 100644
--- a/test/functional/core/startup_spec.lua
+++ b/test/functional/core/startup_spec.lua
@@ -43,10 +43,8 @@ describe('startup', function()
it('--startuptime', function()
clear({ args = {'--startuptime', testfile}})
- retry(nil, 1000, function()
- assert_log('sourcing', testfile, 100)
- assert_log("require%('vim%._editor'%)", testfile, 100)
- end)
+ assert_log('sourcing', testfile, 100)
+ assert_log("require%('vim%._editor'%)", testfile, 100)
end)
it('-D does not hang #12647', function()
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 4e8bf1a323..6400db9f87 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -1,5 +1,4 @@
require('coxpcall')
-local busted = require('busted')
local luv = require('luv')
local lfs = require('lfs')
local mpack = require('mpack')
@@ -434,28 +433,6 @@ function module.connect(file_or_address)
return Session.new(stream)
end
--- Calls fn() until it succeeds, up to `max` times or until `max_ms`
--- milliseconds have passed.
-function module.retry(max, max_ms, fn)
- assert(max == nil or max > 0)
- assert(max_ms == nil or max_ms > 0)
- local tries = 1
- local timeout = (max_ms and max_ms or 10000)
- local start_time = luv.now()
- while true do
- local status, result = pcall(fn)
- if status then
- return result
- end
- luv.update_time() -- Update cached value of luv.now() (libuv: uv_now()).
- if (max and tries >= max) or (luv.now() - start_time > timeout) then
- busted.fail(string.format("retry() attempts: %d\n%s", tries, tostring(result)), 2)
- end
- tries = tries + 1
- luv.sleep(20) -- Avoid hot loop...
- end
-end
-
-- Starts a new global Nvim session.
--
-- Parameters are interpreted as startup args, OR a map with these keys:
diff --git a/test/functional/options/defaults_spec.lua b/test/functional/options/defaults_spec.lua
index 92b385c3b5..6a28885bf0 100644
--- a/test/functional/options/defaults_spec.lua
+++ b/test/functional/options/defaults_spec.lua
@@ -4,7 +4,6 @@ local Screen = require('test.functional.ui.screen')
local assert_alive = helpers.assert_alive
local assert_log = helpers.assert_log
-local retry = helpers.retry
local meths = helpers.meths
local command = helpers.command
local clear = helpers.clear
@@ -360,9 +359,7 @@ describe('XDG defaults', function()
end)
it('are correctly set', function()
- retry(nil, 1000, function()
- assert_log('Failed to start server: no such file or directory: /X/X/X', testlog, 10)
- end)
+ assert_log('Failed to start server: no such file or directory: /X/X/X', testlog, 10)
local vimruntime, libdir = vimruntime_and_libdir()
@@ -436,9 +433,8 @@ describe('XDG defaults', function()
end)
it('are not expanded', function()
- retry(nil, 1000, function()
- assert_log('Failed to start server: no such file or directory: %$XDG_RUNTIME_DIR%/', testlog, 10)
- end)
+ assert_log('Failed to start server: no such file or directory: %$XDG_RUNTIME_DIR%/', testlog, 10)
+
local vimruntime, libdir = vimruntime_and_libdir()
eq((('$XDG_DATA_HOME/nvim'
.. ',$XDG_DATA_DIRS/nvim'
diff --git a/test/functional/vimscript/server_spec.lua b/test/functional/vimscript/server_spec.lua
index a2d99c7d45..c89a0c4e93 100644
--- a/test/functional/vimscript/server_spec.lua
+++ b/test/functional/vimscript/server_spec.lua
@@ -1,6 +1,5 @@
local helpers = require('test.functional.helpers')(after_each)
local assert_log = helpers.assert_log
-local retry = helpers.retry
local eq, neq, eval = helpers.eq, helpers.neq, helpers.eval
local clear, funcs, meths = helpers.clear, helpers.funcs, helpers.meths
local ok = helpers.ok
@@ -88,9 +87,7 @@ describe('server', function()
}}
eq(0, eval("serverstop('')"))
eq(0, eval("serverstop('bogus-socket-name')"))
- retry(nil, 1000, function()
- assert_log('Not listening on bogus%-socket%-name', testlog, 10)
- end)
+ assert_log('Not listening on bogus%-socket%-name', testlog, 10)
end)
it('parses endpoints', function()
@@ -121,9 +118,7 @@ describe('server', function()
if status then
table.insert(expected, v4)
pcall(funcs.serverstart, v4) -- exists already; ignore
- retry(nil, 1000, function()
- assert_log('Failed to start server: address already in use: 127%.0%.0%.1', testlog, 10)
- end)
+ assert_log('Failed to start server: address already in use: 127%.0%.0%.1', testlog, 10)
end
local v6 = '::1:12345'
@@ -131,9 +126,7 @@ describe('server', function()
if status then
table.insert(expected, v6)
pcall(funcs.serverstart, v6) -- exists already; ignore
- retry(nil, 1000, function()
- assert_log('Failed to start server: address already in use: ::1', testlog, 10)
- end)
+ assert_log('Failed to start server: address already in use: ::1', testlog, 10)
end
eq(expected, funcs.serverlist())
clear_serverlist()
diff --git a/test/helpers.lua b/test/helpers.lua
index 3fe4322501..82ff23bef8 100644
--- a/test/helpers.lua
+++ b/test/helpers.lua
@@ -1,6 +1,7 @@
require('test.compat')
local shared = require('vim.shared')
local assert = require('luassert')
+local busted = require('busted')
local luv = require('luv')
local lfs = require('lfs')
local relpath = require('pl.path').relpath
@@ -45,6 +46,28 @@ function module.sleep(ms)
luv.sleep(ms)
end
+-- Calls fn() until it succeeds, up to `max` times or until `max_ms`
+-- milliseconds have passed.
+function module.retry(max, max_ms, fn)
+ assert(max == nil or max > 0)
+ assert(max_ms == nil or max_ms > 0)
+ local tries = 1
+ local timeout = (max_ms and max_ms or 10000)
+ local start_time = luv.now()
+ while true do
+ local status, result = pcall(fn)
+ if status then
+ return result
+ end
+ luv.update_time() -- Update cached value of luv.now() (libuv: uv_now()).
+ if (max and tries >= max) or (luv.now() - start_time > timeout) then
+ busted.fail(string.format("retry() attempts: %d\n%s", tries, tostring(result)), 2)
+ end
+ tries = tries + 1
+ luv.sleep(20) -- Avoid hot loop...
+ end
+end
+
local check_logs_useless_lines = {
['Warning: noted but unhandled ioctl']=1,
['could cause spurious value errors to appear']=2,
@@ -87,6 +110,8 @@ end
--- Asserts that `pat` matches (or *not* if inverse=true) any line in the tail of `logfile`.
---
+--- Retries for 1 second in case of filesystem delay.
+---
---@param pat (string) Lua pattern to match lines in the log file
---@param logfile (string) Full path to log file (default=$NVIM_LOG_FILE)
---@param nrlines (number) Search up to this many log lines
@@ -96,18 +121,21 @@ function module.assert_log(pat, logfile, nrlines, inverse)
assert(logfile ~= nil, 'no logfile')
nrlines = nrlines or 10
inverse = inverse or false
- local lines = module.read_file_list(logfile, -nrlines) or {}
- local msg = string.format('Pattern %q %sfound in log (last %d lines): %s:\n%s',
- pat, (inverse and '' or 'not '), nrlines, logfile, ' '..table.concat(lines, '\n '))
- for _,line in ipairs(lines) do
- if line:match(pat) then
- if inverse then error(msg) else return end
+
+ module.retry(nil, 1000, function()
+ local lines = module.read_file_list(logfile, -nrlines) or {}
+ local msg = string.format('Pattern %q %sfound in log (last %d lines): %s:\n%s',
+ pat, (inverse and '' or 'not '), nrlines, logfile, ' '..table.concat(lines, '\n '))
+ for _,line in ipairs(lines) do
+ if line:match(pat) then
+ if inverse then error(msg) else return end
+ end
end
- end
- if not inverse then error(msg) end
+ if not inverse then error(msg) end
+ end)
end
---- Asserts that `pat` does NOT matche any line in the tail of `logfile`.
+--- Asserts that `pat` does NOT match any line in the tail of `logfile`.
---
--- @see assert_log
function module.assert_nolog(pat, logfile, nrlines)