Skip to content

Commit

Permalink
adjusted some Python tests
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave committed Jul 2, 2024
1 parent 8a4e26c commit 678106e
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 96 deletions.
134 changes: 48 additions & 86 deletions test/cli/inline-suppress_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import json
import os
import pytest
import sys
from testutils import cppcheck

__script_dir = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -237,7 +238,7 @@ def test_build_dir(tmpdir):
assert ret == 0, stdout


def __test_build_dir_unused_template(tmpdir, use_j):
def __test_build_dir_unused_template(tmpdir, extra_args):
args = [
'-q',
'--template=simple',
Expand All @@ -246,10 +247,8 @@ def __test_build_dir_unused_template(tmpdir, use_j):
'--inline-suppr',
'{}template.cpp'.format(__proj_inline_suppres_path)
]
if use_j:
args.append('-j2')
else:
args.append('-j1')

args = args + extra_args

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
Expand All @@ -259,12 +258,17 @@ def __test_build_dir_unused_template(tmpdir, use_j):


def test_build_dir_unused_template(tmpdir):
__test_build_dir_unused_template(tmpdir, False)
__test_build_dir_unused_template(tmpdir, ['-j1'])


def test_build_dir_unused_template_j_thread(tmpdir):
__test_build_dir_unused_template(tmpdir, ['-j2', '--executor=thread'])


@pytest.mark.xfail(strict=True)
def test_build_dir_unused_template_j(tmpdir):
__test_build_dir_unused_template(tmpdir, True)
@pytest.mark.skipif(sys.platform == 'win32', reason='ProcessExecutor not available on Windows')
def test_build_dir_unused_template_j_process(tmpdir):
__test_build_dir_unused_template(tmpdir, ['-j2', '--executor=process'])


def test_suppress_unmatched_inline_suppression(): # 11172
Expand All @@ -284,133 +288,92 @@ def test_suppress_unmatched_inline_suppression(): # 11172
assert ret == 0, stdout


# reporting of inline unusedFunction is deferred
def __test_unused_function_unmatched(tmpdir, use_j):
# TODO: should this error out?
def test_duplicate(tmpdir):
args = [
'-q',
'--template=simple',
'--cppcheck-build-dir={}'.format(tmpdir),
'--enable=all',
'--inline-suppr',
'proj-inline-suppress/unusedFunctionUnmatched.cpp'
'proj-inline-suppress/duplicate.cpp'
]

if use_j:
args.append('-j2')
else:
args.append('-j1')

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
lines.sort()
assert lines == [
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: uninitvar [unmatchedSuppression]'.format(__proj_inline_suppres_path),
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: unusedFunction [unmatchedSuppression]'.format(__proj_inline_suppres_path)
]
assert lines == []
assert stdout == ''
assert ret == 0, stdout


def test_unused_function_unmatched(tmpdir):
__test_unused_function_unmatched(tmpdir, False)


@pytest.mark.skip # unusedFunction does not work with -j
def test_unused_function_unmatched_j(tmpdir):
__test_unused_function_unmatched(tmpdir, True)


# reporting of inline unusedFunction is deferred
def __test_unused_function_unmatched_build_dir(tmpdir, extra_args):
# no error as inline suppressions ars handled separately
def __test_duplicate_cmd(tmpdir, extra_args):
args = [
'-q',
'--template=simple',
'--cppcheck-build-dir={}'.format(tmpdir),
'--enable=all',
'--inline-suppr',
'proj-inline-suppress/unusedFunctionUnmatched.cpp'
'--suppress=unreadVariable',
'proj-inline-suppress/4.c'
]

args = args + extra_args

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
lines.sort()
print(lines)
# this is the suppression provided via the command-line which is unused because only the inline suppression is being matched
assert lines == [
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: uninitvar [unmatchedSuppression]'.format(__proj_inline_suppres_path),
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: unusedFunction [unmatchedSuppression]'.format(__proj_inline_suppres_path)
'nofile:0:0: information: Unmatched suppression: unreadVariable [unmatchedSuppression]'
]
assert stdout == ''
assert ret == 0, stdout


def test_unused_function_unmatched_build_dir(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j1'])


@pytest.mark.xfail(strict=True)
def test_unused_function_unmatched_build_dir_j(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j2'])
def test_duplicate_cmd(tmpdir):
__test_duplicate_cmd(tmpdir, ['-j1'])


# no error as inline suppressions are currently not being propagated back
def test_duplicate(tmpdir):
args = [
'-q',
'--template=simple',
'--cppcheck-build-dir={}'.format(tmpdir),
'--enable=all',
'--inline-suppr',
'proj-inline-suppress/duplicate.cpp'
]
def test_duplicate_cmd_j(tmpdir):
__test_duplicate_cmd(tmpdir, ['-j2'])

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
assert lines == []
assert stdout == ''
assert ret == 0, stdout

# no error as inline suppressions ars handled separately
def __test_duplicate_file(tmpdir, extra_args):
suppr_file = os.path.join(tmpdir, 'suppressions')
with open(suppr_file, 'wt') as f:
f.write('''unreadVariable''')

# no error as inline suppressions are currently not being propagated back
def test_duplicate_cmd(tmpdir):
args = [
'-q',
'--template=simple',
'--cppcheck-build-dir={}'.format(tmpdir),
'--enable=all',
'--inline-suppr',
'--suppress=unreadVariable',
'--suppressions-list={}'.format(suppr_file),
'proj-inline-suppress/4.c'
]

args = args + extra_args

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
assert lines == []
# this is the suppression provided via the suppression file which is unused because only the inline suppression is being matched
assert lines == [
'nofile:0:0: information: Unmatched suppression: unreadVariable [unmatchedSuppression]'
]
assert stdout == ''
assert ret == 0, stdout


# no error as inline suppressions are currently not being propagated back
@pytest.mark.xfail(strict=True)
def test_duplicate_file(tmpdir):
suppr_file = os.path.join(tmpdir, 'suppressions')
with open(suppr_file, 'wt') as f:
f.write('''unreadVariable''')
__test_duplicate_file(tmpdir, ['-j1'])

args = [
'-q',
'--template=simple',
'--cppcheck-build-dir={}'.format(tmpdir),
'--enable=all',
'--inline-suppr',
'--suppressions-list={}'.format(suppr_file),
'proj-inline-suppress/4.c'
]

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
assert lines == []
assert stdout == ''
assert ret == 0, stdout
def test_duplicate_file_j(tmpdir):
__test_duplicate_file(tmpdir, ['-j2'])


# reporting of inline unusedFunction is deferred
Expand All @@ -430,6 +393,7 @@ def __test_unused_function_unmatched(tmpdir, use_j):

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
lines.sort()
assert lines == [
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: uninitvar [unmatchedSuppression]'.format(__proj_inline_suppres_path),
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: unusedFunction [unmatchedSuppression]'.format(__proj_inline_suppres_path)
Expand Down Expand Up @@ -462,6 +426,8 @@ def __test_unused_function_unmatched_build_dir(tmpdir, extra_args):

ret, stdout, stderr = cppcheck(args, cwd=__script_dir)
lines = stderr.splitlines()
lines.sort()
print(lines)
assert lines == [
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: uninitvar [unmatchedSuppression]'.format(__proj_inline_suppres_path),
'{}unusedFunctionUnmatched.cpp:5:0: information: Unmatched suppression: unusedFunction [unmatchedSuppression]'.format(__proj_inline_suppres_path)
Expand All @@ -474,10 +440,6 @@ def test_unused_function_unmatched_build_dir(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j1'])


def test_unused_function_unmatched_build_dir_j_thread(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j2', '--executor=thread'])


@pytest.mark.xfail(strict=True)
def test_unused_function_unmatched_build_dir_j_process(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j2', '--executor=process'])
def test_unused_function_unmatched_build_dir_j(tmpdir):
__test_unused_function_unmatched_build_dir(tmpdir, ['-j2'])
37 changes: 27 additions & 10 deletions test/cli/unused_function_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

import os
import json
import sys
import pytest
from testutils import cppcheck

__script_dir = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -111,7 +113,12 @@ def test_unused_functions_compdb_j(tmpdir):
def test_unused_functions_builddir(tmpdir):
build_dir = os.path.join(tmpdir, 'b1')
os.mkdir(build_dir)
ret, stdout, stderr = cppcheck(['-q', '--template=simple', '--enable=unusedFunction', '--inline-suppr', '-j1', '--cppcheck-build-dir={}'.format(build_dir), __project_dir])
ret, stdout, stderr = cppcheck(['-q',
'--template=simple',
'--enable=unusedFunction',
'--inline-suppr',
'--cppcheck-build-dir={}'.format(build_dir),
__project_dir])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
"{}3.c:3:0: style: The function 'f3_3' is never used. [unusedFunction]".format(__project_dir_sep)
Expand All @@ -120,10 +127,18 @@ def test_unused_functions_builddir(tmpdir):


# TODO: only f3_3 is unused
def test_unused_functions_builddir_j(tmpdir):
@pytest.mark.skipif(sys.platform == 'win32', reason='ProcessExecutor not available on Windows')
def test_unused_functions_builddir_j_process(tmpdir):
build_dir = os.path.join(tmpdir, 'b1')
os.mkdir(build_dir)
ret, stdout, stderr = cppcheck(['-q', '--template=simple', '--enable=unusedFunction', '--inline-suppr', '-j2', '--cppcheck-build-dir={}'.format(build_dir), __project_dir])
ret, stdout, stderr = cppcheck(['-q',
'--template=simple',
'--enable=unusedFunction',
'--inline-suppr',
'-j2',
'--executor=process',
'--cppcheck-build-dir={}'.format(build_dir),
__project_dir])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
"{}1.c:4:0: style: The function 'f1' is never used. [unusedFunction]".format(__project_dir_sep),
Expand All @@ -142,8 +157,7 @@ def test_unused_functions_builddir_project(tmpdir):
'--enable=unusedFunction',
'--inline-suppr',
'--project={}'.format(os.path.join(__project_dir, 'unusedFunction.cppcheck')),
'--cppcheck-build-dir={}'.format(build_dir),
'-j1'])
'--cppcheck-build-dir={}'.format(build_dir)])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
"{}3.c:3:0: style: The function 'f3_3' is never used. [unusedFunction]".format(__project_dir_sep)
Expand All @@ -152,7 +166,8 @@ def test_unused_functions_builddir_project(tmpdir):


# TODO: only f3_3 is unused
def test_unused_functions_builddir_project_j(tmpdir):
@pytest.mark.skipif(sys.platform == 'win32', reason='ProcessExecutor not available on Windows')
def test_unused_functions_builddir_project_j_process(tmpdir):
build_dir = os.path.join(tmpdir, 'b1')
os.mkdir(build_dir)
ret, stdout, stderr = cppcheck(['-q',
Expand All @@ -161,7 +176,8 @@ def test_unused_functions_builddir_project_j(tmpdir):
'--inline-suppr',
'--project={}'.format(os.path.join(__project_dir, 'unusedFunction.cppcheck')),
'--cppcheck-build-dir={}'.format(build_dir),
'-j2'])
'-j2',
'--executor=process'])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
"{}1.c:4:0: style: The function 'f1' is never used. [unusedFunction]".format(__project_dir_sep),
Expand All @@ -182,7 +198,6 @@ def test_unused_functions_builddir_compdb(tmpdir):
'--inline-suppr',
'--project={}'.format(compdb_file),
'--cppcheck-build-dir={}'.format(build_dir),
'-j1'
])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
Expand All @@ -192,7 +207,8 @@ def test_unused_functions_builddir_compdb(tmpdir):


# TODO: only f3_3 is unused
def test_unused_functions_builddir_compdb_j(tmpdir):
@pytest.mark.skipif(sys.platform == 'win32', reason='ProcessExecutor not available on Windows')
def test_unused_functions_builddir_compdb_j_process(tmpdir):
compdb_file = __create_compdb(tmpdir, __project_dir)
build_dir = os.path.join(tmpdir, 'b1')
os.mkdir(build_dir)
Expand All @@ -202,7 +218,8 @@ def test_unused_functions_builddir_compdb_j(tmpdir):
'--inline-suppr',
'--project={}'.format(compdb_file),
'--cppcheck-build-dir={}'.format(build_dir),
'-j2'
'-j2',
'--executor=process'
])
assert stdout.splitlines() == []
assert stderr.splitlines() == [
Expand Down

0 comments on commit 678106e

Please sign in to comment.