@@ -2602,4 +2602,74 @@ def test_inline_suppr_builddir_j_cached(tmp_path):
26022602 build_dir = tmp_path / 'b1'
26032603 os .mkdir (build_dir )
26042604 __test_inline_suppr (tmp_path , ['--cppcheck-build-dir={}' .format (build_dir ), '-j2' ])
2605- __test_inline_suppr (tmp_path , ['--cppcheck-build-dir={}' .format (build_dir ), '-j2' ])
2605+ __test_inline_suppr (tmp_path , ['--cppcheck-build-dir={}' .format (build_dir ), '-j2' ])
2606+
2607+
2608+ def test_duplicate_suppression (tmp_path ):
2609+ test_file = tmp_path / 'file.cpp'
2610+ with open (test_file , 'wt' ):
2611+ pass
2612+
2613+ args = [
2614+ '-q' ,
2615+ '--suppress=uninitvar' ,
2616+ '--suppress=uninitvar' ,
2617+ str (test_file )
2618+ ]
2619+
2620+ exitcode , stdout , stderr = cppcheck (args )
2621+ assert exitcode == 1 , stdout
2622+ assert stdout .splitlines () == [
2623+ "cppcheck: error: suppression 'uninitvar' already exists"
2624+ ]
2625+ assert stderr == ''
2626+
2627+
2628+ def test_duplicate_suppressions_list (tmp_path ):
2629+ suppr_file = tmp_path / 'suppressions'
2630+ with open (suppr_file , 'wt' ) as f :
2631+ f .write ('''
2632+ uninitvar
2633+ uninitvar
2634+ ''' )
2635+
2636+ test_file = tmp_path / 'file.cpp'
2637+ with open (test_file , 'wt' ):
2638+ pass
2639+
2640+ args = [
2641+ '-q' ,
2642+ '--suppressions-list={}' .format (suppr_file ),
2643+ str (test_file )
2644+ ]
2645+
2646+ exitcode , stdout , stderr = cppcheck (args )
2647+ assert exitcode == 1 , stdout
2648+ assert stdout .splitlines () == [
2649+ "cppcheck: error: suppression 'uninitvar' already exists"
2650+ ]
2651+ assert stderr == ''
2652+
2653+
2654+ def test_duplicate_suppressions_mixed (tmp_path ):
2655+ suppr_file = tmp_path / 'suppressions'
2656+ with open (suppr_file , 'wt' ) as f :
2657+ f .write ('uninitvar' )
2658+
2659+ test_file = tmp_path / 'file.cpp'
2660+ with open (test_file , 'wt' ):
2661+ pass
2662+
2663+ args = [
2664+ '-q' ,
2665+ '--suppress=uninitvar' ,
2666+ '--suppressions-list={}' .format (suppr_file ),
2667+ str (test_file )
2668+ ]
2669+
2670+ exitcode , stdout , stderr = cppcheck (args )
2671+ assert exitcode == 1 , stdout
2672+ assert stdout .splitlines () == [
2673+ "cppcheck: error: suppression 'uninitvar' already exists"
2674+ ]
2675+ assert stderr == ''
0 commit comments