ale/test/handler/test_gcc_handler.vader
2018-05-09 09:01:41 +02:00

165 lines
4.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Execute(The GCC handler should ignore other lines of output):
AssertEqual
\ [],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ 'foo',
\ 'bar',
\ 'baz',
\ ])
Execute(GCC errors from included files should be parsed correctly):
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'col': 1,
\ 'filename': 'broken.h',
\ 'type': 'E',
\ 'text': 'expected identifier or ''('' before ''{'' token',
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ 'In file included from <stdin>:3:0:',
\ 'broken.h:1:1: error: expected identifier or ''('' before ''{'' token',
\ ' {{{',
\ ' ^',
\ ])
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'col': 1,
\ 'filename': 'b.h',
\ 'type': 'E',
\ 'text': 'expected identifier or ''('' before ''{'' token',
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ 'In file included from a.h:1:0,',
\ ' from test.c:3:',
\ 'b.h:1:1: error: expected identifier or ''('' before ''{'' token',
\ ' {{{',
\ ' ^',
\ ])
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'col': 1,
\ 'filename': 'b.h',
\ 'type': 'E',
\ 'text': 'unknown type name ''bad_type''',
\ },
\ {
\ 'lnum': 2,
\ 'col': 1,
\ 'filename': 'b.h',
\ 'type': 'E',
\ 'text': 'unknown type name ''other_bad_type''',
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ 'In file included from a.h:1:0,',
\ ' from test.c:3:',
\ 'b.h:1:1: error: unknown type name bad_type',
\ ' bad_type x;',
\ ' ^',
\ 'b.h:2:1: error: unknown type name other_bad_type',
\ ' other_bad_type y;',
\ ' ^',
\ ])
Execute(The GCC handler shouldn't complain about #pragma once for headers):
silent file! test.h
AssertEqual
\ [],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '<stdin>:1:1: warning: #pragma once in main file [enabled by default]',
\ ])
silent file! test.hpp
AssertEqual
\ [],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '<stdin>:1:1: warning: #pragma once in main file [enabled by default]',
\ ])
Execute(The GCC handler should handle syntax errors):
AssertEqual
\ [
\ {
\ 'lnum': 6,
\ 'col': 12,
\ 'type': 'E',
\ 'text': 'invalid suffix "p" on integer constant'
\ },
\ {
\ 'lnum': 17,
\ 'col': 5,
\ 'type': 'E',
\ 'text': 'invalid suffix "n" on integer constant'
\ },
\ {
\ 'lnum': 4,
\ 'type': 'E',
\ 'text': 'variable or field ''foo'' declared void'
\ },
\ {
\ 'lnum': 4,
\ 'type': 'E',
\ 'text': '''cat'' was not declared in this scope'
\ },
\ {
\ 'lnum': 12,
\ 'type': 'E',
\ 'text': 'expected '';'' before ''o'''
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '<stdin>:6:12: error: invalid suffix "p" on integer constant',
\ '<stdin>:17:5: error: invalid suffix "n" on integer constant',
\ '<stdin>:4: error: variable or field ''foo'' declared void',
\ '<stdin>:4: error: ''cat'' was not declared in this scope',
\ '<stdin>:12: error: expected `;'' before ''o''',
\ ])
Execute(The GCC handler should handle notes with no previous message):
AssertEqual
\ [],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '<stdin>:1:1: note: x',
\ '<stdin>:1:1: note: x',
\ ])
Execute(The GCC handler should interpret - as being the current file):
AssertEqual
\ [
\ {
\ 'lnum': 6,
\ 'col': 12,
\ 'type': 'E',
\ 'text': 'Some error',
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '-:6:12: error: Some error',
\ ])
Execute(The GCC handler should handle fatal error messages due to missing files):
AssertEqual
\ [
\ {
\ 'lnum': 3,
\ 'col': 12,
\ 'type': 'E',
\ 'text': 'foo.h: No such file or directory'
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(347, [
\ '<stdin>:3:12: fatal error: foo.h: No such file or directory',
\ ])