diff --git a/test/cli/clang-import_test.py b/test/cli/clang-import_test.py index 13be3cd05aa..690f6a3ac23 100644 --- a/test/cli/clang-import_test.py +++ b/test/cli/clang-import_test.py @@ -5,7 +5,6 @@ import re import subprocess import sys - import pytest from testutils import cppcheck, assert_cppcheck @@ -20,7 +19,7 @@ pytest.skip(allow_module_level=True) -def get_debug_section(title, stdout): +def __get_debug_section(title, stdout): s = re.sub(r'0x[0-9a-fA-F]+', '0x12345678', stdout) s = re.sub(r'nestedIn: Struct', 'nestedIn: Class', s) s = re.sub(r'classDef: struct', 'classDef: class', s) @@ -43,8 +42,8 @@ def get_debug_section(title, stdout): return s[pos1:pos2-1] -def check_symbol_database(code): - testfile = 'test.cpp' +def __check_symbol_database(tmpdir, code): + testfile = os.path.join(tmpdir, 'test.cpp') with open(testfile, 'w+t') as f: f.write(code) ret1, stdout1, _ = cppcheck(['--clang', '--debug', '-v', testfile]) @@ -52,11 +51,11 @@ def check_symbol_database(code): os.remove(testfile) assert 0 == ret1, stdout1 assert 0 == ret2, stdout2 - assert get_debug_section('### Symbol database', stdout1) == get_debug_section('### Symbol database', stdout2) + assert __get_debug_section('### Symbol database', stdout1) == __get_debug_section('### Symbol database', stdout2) -def check_ast(code): - testfile = 'test.cpp' +def __check_ast(tmpdir, code): + testfile = os.path.join(tmpdir, 'test.cpp') with open(testfile, 'w+t') as f: f.write(code) ret1, stdout1, _ = cppcheck(['--clang', '--debug', '-v', testfile]) @@ -64,70 +63,58 @@ def check_ast(code): os.remove(testfile) assert 0 == ret1, stdout1 assert 0 == ret2, stdout1 - assert get_debug_section('##AST', stdout1) == get_debug_section('##AST', stdout2) - - -def todo_check_ast(code): - testfile = 'test.cpp' - with open(testfile, 'w+t') as f: - f.write(code) - ret1, stdout1, _ = cppcheck(['--clang', '--debug', '-v', testfile]) - ret2, stdout2, _ = cppcheck(['--debug', '-v', testfile]) - os.remove(testfile) - assert 0 == ret1, stdout1 - assert 0 == ret2, stdout2 - assert get_debug_section('##AST', stdout1) != get_debug_section('##AST', stdout2) + assert __get_debug_section('##AST', stdout1) == __get_debug_section('##AST', stdout2) -def test_symbol_database_1(): - check_symbol_database('int main(){return 0;}') +def test_symbol_database_1(tmpdir): + __check_symbol_database(tmpdir, 'int main(){return 0;}') -def test_symbol_database_2(): - check_symbol_database('struct Foo { void f(); }; void Foo::f() {}') +def test_symbol_database_2(tmpdir): + __check_symbol_database(tmpdir, 'struct Foo { void f(); }; void Foo::f() {}') -def test_symbol_database_3(): - check_symbol_database('struct Fred { int a; }; int b; void f(int c, int d) { int e; }') +def test_symbol_database_3(tmpdir): + __check_symbol_database(tmpdir, 'struct Fred { int a; }; int b; void f(int c, int d) { int e; }') -def test_symbol_database_4(): - check_symbol_database('void f(const int x) {}') +def test_symbol_database_4(tmpdir): + __check_symbol_database(tmpdir, 'void f(const int x) {}') -def test_symbol_database_5(): - check_symbol_database('void f(int);') +def test_symbol_database_5(tmpdir): + __check_symbol_database(tmpdir, 'void f(int);') -def test_symbol_database_6(): - check_symbol_database('inline static int foo(int x) { return x; }') +def test_symbol_database_6(tmpdir): + __check_symbol_database(tmpdir, 'inline static int foo(int x) { return x; }') -def test_symbol_database_7(): - check_symbol_database('struct S {int x;}; void f(struct S *s) {}') +def test_symbol_database_7(tmpdir): + __check_symbol_database(tmpdir, 'struct S {int x;}; void f(struct S *s) {}') -def test_symbol_database_class_access_1(): - check_symbol_database('class Fred { void foo ( ) {} } ;') +def test_symbol_database_class_access_1(tmpdir): + __check_symbol_database(tmpdir, 'class Fred { void foo ( ) {} } ;') -def test_symbol_database_class_access_2(): - check_symbol_database('class Fred { protected: void foo ( ) {} } ;') +def test_symbol_database_class_access_2(tmpdir): + __check_symbol_database(tmpdir, 'class Fred { protected: void foo ( ) {} } ;') -def test_symbol_database_class_access_3(): - check_symbol_database('class Fred { public: void foo ( ) {} } ;') +def test_symbol_database_class_access_3(tmpdir): + __check_symbol_database(tmpdir, 'class Fred { public: void foo ( ) {} } ;') -def test_symbol_database_operator(): - check_symbol_database('struct Fred { void operator=(int x); };') +def test_symbol_database_operator(tmpdir): + __check_symbol_database(tmpdir, 'struct Fred { void operator=(int x); };') -def test_symbol_database_struct_1(): - check_symbol_database('struct S {};') +def test_symbol_database_struct_1(tmpdir): + __check_symbol_database(tmpdir, 'struct S {};') -def test_ast_calculations(): - check_ast('int x = 5; int y = (x + 4) * 2;') - check_ast('long long dostuff(int x) { return x ? 3 : 5; }') +def test_ast_calculations(tmpdir): + __check_ast(tmpdir, 'int x = 5; int y = (x + 4) * 2;') + __check_ast(tmpdir, 'long long dostuff(int x) { return x ? 3 : 5; }') -def test_ast_control_flow(): - check_ast('void foo(int x) { if (x > 5){} }') - check_ast('int dostuff() { for (int x = 0; x < 10; x++); }') - check_ast('void foo(int x) { switch (x) {case 1: break; } }') - check_ast('void foo(int a, int b, int c) { foo(a,b,c); }') +def test_ast_control_flow(tmpdir): + __check_ast(tmpdir, 'void foo(int x) { if (x > 5){} }') + __check_ast(tmpdir, 'int dostuff() { for (int x = 0; x < 10; x++); }') + __check_ast(tmpdir, 'void foo(int x) { switch (x) {case 1: break; } }') + __check_ast(tmpdir, 'void foo(int a, int b, int c) { foo(a,b,c); }') -def test_ast(): - check_ast('struct S { int x; }; S* foo() { return new S(); }') +def test_ast(tmpdir): + __check_ast(tmpdir, 'struct S { int x; }; S* foo() { return new S(); }') def test_log(tmpdir): test_file = os.path.join(tmpdir, 'test.cpp')