Given foo (Some file with lines to count): foo12345678 bar12345678 baz12345678 four12345678 five12345678 six12345678 seven12345678 eight12345678 nine12345678 ten12345678 Execute(FixLocList should set all the default values correctly): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 2, \ 'col': 0, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \ { \ 'text': 'b', \ 'lnum': 2, \ 'col': 0, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{'text': 'a', 'lnum': 2}, {'text': 'b', 'lnum': 2}], \ ) Execute(FixLocList should use the values we supply): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 3, \ 'col': 4, \ 'bufnr': 10000, \ 'vcol': 1, \ 'type': 'W', \ 'nr': 42, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{ \ 'text': 'a', \ 'lnum': 3, \ 'col': 4, \ 'bufnr': 10000, \ 'vcol': 1, \ 'type': 'W', \ 'nr': 42, \ }], \ ) Execute(FixLocList should set items with lines beyond the end to the last line): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 0, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{'text': 'a', 'lnum': 11}], \ ) Execute(FixLocList should move line 0 to line 1): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 1, \ 'col': 0, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{'text': 'a', 'lnum': 0}], \ ) Execute(FixLocList should convert line and column numbers correctly): " The numbers should be 10, not 8 as octals. AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 10, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{'text': 'a', 'lnum': '010', 'col': '010'}], \ ) Execute(FixLocList should pass on end_col values): " The numbers should be 10, not 8 as octals. AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 10, \ 'end_col': 12, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 11, \ 'end_col': 12, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [ \ {'text': 'a', 'lnum': '010', 'col': '010', 'end_col': '012'}, \ {'text': 'a', 'lnum': '010', 'col': '011', 'end_col': 12}, \ ], \ ) Execute(FixLocList should pass on end_lnum values): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 10, \ 'end_lnum': 13, \ 'end_col': 12, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 11, \ 'end_lnum': 13, \ 'end_col': 12, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [ \ {'text': 'a', 'lnum': '010', 'col': '010', 'end_col': '012', 'end_lnum': '013'}, \ {'text': 'a', 'lnum': '010', 'col': '011', 'end_col': 12, 'end_lnum': 13}, \ ], \ ) Execute(FixLocList should allow subtypes to be set): AssertEqual \ [ \ { \ 'text': 'a', \ 'lnum': 10, \ 'col': 0, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'type': 'E', \ 'sub_type': 'style', \ 'nr': -1, \ 'linter_name': 'foobar', \ }, \], \ ale#engine#FixLocList( \ bufnr('%'), \ 'foobar', \ [{'text': 'a', 'lnum': 11, 'sub_type': 'style'}], \ )