README.md
[![PyPI package](https://img.shields.io/pypi/v/unitth.svg)](https://pypi.python.org/pypi/unitth)
[![Documentation](https://readthedocs.org/projects/unitth/badge/?version=latest)](http://docs.karrlab.org/unitth)
[![Test results](https://circleci.com/gh/KarrLab/unitth.svg?style=shield)](https://circleci.com/gh/KarrLab/unitth)
[![Test coverage](https://coveralls.io/repos/github/KarrLab/unitth/badge.svg)](https://coveralls.io/github/KarrLab/unitth)
[![Code analysis](https://api.codeclimate.com/v1/badges/e6819121e1e8ca0485a0/maintainability)](https://codeclimate.com/github/KarrLab/unitth)
[![License](https://img.shields.io/github/license/KarrLab/unitth.svg)](LICENSE)
![Analytics](https://ga-beacon.appspot.com/UA-86759801-1/unitth/README.md?pixel)
# unitth
This package provides a Python method and command line interface for generating HTML reports of unit test histories. The package is a Python interface for the [UnitTH](http://junitth.sourceforge.net).
## Installation
* Latest release from PyPI
```
pip install unitth
```
* Latest revision from GitHub
```
pip install git+https://github.com/KarrLab/unitth.git#egg=unitth
```
## Usage
### Command line
```
usage: unitth (sub-commands ...) [options ...] {arguments ...}
Generate HTML unit test history report
positional arguments:
xml_report_dir Parent directory of XML reports of individual builds
to generate a history report of
optional arguments:
-h, --help show this help message and exit
--debug toggle debug output
--quiet suppress all output
--xml-report-filter [XML_REPORT_FILTER]
Starts-with filter for individual reports with `xml-
report-dir` that should be included in the history
report. Set `xml-report-filter` to to include all
files/subdirectories in the history report.
--html-report-path HTML_REPORT_PATH
Directory of HTML reports of individual
builds(relative to XML directories of individual
builds)
--generate-exec-time-graphs GENERATE_EXEC_TIME_GRAPHS
Whether execution time graphs shall be generated
--html-report-dir HTML_REPORT_DIR
directory to store generated HTML history report
--initial_java_heap_size INITIAL_JAVA_HEAP_SIZE
Initial Java heap size
--maximum_java_heap_size MAXIMUM_JAVA_HEAP_SIZE
Maximum Java heap size
```
## Example usage
### Python
```
from nose2unitth.core import Converter as nose2unitth
from junit2htmlreport.parser import Junit as JunitParser
from unitth.core import UnitTH
import os
import subprocess
os.mkdir('reports')
os.mkdir('reports/nose')
os.mkdir('reports/unitth')
os.mkdir('reports/html')
subprocess.check_call(['nosetests', 'tests/test_unitth.py:TestDummy.test_dummy_test',
'--with-xunit', '--xunit-file', 'reports/nose/1.xml'])
subprocess.check_call(['nosetests', 'tests/test_unitth.py:TestDummy.test_dummy_test',
'--with-xunit', '--xunit-file', 'reports/nose/2.xml'])
nose2unitth.run('reports/nose/1.xml', 'reports/unitth/1')
nose2unitth.run('reports/nose/2.xml', 'reports/unitth/2')
with open('reports/unitth/1/index.html', 'wb') as html_file:
print >> html_file, JunitParser('reports/nose/1.xml').html()
with open('reports/unitth/2/index.html', 'wb') as html_file:
print >> html_file, JunitParser('reports/nose/2.xml').html()
UnitTH.run('reports/unitth/*', xml_report_filter='', html_report_dir='reports/html')
```
### Command line
```
mkdir reports
mkdir reports/nose
mkdir reports/unitth
mkdir reports/html
nosetests tests/test_unitth.py:TestDummy.test_dummy_test --with-xunit --xunit-file reports/nose/1.xml
nosetests tests/test_unitth.py:TestDummy.test_dummy_test --with-xunit --xunit-file reports/nose/2.xml
nose2unitth reports/nose/1.xml reports/unitth/1
nose2unitth reports/nose/2.xml reports/unitth/2
junit2html reports/nose/1.xml reports/unitth/1/index.html
junit2html reports/nose/2.xml reports/unitth/2/index.html
unitth --xml_report_filter --html_report_dir reports/html "reports/unitth/*"
```
## Documentation
Please see the [API documentation](http://docs.karrlab.org/unitth).
## License
The build utilities are released under the [MIT license](LICENSE).
## Development team
This package was developed by [Jonathan Karr](http://www.karrlab.org) at the Icahn School of Medicine at Mount Sinai in New York, USA.
## Questions and comments
Please contact the [Jonathan Karr](http://www.karrlab.org) with any questions or comments.