You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[travis] Record code coverage and display on README (#703)
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)
0 commit comments