mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
ex-cmds: :checkhealth
Built-in `:checkhealth` checks for valid $VIMRUNTIME by attempting to autoload `health#check()`. closes #2977 closes #3159
This commit is contained in:
parent
2f4647e77b
commit
5baeb4a49c
@ -22850,3 +22850,32 @@ void eval_format_source_name_line(char *buf, size_t bufsize)
|
||||
(sourcing_name ? sourcing_name : (char_u *)"?"),
|
||||
(sourcing_name ? sourcing_lnum : 0));
|
||||
}
|
||||
|
||||
/// ":checkhealth [plugins]"
|
||||
void ex_checkhealth(exarg_T *eap)
|
||||
{
|
||||
bool found = !!find_func((char_u *)"health#check");
|
||||
if (!found
|
||||
&& script_autoload("health#check", sizeof("health#check") - 1, false)) {
|
||||
found = !!find_func((char_u *)"health#check");
|
||||
}
|
||||
if (!found) {
|
||||
const char *vimruntime_env = os_getenv("VIMRUNTIME");
|
||||
if (vimruntime_env == NULL) {
|
||||
EMSG(_("E5009: $VIMRUNTIME is empty or unset"));
|
||||
return;
|
||||
} else {
|
||||
EMSG2(_("E5009: Invalid $VIMRUNTIME: %s"), os_getenv("VIMRUNTIME"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
size_t bufsize = STRLEN(eap->arg) + strlen("CheckHealth ") + 1;
|
||||
char *buf = xmalloc(bufsize);
|
||||
snprintf(buf, bufsize, "CheckHealth %s", eap->arg);
|
||||
|
||||
do_cmdline_cmd(buf);
|
||||
|
||||
xfree(buf);
|
||||
}
|
||||
|
||||
|
@ -450,6 +450,12 @@ return {
|
||||
addr_type=ADDR_LINES,
|
||||
func='ex_changes',
|
||||
},
|
||||
{
|
||||
command='checkhealth',
|
||||
flags=bit.bor(EXTRA, TRLBAR),
|
||||
addr_type=ADDR_LINES,
|
||||
func='ex_checkhealth',
|
||||
},
|
||||
{
|
||||
command='checkpath',
|
||||
flags=bit.bor(TRLBAR, BANG, CMDWIN),
|
||||
|
@ -2,7 +2,29 @@ local helpers = require('test.functional.helpers')(after_each)
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local plugin_helpers = require('test.functional.plugin.helpers')
|
||||
|
||||
local clear = helpers.clear
|
||||
local command = helpers.command
|
||||
local eq = helpers.eq
|
||||
|
||||
describe(':checkhealth', function()
|
||||
it("detects invalid $VIMRUNTIME", function()
|
||||
clear({
|
||||
env={ VIMRUNTIME='bogus', },
|
||||
})
|
||||
local status, err = pcall(command, 'checkhealth')
|
||||
eq(false, status)
|
||||
eq('Invalid $VIMRUNTIME: bogus', string.match(err, 'Invalid.*'))
|
||||
end)
|
||||
it("detects invalid $VIM", function()
|
||||
clear({
|
||||
env={ VIM='bogus', },
|
||||
})
|
||||
local status, err = pcall(command, 'checkhealth')
|
||||
eq(false, status)
|
||||
-- Invalid $VIM causes $VIMRUNTIME to be broken.
|
||||
eq('Invalid $VIMRUNTIME: bogus', string.match(err, 'Invalid.*'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('health.vim', function()
|
||||
before_each(function()
|
||||
@ -14,7 +36,7 @@ describe('health.vim', function()
|
||||
command("set runtimepath+=test/functional/fixtures")
|
||||
end)
|
||||
|
||||
it("reports", function()
|
||||
it("health#report_*()", function()
|
||||
helpers.source([[
|
||||
let g:health_report = execute([
|
||||
\ "call health#report_start('Check Bar')",
|
||||
@ -44,7 +66,7 @@ describe('health.vim', function()
|
||||
end)
|
||||
|
||||
|
||||
describe(":CheckHealth", function()
|
||||
describe(":checkhealth", function()
|
||||
it("concatenates multiple reports", function()
|
||||
command("CheckHealth success1 success2")
|
||||
helpers.expect([[
|
||||
|
Loading…
Reference in New Issue
Block a user