cert.py: Refactor arguments handling (#2044)
* cert.py: Add '--quiet' option and test Main sentinel also was required. * travis.yml: Install pytest with --user To avoid possible conflicts with system packages later. * Quickfix
This commit is contained in:
parent
cdb0e8322c
commit
fe2885e430
|
@ -19,7 +19,7 @@ before_install:
|
|||
# install needed deps
|
||||
- travis_retry sudo apt-get update -qq
|
||||
- travis_retry sudo apt-get install -qq python-pygments qt5-default qt5-qmake qtbase5-dev qtcreator libxml2-utils libpcre3 gdb unzip wx-common xmlstarlet
|
||||
- travis_retry sudo python2 -m pip install --upgrade pytest==4.6.4
|
||||
- travis_retry python2 -m pip install --user pytest==4.6.4
|
||||
- travis_retry python2 -m pip install --user pylint
|
||||
- travis_retry python2 -m pip install --user unittest2
|
||||
- travis_retry python2 -m pip install --user pexpect
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
# cppcheck --dump main.cpp
|
||||
# python cert.py main.cpp.dump
|
||||
|
||||
import argparse
|
||||
import cppcheckdata
|
||||
import sys
|
||||
import re
|
||||
|
@ -354,14 +355,27 @@ def api01(data):
|
|||
arrayFound=False
|
||||
token = token.next
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
if arg == '-verify':
|
||||
|
||||
def get_args():
|
||||
parser = cppcheckdata.ArgumentParser()
|
||||
parser.add_argument("dumpfile", nargs='*', help="Path of dump files from cppcheck")
|
||||
parser.add_argument('-q', '--quiet', action='store_true',
|
||||
help='do not print "Checking ..." lines')
|
||||
parser.add_argument('--cli', help='Addon is executed from Cppcheck', action='store_true')
|
||||
parser.add_argument("-verify", help=argparse.SUPPRESS, action="store_true")
|
||||
return parser.parse_args()
|
||||
|
||||
if __name__ == '__main__':
|
||||
args = get_args()
|
||||
|
||||
if args.verify:
|
||||
VERIFY = True
|
||||
continue
|
||||
if arg == '--cli':
|
||||
continue
|
||||
print('Checking ' + arg + '...')
|
||||
data = cppcheckdata.parsedump(arg)
|
||||
|
||||
for dumpfile in args.dumpfile:
|
||||
if not args.quiet:
|
||||
print('Checking %s...' % dumpfile)
|
||||
|
||||
data = cppcheckdata.parsedump(dumpfile)
|
||||
|
||||
if VERIFY:
|
||||
VERIFY_ACTUAL = []
|
||||
|
@ -373,8 +387,8 @@ for arg in sys.argv[1:]:
|
|||
VERIFY_EXPECTED.append(str(tok.linenr) + ':' + word)
|
||||
|
||||
for cfg in data.configurations:
|
||||
if len(data.configurations) > 1:
|
||||
print('Checking ' + arg + ', config "' + cfg.name + '"...')
|
||||
if (len(data.configurations) > 1) and (not args.quiet):
|
||||
print('Checking %s, config %s...' % (dumpfile, cfg.name))
|
||||
exp05(cfg)
|
||||
exp42(cfg)
|
||||
exp46(cfg)
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# python -m pytest addons/test/test-cert.py
|
||||
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
|
||||
def test_arguments_regression():
|
||||
args_ok = ["-q", "--quiet",
|
||||
"-verify",
|
||||
"--cli"]
|
||||
# Arguments with expected SystemExit
|
||||
args_exit = ["--non-exists", "--non-exists-param=42", "-h", "--help"]
|
||||
|
||||
from addons.cert import get_args
|
||||
|
||||
for arg in args_exit:
|
||||
sys.argv.append(arg)
|
||||
with pytest.raises(SystemExit):
|
||||
get_args()
|
||||
sys.argv.remove(arg)
|
||||
|
||||
for arg in args_ok:
|
||||
sys.argv.append(arg)
|
||||
try:
|
||||
get_args()
|
||||
except SystemExit:
|
||||
pytest.fail("Unexpected SystemExit with '%s'" % arg)
|
||||
sys.argv.remove(arg)
|
Loading…
Reference in New Issue