stack/erp5: support coverage when running tests
This replaces the broken --coverage argument from runUnitTest, coverage needs to be started earlier and also introduces a coverage plugin to collect coverage data for code in ZODB; python scripts and components are supported. To use on test nodes, set up a web dav server somewhere, configure the instance parameters of the test suite on ERP5 to enable coverage and upload individual results to this webdav server and then combine the coverage data and produce a report, using the bin/coverage script from the software release. For the steps below, it is necessary to change working directory to the root of the software folder. Step 1: combine the coverage data: ./bin/coverage combine \ --keep \ /path/to/all/coverage/files/*coverage.sqlite3 ( using --keep is optional, but it helps in case of mistakes ) Step 2: build an html report: ./bin/coverage html \ --skip-covered \ --omit parts/erp5/product/ERP5/Document/UnitTest.py \ --directory /path/for/html/report/ Note that we want to omit UnitTest.py that is created during test (see testBusinessTemplate.TestDocumentTemplateItem) and get coverage result because it is executed in the test, but it does not exist as a source file in the repository, so we skip it. Of course, to produce a correct html report from a test that have been running on test nodes, it's necessary that the software release used to produce the html report has exactly the same version ans the one that has been running on test nodes. Another simpler, but slower approach is to run all the tests on the same machine, then only running step 2 is necessary.
Showing