test: avoid noise in NVIM_LOG_FILE

Problem:
Tests that _intentionally_ fail certain conditions cause noise in
$NVIM_LOG_FILE:

    $NVIM_LOG_FILE: /home/runner/work/neovim/neovim/build/.nvimlog
    (last 100 lines)
    WRN 2023-01-16T18:26:27.673 T599.7799.0 unsubscribe:519: RPC: ch 1: tried to unsubscribe unknown event 'doesnotexist'
    WRN 2023-01-16T18:29:00.557 ?.11151    server_start:163: Failed to start server: no such file or directory: /X/X/X/...
    WRN 2023-01-16T18:33:07.269 127.0.0.1:12345 server_start:163: Failed to start server: address already in use: 127.0.0.1
    ...
    -- Output to stderr:
    module 'vim.shared' not found:
    	no field package.preload['vim.shared']
    	no file './vim/shared.lua'
    	no file '/home/runner/nvim-deps/usr/share/lua/5.1/vim/shared.lua'
    	no file '/home/runner/nvim-deps/usr/share/lua/5.1/vim/shared/init.lua'
    	no file '/home/runner/nvim-deps/usr/lib/lua/5.1/vim/shared.lua'
    	no file '/home/runner/nvim-deps/usr/lib/lua/5.1/vim/shared/init.lua'
    	no file './vim/shared.so'
    	...
    E970: Failed to initialize builtin lua modules

Solution:
- Log to a private $NVIM_LOG_FILE in tests that intentionally fail and
  cause ERR log messages.
- Assert that the expected messages are actually logged.
This commit is contained in:
Justin M. Keyes
2023-01-16 20:43:13 +01:00
parent 9ccc6de8d3
commit 6ec7bcb618
5 changed files with 65 additions and 7 deletions

View File

@@ -3,6 +3,8 @@ local helpers = require('test.functional.helpers')(after_each)
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
@@ -20,6 +22,8 @@ local tbl_contains = helpers.tbl_contains
local expect_exit = helpers.expect_exit
local is_os = helpers.is_os
local testlog = 'Xtest-defaults-log'
describe('startup defaults', function()
describe(':filetype', function()
local function expect_filetype(expected)
@@ -275,6 +279,10 @@ describe('XDG defaults', function()
-- Need separate describe() blocks to not run clear() twice.
-- Do not put before_each() here for the same reasons.
after_each(function()
os.remove(testlog)
end)
it("&runtimepath data-dir matches stdpath('data') #9910", function()
clear()
local rtp = eval('split(&runtimepath, ",")')
@@ -337,6 +345,7 @@ describe('XDG defaults', function()
clear({
args_rm={'runtimepath'},
env={
NVIM_LOG_FILE=testlog,
XDG_CONFIG_HOME=(root_path .. ('/x'):rep(4096)),
XDG_CONFIG_DIRS=(root_path .. ('/a'):rep(2048)
.. env_sep.. root_path .. ('/b'):rep(2048)
@@ -351,6 +360,10 @@ 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)
local vimruntime, libdir = vimruntime_and_libdir()
eq(((root_path .. ('/x'):rep(4096) .. '/nvim'
@@ -412,6 +425,7 @@ describe('XDG defaults', function()
clear({
args_rm={'runtimepath'},
env={
NVIM_LOG_FILE=testlog,
XDG_CONFIG_HOME='$XDG_DATA_HOME',
XDG_CONFIG_DIRS='$XDG_DATA_DIRS',
XDG_DATA_HOME='$XDG_CONFIG_HOME',
@@ -422,6 +436,9 @@ 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)
local vimruntime, libdir = vimruntime_and_libdir()
eq((('$XDG_DATA_HOME/nvim'
.. ',$XDG_DATA_DIRS/nvim'