[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