feat(health): checkhealth buffer can show in a split window (#26714)

:checkhealth now respects :vertical and :horizontal.
For example:
  :vertical checkhealth foo bar
will open the healthcheck buffer in a vertical split.
This commit is contained in:
Pablo Arias
2023-12-25 01:30:56 +01:00
committed by GitHub
parent 675522af18
commit 2ff2785c39
4 changed files with 217 additions and 5 deletions

View File

@@ -6,6 +6,9 @@ local curbuf_contents = helpers.curbuf_contents
local command = helpers.command
local eq, neq, matches = helpers.eq, helpers.neq, helpers.matches
local getcompletion = helpers.funcs.getcompletion
local feed = helpers.feed
local source = helpers.source
local exec_lua = helpers.exec_lua
describe(':checkhealth', function()
it("detects invalid $VIMRUNTIME", function()
@@ -200,3 +203,190 @@ describe(':checkhealth provider', function()
eq(nil, string.match(curbuf_contents(), 'WRONG!!!'))
end)
end)
describe(':checkhealth window', function()
before_each(function()
clear{args={'-u', 'NORC'}}
-- Provides healthcheck functions
command("set runtimepath+=test/functional/fixtures")
command("set nofoldenable nowrap laststatus=0")
end)
it("opens directly if no buffer created", function()
local screen = Screen.new(50, 12)
screen:attach({ext_multigrid=true})
command("checkhealth success1")
screen:expect{grid=[[
## grid 1
[2:--------------------------------------------------]|*11
[3:--------------------------------------------------]|
## grid 2
^ |
──────────────────────────────────────────────────|
──────────────────────────── |
test_plug.success1: require("test_plug.success1. |
health").check() |
|
report 1 |
- OK everything is fine |
|
report 2 |
- OK nothing to see here |
## grid 3
|
]]}
end)
it("opens in vsplit window when no buffer created", function()
local screen = Screen.new(50, 20)
screen:attach({ext_multigrid=true})
command("vertical checkhealth success1")
screen:expect{grid=[[
## grid 1
[4:-------------------------]│[2:------------------------]|*19
[3:--------------------------------------------------]|
## grid 2
|
~ |*18
## grid 3
|
## grid 4
^ |
─────────────────────────|*3
─── |
test_plug.success1: |
require("test_plug. |
success1.health").check()|
|
report 1 |
- OK everything is fine |
|
report 2 |
- OK nothing to see here |
|
~ |*4
]]}
end)
it("opens in split window when no buffer created", function()
local screen = Screen.new(50, 25)
screen:attach({ext_multigrid=true})
command("horizontal checkhealth success1")
screen:expect{grid=[[
## grid 1
[4:--------------------------------------------------]|*12
health:// |
[2:--------------------------------------------------]|*11
[3:--------------------------------------------------]|
## grid 2
|
~ |*10
## grid 3
|
## grid 4
^ |
──────────────────────────────────────────────────|
──────────────────────────── |
test_plug.success1: require("test_plug.success1. |
health").check() |
|
report 1 |
- OK everything is fine |
|
report 2 |
- OK nothing to see here |
|
]]}
end)
it("opens in split window", function()
local screen = Screen.new(50, 25)
screen:attach({ext_multigrid=true})
feed('ihello')
feed('<esc>')
command("horizontal checkhealth success1")
screen:expect{grid=[[
## grid 1
[4:--------------------------------------------------]|*12
health:// |
[2:--------------------------------------------------]|*11
[3:--------------------------------------------------]|
## grid 2
hello |
~ |*10
## grid 3
|
## grid 4
^ |
──────────────────────────────────────────────────|
──────────────────────────── |
test_plug.success1: require("test_plug.success1. |
health").check() |
|
report 1 |
- OK everything is fine |
|
report 2 |
- OK nothing to see here |
|
]]}
end)
it("opens in vsplit window", function()
local screen = Screen.new(50, 25)
screen:attach({ext_multigrid=true})
feed('ihello')
feed('<esc>')
command("vertical checkhealth success1")
screen:expect{grid=[[
## grid 1
[4:-------------------------]│[2:------------------------]|*24
[3:--------------------------------------------------]|
## grid 2
hello |
~ |*23
## grid 3
|
## grid 4
^ |
─────────────────────────|*3
─── |
test_plug.success1: |
require("test_plug. |
success1.health").check()|
|
report 1 |
- OK everything is fine |
|
report 2 |
- OK nothing to see here |
|
~ |*9
]]}
end)
it("opens in tab", function()
-- create an empty buffer called "my_buff"
exec_lua 'vim.api.nvim_create_buf(false, true)'
command('file my_buff')
command("checkhealth success1")
-- define a function that collects all buffers in each tab
-- returns a dictionary like {tab1 = ["buf1", "buf2"], tab2 = ["buf3"]}
source([[
function CollectBuffersPerTab()
let buffs = {}
for i in range(tabpagenr('$'))
let key = 'tab' . (i + 1)
let value = []
for j in tabpagebuflist(i + 1)
call add(value, bufname(j))
endfor
let buffs[key] = value
endfor
return buffs
endfunction
]])
local buffers_per_tab = exec_lua("return vim.fn.CollectBuffersPerTab()")
eq(buffers_per_tab, {tab1 = { "my_buff" }, tab2 = {"health://"}})
end)
end)