forked from karlicoss/HPI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
152 lines (126 loc) Β· 5.63 KB
/
tox.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
[tox]
minversion = 3.5
# https://github.com/tox-dev/tox/issues/20#issuecomment-247788333
# hack to prevent .tox from crapping to the project directory
toxworkdir={env:TOXWORKDIR_BASE:}{toxinidir}/.tox
[testenv]
passenv = CI CI_*
# just the very core tests with minimal dependencies
[testenv:tests-core]
commands =
pip install -e .[testing]
{envpython} -m pytest \
tests/core.py \
tests/sqlite.py \
tests/get_files.py \
{posargs}
# todo maybe also have core tests and misc tests? since ideally want them without dependencies
[testenv:tests-all]
# deliberately set to nonexistent path to check the fallback logic
# TODO not sure if need it?
setenv = MY_CONFIG = nonexistent
commands =
pip install -e .[testing]
# installed to test my.core.serialize while using simplejson and not orjson
pip install simplejson
{envpython} -m pytest \
tests/serialize_simplejson.py \
{posargs}
pip install cachew
pip install orjson
hpi module install my.location.google
pip install ijson # optional dependency
hpi module install my.time.tz.via_location
hpi module install my.calendar.holidays
# my.body.weight dep
hpi module install my.orgmode
hpi module install my.coding.commits
hpi module install my.pdfs
hpi module install my.reddit.rexport
{envpython} -m pytest tests \
# ignore some tests which might take a while to run on ci..
--ignore tests/takeout.py \
--ignore tests/extra/polar.py \
# dont run simplejson compatibility test since orjson is now installed
--ignore tests/serialize_simplejson.py \
{posargs}
[testenv:demo]
commands =
pip install git+https://github.com/karlicoss/hypexport
{envpython} ./demo.py
[testenv:mypy-core]
allowlist_externals = cat
commands =
pip install -e .[testing,optional]
pip install orgparse # used it core.orgmode?
# todo add tests?
{envpython} -m mypy --install-types --non-interactive \
-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
[testenv:mypy-misc]
commands =
pip install -e .[testing,optional]
hpi module install my.browser.export
hpi module install my.orgmode
hpi module install my.endomondo
hpi module install my.github.ghexport
hpi module install my.hypothesis
hpi module install my.instapaper
hpi module install my.pocket
hpi module install my.reddit.rexport
hpi module install my.reddit.pushshift
hpi module install my.stackexchange.stexport
hpi module install my.pinboard
hpi module install my.arbtt
hpi module install my.coding.commits
hpi module install my.goodreads
hpi module install my.pdfs
hpi module install my.smscalls
hpi module install my.location.gpslogger
hpi module install my.location.via_ip
hpi module install my.google.takeout.parser
# todo fuck. -p my.github isn't checking the subpackages?? wtf...
# guess it wants .pyi file??
{envpython} -m mypy --install-types --non-interactive \
-p my.browser \
-p my.endomondo \
-p my.github.ghexport \
-p my.hypothesis \
-p my.instapaper \
-p my.pocket \
-p my.smscalls \
-p my.reddit \
-p my.stackexchange.stexport \
-p my.pinboard \
-p my.body.exercise.cardio \
-p my.body.exercise.cross_trainer \
-p my.bluemaestro \
-p my.location.google \
-p my.location.google_takeout \
-p my.location.via_ip \
-p my.location.gpslogger \
-p my.ip.common \
-p my.time.tz.via_location \
-p my.calendar.holidays \
-p my.arbtt \
-p my.coding.commits \
-p my.goodreads \
-p my.pdfs \
--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