commit
fa0414250d
|
@ -0,0 +1,2 @@
|
||||||
|
.tox/
|
||||||
|
MANIFEST
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/env python
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""Test cppcheck-htmlreport."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import contextlib
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
if sys.version_info < (2, 7):
|
||||||
|
# For TestCase.assertIn().
|
||||||
|
import unittest2 as unittest
|
||||||
|
else:
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
ROOT_DIR = os.path.split(os.path.abspath(os.path.dirname(__file__)))[0]
|
||||||
|
CPPCHECK_BIN = os.path.join(ROOT_DIR, 'cppcheck')
|
||||||
|
|
||||||
|
HTML_REPORT_BIN = os.path.join(os.path.abspath(os.path.dirname(__file__)),
|
||||||
|
'cppcheck-htmlreport')
|
||||||
|
|
||||||
|
|
||||||
|
class TestHTMLReport(unittest.TestCase):
|
||||||
|
|
||||||
|
def testReportError(self):
|
||||||
|
with runCheck(os.path.join(
|
||||||
|
ROOT_DIR,
|
||||||
|
'samples', 'memleak', 'bad.c')) as (report, output_directory):
|
||||||
|
self.assertIn('<html', report)
|
||||||
|
|
||||||
|
self.assertIn('Memory leak:', report)
|
||||||
|
self.assertIn('bad.c', report)
|
||||||
|
|
||||||
|
detail_filename = os.path.join(output_directory, '0.html')
|
||||||
|
self.assertTrue(
|
||||||
|
os.path.exists(detail_filename))
|
||||||
|
|
||||||
|
with open(detail_filename) as input_file:
|
||||||
|
detail_contents = input_file.read()
|
||||||
|
self.assertIn('<html', detail_contents)
|
||||||
|
self.assertIn('Memory leak:', detail_contents)
|
||||||
|
|
||||||
|
def testReportNoError(self):
|
||||||
|
with runCheck(os.path.join(
|
||||||
|
ROOT_DIR,
|
||||||
|
'samples', 'memleak', 'good.c')) as (report, output_directory):
|
||||||
|
self.assertIn('<html', report)
|
||||||
|
|
||||||
|
self.assertNotIn('Memory leak:', report)
|
||||||
|
self.assertNotIn('good.c', report)
|
||||||
|
|
||||||
|
self.assertFalse(
|
||||||
|
os.path.exists(os.path.join(output_directory, '0.html')))
|
||||||
|
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def runCheck(source_file):
|
||||||
|
"""Run cppcheck and cppcheck-htmlreport.
|
||||||
|
|
||||||
|
Yield a tuple containing the resulting HTML report index and the directory
|
||||||
|
path.
|
||||||
|
|
||||||
|
"""
|
||||||
|
output_directory = tempfile.mkdtemp(dir='.')
|
||||||
|
xml_filename = os.path.join(output_directory, 'output.xml')
|
||||||
|
|
||||||
|
with open(xml_filename, 'w') as output_file:
|
||||||
|
subprocess.check_call(
|
||||||
|
[CPPCHECK_BIN, '--xml', source_file],
|
||||||
|
stderr=output_file)
|
||||||
|
|
||||||
|
assert os.path.exists(xml_filename)
|
||||||
|
|
||||||
|
subprocess.check_call(
|
||||||
|
[HTML_REPORT_BIN,
|
||||||
|
'--file=' + xml_filename,
|
||||||
|
'--report-dir=' + output_directory])
|
||||||
|
|
||||||
|
with open(os.path.join(output_directory, 'index.html')) as index_file:
|
||||||
|
index_contents = index_file.read()
|
||||||
|
|
||||||
|
yield (index_contents, output_directory)
|
||||||
|
|
||||||
|
shutil.rmtree(output_directory)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
|
@ -0,0 +1,12 @@
|
||||||
|
[tox]
|
||||||
|
envlist=py26,py27,py32,pypy
|
||||||
|
|
||||||
|
[testenv]
|
||||||
|
commands=
|
||||||
|
python test_htmlreport.py
|
||||||
|
deps=pygments
|
||||||
|
|
||||||
|
[testenv:py26]
|
||||||
|
deps=
|
||||||
|
unittest2
|
||||||
|
pygments
|
Loading…
Reference in New Issue