123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- 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 curbuf_contents = helpers.curbuf_contents
- local command = helpers.command
- local eq = helpers.eq
- local getcompletion = helpers.funcs.getcompletion
- 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 'runtimepath'", function()
- clear()
- command('set runtimepath=bogus')
- local status, err = pcall(command, 'checkhealth')
- eq(false, status)
- eq("Invalid 'runtimepath'", string.match(err, 'Invalid.*'))
- end)
- it("detects invalid $VIM", function()
- clear()
- -- Do this after startup, otherwise it just breaks $VIMRUNTIME.
- command("let $VIM='zub'")
- command("checkhealth nvim")
- eq("ERROR: $VIM is invalid: zub",
- string.match(curbuf_contents(), "ERROR: $VIM .* zub"))
- end)
- it('completions can be listed via getcompletion()', function()
- clear()
- eq('nvim', getcompletion('nvim', 'checkhealth')[1])
- eq('provider', getcompletion('prov', 'checkhealth')[1])
- end)
- end)
- describe('health.vim', function()
- before_each(function()
- plugin_helpers.reset()
- -- Provides functions:
- -- health#broken#check()
- -- health#success1#check()
- -- health#success2#check()
- command("set runtimepath+=test/functional/fixtures")
- end)
- it("health#report_*()", function()
- helpers.source([[
- let g:health_report = execute([
- \ "call health#report_start('Check Bar')",
- \ "call health#report_ok('Bar status')",
- \ "call health#report_ok('Other Bar status')",
- \ "call health#report_warn('Zub')",
- \ "call health#report_start('Baz')",
- \ "call health#report_warn('Zim', ['suggestion 1', 'suggestion 2'])"
- \ ])
- ]])
- local result = helpers.eval("g:health_report")
- helpers.eq(helpers.dedent([[
- ## Check Bar
- - OK: Bar status
- - OK: Other Bar status
- - WARNING: Zub
- ## Baz
- - WARNING: Zim
- - ADVICE:
- - suggestion 1
- - suggestion 2]]),
- result)
- end)
- describe(":checkhealth", function()
- it("concatenates multiple reports", function()
- command("checkhealth success1 success2")
- helpers.expect([[
- health#success1#check
- ========================================================================
- ## report 1
- - OK: everything is fine
- ## report 2
- - OK: nothing to see here
- health#success2#check
- ========================================================================
- ## another 1
- - OK: ok
- ]])
- end)
- it("gracefully handles broken healthcheck", function()
- command("checkhealth broken")
- helpers.expect([[
- health#broken#check
- ========================================================================
- - ERROR: Failed to run healthcheck for "broken" plugin. Exception:
- function health#check[21]..health#broken#check, line 1
- caused an error
- ]])
- end)
- it("highlights OK, ERROR", function()
- local screen = Screen.new(72, 10)
- screen:attach()
- screen:set_default_attr_ids({
- Ok = { foreground = Screen.colors.Grey3, background = 6291200 },
- Error = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
- })
- screen:set_default_attr_ignore({
- Heading = { bold=true, foreground=Screen.colors.Magenta },
- Heading2 = { foreground = Screen.colors.SlateBlue },
- Bar = { foreground=Screen.colors.Purple },
- Bullet = { bold=true, foreground=Screen.colors.Brown },
- })
- command("checkhealth foo success1")
- command("1tabclose")
- command("set laststatus=0")
- screen:expect([[
- ^ |
- health#foo#check |
- ========================================================================|
- - {Error:ERROR:} No healthcheck found for "foo" plugin. |
- |
- health#success1#check |
- ========================================================================|
- ## report 1 |
- - {Ok:OK:} everything is fine |
- |
- ]])
- end)
- it("gracefully handles invalid healthcheck", function()
- command("checkhealth non_existent_healthcheck")
- helpers.expect([[
- health#non_existent_healthcheck#check
- ========================================================================
- - ERROR: No healthcheck found for "non_existent_healthcheck" plugin.
- ]])
- end)
- end)
- end)
|