@@ -1762,3 +1762,283 @@ def test_checkers_report(tmpdir):
17621762 assert exitcode == 0 , stdout
17631763 assert 'Active checkers:' in stderr
17641764 assert '--checkers-report' not in stderr
1765+
1766+
1767+ def test_ignore (tmpdir ):
1768+ os .mkdir (os .path .join (tmpdir , 'src' ))
1769+ test_file = os .path .join (tmpdir , 'src' , 'test.cpp' )
1770+ with open (test_file , 'wt' ):
1771+ pass
1772+
1773+ lines_exp = [
1774+ 'cppcheck: error: could not find or open any of the paths given.' ,
1775+ 'cppcheck: Maybe all paths were ignored?'
1776+ ]
1777+
1778+ args = [
1779+ '-itest.cpp' ,
1780+ test_file
1781+ ]
1782+
1783+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1784+ assert exitcode == 1 , stdout
1785+ assert stdout .splitlines () == lines_exp
1786+
1787+ # make sure it also matches when specified after the file
1788+ args = [
1789+ test_file ,
1790+ '-itest.cpp'
1791+ ]
1792+
1793+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1794+ assert exitcode == 1 , stdout
1795+ assert stdout .splitlines () == lines_exp
1796+
1797+ args = [
1798+ '-isrc/test.cpp' ,
1799+ test_file
1800+ ]
1801+
1802+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1803+ assert exitcode == 1 , stdout
1804+ assert stdout .splitlines () == lines_exp
1805+
1806+ args = [
1807+ '-isrc\\ test.cpp' ,
1808+ test_file
1809+ ]
1810+
1811+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1812+ assert exitcode == 1 , stdout
1813+ assert stdout .splitlines () == lines_exp
1814+
1815+ args = [
1816+ '-isrc/' ,
1817+ test_file
1818+ ]
1819+
1820+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1821+ assert exitcode == 1 , stdout
1822+ assert stdout .splitlines () == lines_exp
1823+
1824+ args = [
1825+ '-isrc\\ ' ,
1826+ test_file
1827+ ]
1828+
1829+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1830+ assert exitcode == 1 , stdout
1831+ assert stdout .splitlines () == lines_exp
1832+
1833+ args = [
1834+ '-i{}' .format (test_file ),
1835+ test_file
1836+ ]
1837+
1838+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1839+ assert exitcode == 1 , stdout
1840+ assert stdout .splitlines () == lines_exp
1841+
1842+
1843+ def __write_gui_project (tmpdir , test_file , ignore ):
1844+ project_file = os .path .join (tmpdir , 'test.cppcheck' )
1845+ with open (project_file , 'wt' ) as f :
1846+ f .write (
1847+ """<?xml version="1.0" encoding="UTF-8"?>
1848+ <project>
1849+ <paths>
1850+ <dir name="{}"/>
1851+ </paths>
1852+ <ignore>
1853+ <path name="{}"/>
1854+ </ignore>
1855+ </project>""" .format (test_file , ignore ))
1856+
1857+ return project_file
1858+
1859+
1860+ def test_ignore_project (tmpdir ):
1861+ os .mkdir (os .path .join (tmpdir , 'src' ))
1862+ test_file = os .path .join (tmpdir , 'src' , 'test.cpp' )
1863+ with open (test_file , 'wt' ):
1864+ pass
1865+
1866+ lines_exp = [
1867+ 'cppcheck: error: could not find or open any of the paths given.' ,
1868+ 'cppcheck: Maybe all paths were ignored?'
1869+ ]
1870+
1871+ project_file = __write_gui_project (tmpdir , test_file , 'test.cpp' )
1872+ args = [
1873+ '--project={}' .format (project_file )
1874+ ]
1875+
1876+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1877+ assert exitcode == 1 , stdout
1878+ assert stdout .splitlines () == lines_exp
1879+
1880+ # make sure -i works when specified before project
1881+ project_file = __write_gui_project (tmpdir , test_file , 'test2.cpp' )
1882+ args = [
1883+ '-itest.cpp' ,
1884+ '--project={}' .format (project_file )
1885+ ]
1886+
1887+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1888+ assert exitcode == 1 , stdout
1889+ assert stdout .splitlines () == lines_exp
1890+
1891+ # make sure -i works when specified after project
1892+ project_file = __write_gui_project (tmpdir , test_file , 'test2.cpp' )
1893+ args = [
1894+ '--project={}' .format (project_file ),
1895+ '-itest.cpp'
1896+ ]
1897+
1898+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1899+ assert exitcode == 1 , stdout
1900+ assert stdout .splitlines () == lines_exp
1901+
1902+ project_file = __write_gui_project (tmpdir , test_file , 'src/test.cpp' )
1903+ args = [
1904+ '--project={}' .format (project_file )
1905+ ]
1906+
1907+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1908+ assert exitcode == 1 , stdout
1909+ assert stdout .splitlines () == lines_exp
1910+
1911+ project_file = __write_gui_project (tmpdir , test_file , 'src\\ test.cpp' )
1912+ args = [
1913+ '--project={}' .format (project_file )
1914+ ]
1915+
1916+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1917+ assert exitcode == 1 , stdout
1918+ assert stdout .splitlines () == lines_exp
1919+
1920+ project_file = __write_gui_project (tmpdir , test_file , 'src/' )
1921+ args = [
1922+ '--project={}' .format (project_file )
1923+ ]
1924+
1925+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1926+ assert exitcode == 1 , stdout
1927+ assert stdout .splitlines () == lines_exp
1928+
1929+ project_file = __write_gui_project (tmpdir , test_file , 'src\\ ' )
1930+ args = [
1931+ '--project={}' .format (project_file )
1932+ ]
1933+
1934+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1935+ assert exitcode == 1 , stdout
1936+ assert stdout .splitlines () == lines_exp
1937+
1938+ project_file = __write_gui_project (tmpdir , test_file , test_file )
1939+ args = [
1940+ '--project={}' .format (project_file )
1941+ ]
1942+
1943+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1944+ assert exitcode == 1 , stdout
1945+ assert stdout .splitlines () == lines_exp
1946+
1947+
1948+ def __write_compdb (tmpdir , test_file ):
1949+ compile_commands = os .path .join (tmpdir , 'compile_commands.json' )
1950+ j = [
1951+ {
1952+ 'directory' : os .path .dirname (test_file ),
1953+ 'file' : test_file ,
1954+ 'command' : 'gcc -c {}' .format (test_file )
1955+ }
1956+ ]
1957+ with open (compile_commands , 'wt' ) as f :
1958+ f .write (json .dumps (j ))
1959+ return compile_commands
1960+
1961+
1962+ # TODO: -i appears to be ignored
1963+ @pytest .mark .xfail (strict = True )
1964+ def test_ignore_project_2 (tmpdir ):
1965+ os .mkdir (os .path .join (tmpdir , 'src' ))
1966+ test_file = os .path .join (tmpdir , 'src' , 'test.cpp' )
1967+ with open (test_file , 'wt' ):
1968+ pass
1969+
1970+ lines_exp = [
1971+ 'cppcheck: error: could not find or open any of the paths given.' ,
1972+ 'cppcheck: Maybe all paths were ignored?'
1973+ ]
1974+
1975+ project_file = __write_compdb (tmpdir , test_file )
1976+ args = [
1977+ '-itest.cpp' ,
1978+ '--project={}' .format (project_file )
1979+ ]
1980+
1981+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1982+ assert exitcode == 1 , stdout
1983+ assert stdout .splitlines () == lines_exp
1984+
1985+ # make sure it also matches when specified after project
1986+ project_file = __write_compdb (tmpdir , test_file )
1987+ args = [
1988+ '--project={}' .format (project_file ),
1989+ '-itest.cpp'
1990+ ]
1991+
1992+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
1993+ assert exitcode == 1 , stdout
1994+ assert stdout .splitlines () == lines_exp
1995+
1996+ project_file = __write_compdb (tmpdir , test_file )
1997+ args = [
1998+ '-isrc/test.cpp' ,
1999+ '--project={}' .format (project_file )
2000+ ]
2001+
2002+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
2003+ assert exitcode == 1 , stdout
2004+ assert stdout .splitlines () == lines_exp
2005+
2006+ project_file = __write_compdb (tmpdir , test_file )
2007+ args = [
2008+ '-isrc\\ test.cpp' ,
2009+ '--project={}' .format (project_file )
2010+ ]
2011+
2012+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
2013+ assert exitcode == 1 , stdout
2014+ assert stdout .splitlines () == lines_exp
2015+
2016+ project_file = __write_compdb (tmpdir , test_file )
2017+ args = [
2018+ '-isrc/' ,
2019+ '--project={}' .format (project_file )
2020+ ]
2021+
2022+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
2023+ assert exitcode == 1 , stdout
2024+ assert stdout .splitlines () == lines_exp
2025+
2026+ project_file = __write_compdb (tmpdir , test_file )
2027+ args = [
2028+ '-isrc\\ ' ,
2029+ '--project={}' .format (project_file )
2030+ ]
2031+
2032+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
2033+ assert exitcode == 1 , stdout
2034+ assert stdout .splitlines () == lines_exp
2035+
2036+ project_file = __write_compdb (tmpdir , test_file )
2037+ args = [
2038+ '-i{}' .format (test_file ),
2039+ '--project={}' .format (project_file )
2040+ ]
2041+
2042+ exitcode , stdout , _ = cppcheck (args , cwd = tmpdir )
2043+ assert exitcode == 1 , stdout
2044+ assert stdout .splitlines () == lines_exp
0 commit comments