| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- from clang.cindex import *
- from .util import get_tu
- # FIXME: We need support for invalid translation units to test better.
- def test_diagnostic_warning():
- tu = get_tu('int f0() {}\n')
- assert len(tu.diagnostics) == 1
- assert tu.diagnostics[0].severity == Diagnostic.Warning
- assert tu.diagnostics[0].location.line == 1
- assert tu.diagnostics[0].location.column == 11
- assert (tu.diagnostics[0].spelling ==
- 'control reaches end of non-void function')
- def test_diagnostic_note():
- # FIXME: We aren't getting notes here for some reason.
- tu = get_tu('#define A x\nvoid *A = 1;\n')
- assert len(tu.diagnostics) == 1
- assert tu.diagnostics[0].severity == Diagnostic.Warning
- assert tu.diagnostics[0].location.line == 2
- assert tu.diagnostics[0].location.column == 7
- assert 'incompatible' in tu.diagnostics[0].spelling
- # assert tu.diagnostics[1].severity == Diagnostic.Note
- # assert tu.diagnostics[1].location.line == 1
- # assert tu.diagnostics[1].location.column == 11
- # assert tu.diagnostics[1].spelling == 'instantiated from'
- def test_diagnostic_fixit():
- tu = get_tu('struct { int f0; } x = { f0 : 1 };')
- assert len(tu.diagnostics) == 1
- assert tu.diagnostics[0].severity == Diagnostic.Warning
- assert tu.diagnostics[0].location.line == 1
- assert tu.diagnostics[0].location.column == 26
- assert tu.diagnostics[0].spelling.startswith('use of GNU old-style')
- assert len(tu.diagnostics[0].fixits) == 1
- assert tu.diagnostics[0].fixits[0].range.start.line == 1
- assert tu.diagnostics[0].fixits[0].range.start.column == 26
- assert tu.diagnostics[0].fixits[0].range.end.line == 1
- assert tu.diagnostics[0].fixits[0].range.end.column == 30
- assert tu.diagnostics[0].fixits[0].value == '.f0 = '
- def test_diagnostic_range():
- tu = get_tu('void f() { int i = "a" + 1; }')
- assert len(tu.diagnostics) == 1
- assert tu.diagnostics[0].severity == Diagnostic.Warning
- assert tu.diagnostics[0].location.line == 1
- assert tu.diagnostics[0].location.column == 16
- assert tu.diagnostics[0].spelling.startswith('incompatible pointer to')
- assert len(tu.diagnostics[0].fixits) == 0
- assert len(tu.diagnostics[0].ranges) == 1
- assert tu.diagnostics[0].ranges[0].start.line == 1
- assert tu.diagnostics[0].ranges[0].start.column == 20
- assert tu.diagnostics[0].ranges[0].end.line == 1
- assert tu.diagnostics[0].ranges[0].end.column == 27
- try:
- tu.diagnostics[0].ranges[1].start.line
- except IndexError:
- assert True
- else:
- assert False
- def test_diagnostic_category():
- """Ensure that category properties work."""
- tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
- assert len(tu.diagnostics) == 1
- d = tu.diagnostics[0]
- assert d.severity == Diagnostic.Warning
- assert d.location.line == 1
- assert d.location.column == 11
- assert d.category_number == 2
- assert d.category_name == 'Semantic Issue'
- def test_diagnostic_option():
- """Ensure that category option properties work."""
- tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
- assert len(tu.diagnostics) == 1
- d = tu.diagnostics[0]
- assert d.option == '-Wunused-parameter'
- assert d.disable_option == '-Wno-unused-parameter'
|