Before: runtime ale_linters/lua/selene.vim After: Restore call ale#linter#Reset() Execute(The selene handler for Lua should parse input correctly): AssertEqual \ [ \ { \ 'lnum': 1, \ 'end_lnum': 2, \ 'col': 1, \ 'end_col': 3, \ 'text': 'empty if block', \ 'code': 'empty_if', \ 'type': 'W', \ }, \ { \ 'lnum': 1, \ 'end_lnum': 1, \ 'col': 4, \ 'end_col': 11, \ 'text': 'comparing things to nan directly is not allowed', \ 'code': 'compare_nan', \ 'type': 'E', \ 'detail': "comparing things to nan directly is not allowed\n\ntry: `x ~= x` instead" \ }, \ ], \ ale_linters#lua#selene#Handle(0, [ \ '{"severity":"Warning","code":"empty_if","message":"empty if block","primary_label":{"span":{"start":0,"start_line":0,"start_column":0,"end":20,"end_line":1,"end_column":3},"message":""},"notes":[],"secondary_labels":[]}', \ '{"severity":"Error","code":"compare_nan","message":"comparing things to nan directly is not allowed","primary_label":{"span":{"start":3,"start_line":0,"start_column":3,"end":11,"end_line":0,"end_column":11},"message":""},"notes":["try: `x ~= x` instead"],"secondary_labels":[]}', \ 'Results:', \ '1 errors', \ '1 warnings', \ '0 parse errors', \ ])