HPI/tox.ini

102 lines
3.8 KiB
INI

[tox]
minversion = 3.5
[testenv]
passenv = CI CI_*
# TODO ugh. unclear how to reuse setup.cfg deps in tox
[testenv:tests]
# deliberately set to nonexistent path to check the fallback logic
setenv = MY_CONFIG = nonexistent
commands =
# TODO core & modules should be tested separately?
pip install -e .[testing]
# python -m pytest {posargs}
# TODO install via helper script..
# my.location.google deps
pip install geopy ijson
# my.time.tz.via_location dep
pip install timezonefinder
# my.calendar.holidays dep
pip install workalendar
# my.body.weight dep
pip install orgparse
python3 -m pytest tests \
# ignore some tests which might take a while to run on ci..
--ignore tests/takeout.py \
--ignore tests/extra/polar.py \
--ignore tests/pdfs/test_pdfs.py \
{posargs}
[testenv:demo]
commands =
pip install git+https://github.com/karlicoss/hypexport
./demo.py
[testenv:mypy-core]
whitelist_externals = cat
commands =
pip install -e .[testing,optional]
pip install orgparse # used it core.orgparse?
# todo add tests?
python3 -m mypy -p my.core \
--txt-report .coverage.mypy-core \
--html-report .coverage.mypy-core \
{posargs}
cat .coverage.mypy-core/index.txt
# specific modules that are known to be mypy compliant (to avoid false negatives)
# todo maybe split into separate jobs? need to add comment how to run
# and install dependencies via AST thing?
[testenv:mypy-misc]
commands =
pip install -e .[testing,optional]
pip install orgparse
pip install git+https://github.com/karlicoss/endoexport
pip install git+https://github.com/karlicoss/ghexport
pip install git+https://github.com/karlicoss/hypexport
pip install git+https://github.com/karlicoss/instapexport
pip install git+https://github.com/karlicoss/pockexport
pip install git+https://github.com/karlicoss/rexport
pip install git+https://github.com/karlicoss/stexport
# TODO fuck. -p my.github isn't checking the subpackages?? wtf...
python3 -m mypy \
-p my.endomondo \
-p my.github.ghexport \
-p my.hypothesis \
-p my.instapaper \
-p my.pocket \
-p my.reddit \
-p my.stackexchange.stexport \
-p my.body.exercise.cardio \
-p my.body.exercise.cross_trainer \
-p my.bluemaestro \
-p my.location.google \
-p my.time.tz.via_location \
-p my.calendar.holidays \
--txt-report .coverage.mypy-misc \
--html-report .coverage.mypy-misc \
{posargs}
# txt report is a bit more convenient to view on CI
# note: this comment doesn't seem relevant anymore, but keeping it in case the issue happens again
# > ugh ... need to reset HOME, otherwise user's site-packages are somehow leaking into mypy's path...
# > see https://github.com/python/mypy/blob/f6fb60ef69738cbfe2dfe56c747eca8f03735d8e/mypy/modulefinder.py#L487
# > this is particularly annoying when user's config is leaking and mypy isn't running against the repository config
# useful flags:
# * sitepackages = true to inherit user/globally installed packages (default false)
# * skip_install = true -- not sure when useful? (default false)
# * -e to run specific subenvironment
# * pass arguments with -- , e.g. `tox -e tests -- -k some_test_name` to only run one test with pytest