From 68ec7dad412a6823d00c81914dbd459b9ebccf4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 3 Sep 2020 18:39:46 +0200 Subject: [PATCH] Add clang import test --- test/cli/test-clang-import.py | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/cli/test-clang-import.py diff --git a/test/cli/test-clang-import.py b/test/cli/test-clang-import.py new file mode 100644 index 000000000..9068dd7d6 --- /dev/null +++ b/test/cli/test-clang-import.py @@ -0,0 +1,40 @@ + +# python3 -m pytest test-clang-import.py + +import os +import re +from testutils import create_gui_project_file, cppcheck + + +def get_debug_section(title, stdout): + s = re.sub(r'0x[0-9a-fA-F]+', '0x12345678', stdout) + s = re.sub(r'isInline: [a-z]+', 'isInline: ---', s) + s = re.sub(r'argDef: .*', 'argDef: ---', s) + s = re.sub(r'nestedIn: .*', 'nestedIn: ---', s) + s = re.sub(r'functionScope: .*', 'functionScope: ---', s) + s = re.sub(r'definedType: .*', 'definedType: ---', s) + s = re.sub(r'classDef: .*', 'classDef: ---', s) + pos1 = s.find(title) + assert pos1 > 0 + pos1 = s.find('\n', pos1) + 1 + assert pos1 > 0 + pos2 = s.find("\n##", pos1) + if pos2 < 0: + return s[pos1:] + return s[pos1:pos2-1] + + +def check_symbol_database(code:str): + testfile = 'test.cpp' + with open(testfile, 'w+t') as f: + f.write(code) + ret1, stdout1, stderr1 = cppcheck(['--clang', '--debug', '-v', testfile]) + ret2, stdout2, stderr2 = cppcheck(['--debug', '-v', testfile]) + os.remove(testfile) + assert get_debug_section('### Symbol database', stdout1) == get_debug_section('### Symbol database', stdout2) + + +def test1(): + check_symbol_database('int main(){return 0;}') + +