-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathtox.ini
138 lines (125 loc) · 3.36 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
# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
min_version = 4.0
envlist =
py{38,39,310,311,312,313,314}, pypy3, docs, flake8,
mypy-py{38,39,310,311,312,313,py3}, pytest, coverage,
xmlschema{251,302,310,321,332,342,343}, w3c-xsdtests
skip_missing_interpreters = true
work_dir = {tox_root}/../.tox/elementpath
[testenv]
deps =
lxml
lxml-stubs
xmlschema>=3.0.2
docs: Sphinx
coverage: coverage
set_env =
py313: TEST_UNICODE_INSTALLATION = 6.2.0
commands = python -m unittest
[testenv:py314]
deps =
elementpath>=4.4.0, <5.0.0
jinja2
[testenv:docs]
commands =
make -C doc html SPHINXOPTS="-W -n"
make -C doc latexpdf SPHINXOPTS="-W -n"
make -C doc doctest SPHINXOPTS="-W -n"
sphinx-build -W -n -T -b man doc build/sphinx/man
allowlist_externals = make
[flake8]
max-line-length = 100
[testenv:flake8]
deps =
flake8
commands =
flake8 elementpath
flake8 tests
[testenv:mypy-py{38,39,310,311,312,313,py3}]
deps =
mypy==1.13.0
xmlschema>=3.1.0
lxml-stubs
commands =
mypy --strict elementpath
python tests/test_typing.py
[testenv:coverage]
commands =
coverage run -p -m unittest
coverage combine
coverage report -m
[testenv:pytest]
deps =
pytest
pytest-randomly
lxml
lxml-stubs
xmlschema>=3.0.2
commands =
pytest tests -ra
[testenv:xmlschema{251,302,310,321,332,342,343}]
description = Run xmlschema tests and mypy on xmlschema source (>=3.1.0)
platform = (linux|darwin)
set_env =
xmlschema251: VERSION = 2.5.1
xmlschema302: VERSION = 3.0.2
xmlschema310: VERSION = 3.1.0
xmlschema321: VERSION = 3.2.1
xmlschema332: VERSION = 3.3.2
xmlschema342: VERSION = 3.4.2
xmlschema343: VERSION = 3.4.3
change_dir = {env_tmp_dir}
deps =
mypy==1.11.2
lxml
lxml-stubs
jinja2
xmlschema=={env:VERSION}
commands =
pip download xmlschema=={env:VERSION} --no-deps --no-binary xmlschema
tar xzf xmlschema-{env:VERSION}.tar.gz --strip-components=1
bash -c 'if [[ "{env:VERSION}" > "3.0.2" ]]; then mypy --strict xmlschema; fi'
sed -i -e "s/Can't pickle/Can't/g" tests/validators/test_schemas.py # Patch the failure
python tests/test_all.py
allowlist_externals =
bash
sed
tar
[testenv:w3c-xsdtests]
description = Run W3C XSD 1.0/1.1 tests using xmlschema==3.0.2
platform = (linux|darwin)
set_env =
VERSION = 3.0.2
COMMIT = 4293d6fb026af778aa7ad381c2a310354578cbe3
CHECKSUM = 3c7a44dbb59553d09ba96fee898255be78966960c22e9a7886c0b426a03255d7
change_dir = {env_tmp_dir}
deps =
lxml
xmlschema=={env:VERSION}
commands =
pip download xmlschema=={env:VERSION} --no-deps --no-binary xmlschema
tar xzf xmlschema-{env:VERSION}.tar.gz
curl -L -o w3c-xsdtests.tar.gz https://github.com/w3c/xsdtests/tarball/{env:COMMIT}
bash -c "sha256sum w3c-xsdtests.tar.gz | grep {env:CHECKSUM}"
mkdir xsdtests
tar xzf w3c-xsdtests.tar.gz -C xsdtests --strip-components=1
python xmlschema-{env:VERSION}/tests/test_w3c_suite.py --xml
allowlist_externals =
bash
curl
grep
tar
mkdir
sha256sum
ignore_outcome = True
[testenv:build]
deps =
setuptools
wheel
build
commands =
python -m build