Spaces:
Configuration error
Configuration error
| # -*- coding: utf-8 -*- | |
| from __future__ import with_statement | |
| import logging | |
| import sys | |
| import os.path | |
| import colorama | |
| from colorama import Fore, Back, Style | |
| from docopt import docopt | |
| from jxml.etree import XSLTCoverage | |
| from jxml.etree import xsltcoverage | |
| def colorama_init(f): | |
| def wrapper(*args, **kwargs): | |
| colorama.init() | |
| try: | |
| return f(*args, **kwargs) | |
| finally: | |
| colorama.deinit() | |
| return wrapper | |
| def annotate_main(): | |
| __doc__ = ''' | |
| Usage: jxml-annotate [options] <xml-file>... | |
| <xml-file> Cobertura-compatible coverage data file | |
| --color=[auto|yes|no] Output with colors | |
| Example: | |
| jxml-annotate --color=yes coverage.xml | less -R | |
| ''' | |
| args = docopt(__doc__) | |
| logging.basicConfig() | |
| logger = logging.getLogger('jxml.annotate') | |
| use_color = args['--color'] == 'yes' | |
| if args['--color'] in ('auto', None): | |
| use_color = sys.stdout.isatty() | |
| coverage = XSLTCoverage() | |
| for arg in args['<xml-file>']: | |
| coverage.read_from(arg) | |
| traces = coverage.traces | |
| for filename in sorted(traces): | |
| covered_lines = traces[filename] | |
| if not os.path.exists(filename): | |
| logger.info('skipping %s: not exists', filename) | |
| continue | |
| print filename | |
| with open(filename) as f: | |
| for line_no, line in enumerate(f): | |
| line_no += 1 | |
| count = covered_lines.get(line_no, 0) | |
| annotated = '%8d: %s' % (count, line) | |
| if use_color: | |
| if count == 0: | |
| color = Fore.RED | |
| else: | |
| color = Fore.RESET | |
| annotated = color + annotated + Fore.RESET | |
| sys.stdout.write(annotated) | |
| print '' | |
| def load_tests(filenames): | |
| import unittest | |
| ts = unittest.TestSuite() | |
| testloader = unittest.defaultTestLoader | |
| for filename in filenames: | |
| d = dict() | |
| execfile(filename, d) | |
| for name in d: | |
| x = d[name] | |
| if isinstance(x, type) and issubclass(x, unittest.TestCase): | |
| ts.addTests(testloader.loadTestsFromTestCase(x)) | |
| return ts | |
| def cov_test_main(): | |
| __doc__ = ''' | |
| Usage: jxml-cov-test [options] <output-file> <unittest-file>... | |
| <output-file> Cobertura-compatible coverage data file. | |
| <unittest-file> unittest files. | |
| Example: | |
| jxml-cov-test coverage.xml test1.py test2.py | |
| ''' | |
| args = docopt(__doc__) | |
| logging.basicConfig() | |
| logger = logging.getLogger('jxml.cov-test') | |
| from java.lang import System | |
| import unittest | |
| props = System.getProperties() | |
| props['javax.xml.transform.TransformerFactory'] = 'org.apache.xalan.processor.TransformerFactoryImpl' | |
| props['javax.xml.parsers.DocumentBuilderFactory'] = 'org.apache.xerces.jaxp.DocumentBuilderFactoryImpl' | |
| props['javax.xml.parsers.SAXParserFactory'] = 'org.apache.xerces.jaxp.SAXParserFactoryImpl' | |
| output_name = args['<output-file>'] | |
| test_filenames = args['<unittest-file>'] | |
| ts = load_tests(test_filenames) | |
| runner = unittest.TextTestRunner() | |
| with xsltcoverage(output_name) as coverage: | |
| runner.run(ts) | |