Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[travis] Record code coverage and display on README
Test installed version of package To test against the installed version of the package (which is preferably since this can catch installation file inclusion bugs) we have to deal with quirks of coverage.py. By default the ecosystem is set up to do development coverage tests (e.g. in src, or by using `pip install -e .` or `python setup.py develop`). We want to test against the version installed, to do this we have to find the install path which we'll then pass to the `--cov` arg added by `pytest-cov`. To do this, we have to cd out of the current folder, and import the installed version and get it's install path (if we don't cd out, then we end up getting the existing directory in the cwd since by default cwd is on `sys.path`) Once we have the install path, we pass that to the `--cov` of pytest, however we also want to rewrite the paths for codecov to pick them up on the website, if they don't have to code coverage with local paths, they don't register is properly. In order to that, we have a .coveragerc file that has the contents: ``` [paths] source = torchvision /**/site-packages/torchvision ``` This tells codecov to treat all paths with those prefixes as the same, so anything like `/home/travis/miniconda/envs/test-environment/lib/python2.7/site-packages/torchvision/models/__init__.py` would be treated the same as `torchvision/models/__init__.py` after running the coverage combination command. The first path seems to be special, in that all subsequent paths are rewritten to that one. Once we collect coverage, we then run `coverage run` to rewrite the installation paths in the coverage file, `.coverage`, to those expected by codecov. Phew. And that's it. N.B: Whilst adding test/__init__.py does solve the issue, it also results in PWD being added to the path, and then we'll test the development version of the package, and not the installed version (see https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code)
- Loading branch information