Fix and re-enable htmlreport tests (#2310)

* htmlreport/check.sh: Remove check with obsolete file

gui/test/data/xmlfiles/xmlreport_v1.xml has been removed with commit
d95efc44c7

* .travis.yml: Enable htmlreport test again

* cppcheck-htmlreport: Fall back to guessing lexer from file content

If the lexer can not be guessed from the file extension (for example
for *.tpp) then guess the lexer that should be used from the content.
This fixes "ERROR: *" output when running "htmlreport/check.sh"
Also use specific exceptions instead of bare ones.
This commit is contained in:
Sebastian 2019-10-30 18:01:39 +01:00 committed by GitHub
parent 694d147097
commit 816aa7e211
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 13 deletions

View File

@ -69,12 +69,11 @@ matrix:
- make validateXML - make validateXML
# Validate rule files # Validate rule files
- make validateRules - make validateRules
# note: trusty on travis has python pygments disabled so disable these tests on travis # check htmlreport stuff
## check htmlreport stuff - ./htmlreport/test_htmlreport.py
# - ./htmlreport/test_htmlreport.py - cd htmlreport
# - cd htmlreport - ./check.sh
# - ./check.sh - cd ../
# - cd ../
# check if DESTDIR works TODO: actually execute this # check if DESTDIR works TODO: actually execute this
- mkdir install_test - mkdir install_test
- echo $CXXFLAGS - echo $CXXFLAGS

View File

@ -1,7 +1,6 @@
#!/bin/bash -ex #!/bin/bash -ex
./cppcheck-htmlreport --file ../gui/test/data/xmlfiles/xmlreport_v1.xml --title "xml1 test" --report-dir . --source-dir ../test/
./cppcheck-htmlreport --file ../gui/test/data/xmlfiles/xmlreport_v2.xml --title "xml2 test" --report-dir . --source-dir ../test/ ./cppcheck-htmlreport --file ../gui/test/data/xmlfiles/xmlreport_v2.xml --title "xml2 test" --report-dir . --source-dir ../test/
echo -e "\n" echo -e "\n"

View File

@ -10,8 +10,9 @@ import operator
from collections import Counter from collections import Counter
from pygments import highlight from pygments import highlight
from pygments.lexers import guess_lexer_for_filename from pygments.lexers import guess_lexer, guess_lexer_for_filename
from pygments.formatters import HtmlFormatter from pygments.formatters import HtmlFormatter
from pygments.util import ClassNotFound
from xml.sax import parse as xml_parse from xml.sax import parse as xml_parse
from xml.sax import SAXParseException as XmlParseException from xml.sax import SAXParseException as XmlParseException
from xml.sax.handler import ContentHandler as XmlContentHandler from xml.sax.handler import ContentHandler as XmlContentHandler
@ -523,11 +524,14 @@ if __name__ == '__main__':
output_file.write(HTML_HEAD_END) output_file.write(HTML_HEAD_END)
try: try:
lexer = guess_lexer_for_filename(source_filename, '') lexer = guess_lexer_for_filename(source_filename, '')
except: except ClassNotFound:
sys.stderr.write("ERROR: Couldn't determine lexer for the file' " + source_filename + " '. Won't be able to syntax highlight this file.") try:
output_file.write("\n <tr><td colspan='5'> Could not generated content because pygments failed to retrieve the determine code type.</td></tr>") lexer = guess_lexer(content)
output_file.write("\n <tr><td colspan='5'> Sorry about this.</td></tr>") except ClassNotFound:
continue sys.stderr.write("ERROR: Couldn't determine lexer for the file' " + source_filename + " '. Won't be able to syntax highlight this file.")
output_file.write("\n <tr><td colspan='5'> Could not generated content because pygments failed to retrieve the determine code type.</td></tr>")
output_file.write("\n <tr><td colspan='5'> Sorry about this.</td></tr>")
continue
if options.source_encoding: if options.source_encoding:
lexer.encoding = options.source_encoding lexer.encoding = options.source_encoding