Skip to content

Commit a4528c4

Browse files
authored
Merge pull request #154 from maxiberta/pytest
Port test runner to pytest, fix Werkzeug 3 compatibility issue
2 parents 6757ab5 + eff8eab commit a4528c4

File tree

10 files changed

+20
-8
lines changed

10 files changed

+20
-8
lines changed

CHANGELOG.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Version Next
22

3-
* ...
3+
* Port test runner to pytest.
4+
* Fix compatibility issue with Werkezeug 3 related to deprecated ``request.charset``.
45

56
Version 0.39
67

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ lint: env/.done
3131

3232
.PHONY: test
3333
test: env/.done
34-
env/bin/python setup.py test
34+
env/bin/pytest
3535

3636
.PHONY: tox
3737
tox: env/bin/tox

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ Development
152152

153153
To run a single test module invoke::
154154

155-
python setup.py test --test-suite acceptable.tests.test_module
155+
env/bin/pytest acceptable/tests/test_module.py
156156

157157
or::
158158

acceptable/_validation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ def wrapper(*args, **kwargs):
138138
# is not informative enough.
139139
if payload is None:
140140
try:
141-
payload = json.loads(request.data.decode(request.charset))
141+
charset = request.mimetype_params.get("charset", "utf-8")
142+
payload = json.loads(request.data.decode(charset))
142143
except ValueError as e:
143144
raise DataValidationError(
144145
["Error decoding JSON request body: %s" % str(e)]

acceptable/openapi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def _to_dict(source: Any):
9999
return source._to_dict() # noqa
100100
elif isinstance(source, dict):
101101
return {key: _to_dict(value) for key, value in source.items()}
102-
elif type(source) == list:
102+
elif type(source) is list:
103103
return [_to_dict(value) for value in source]
104104
elif hasattr(source, "__dict__"):
105105
return {key: _to_dict(value) for key, value in source.__dict__.items()}

acceptable/tests/test_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,8 @@ def match(self, response):
434434
return mismatch
435435
data = response.data
436436
if self._decode:
437-
data = data.decode(response.charset)
437+
charset = response.mimetype_params.get("charset", "utf-8")
438+
data = data.decode(charset)
438439
return self.expected_content.match(data)
439440

440441
def __str__(self):

acceptable/tests/test_validation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ def view():
153153
self.assertRaises(AssertionError, app.post_json, [])
154154

155155
def assertResponseJsonEqual(self, response, expected_json):
156-
data = json.loads(response.data.decode(response.charset))
156+
charset = response.mimetype_params.get("charset", "utf-8")
157+
data = json.loads(response.data.decode(charset))
157158
self.assertEqual(expected_json, data)
158159

159160
def test_passes_on_good_payload_single_return_parameter(self):

pyproject.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@ skip-magic-trailing-comma = true
55
[tool.isort]
66
profile = "black"
77
skip = ["env", ".tox"]
8+
9+
[tool.pytest.ini_options]
10+
addopts = "--cov=acceptable"
11+
12+
[tool.coverage.report]
13+
omit = ["acceptable/tests/*"]

requirements-dev.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ coveralls
33
flake8
44
fixtures
55
isort
6+
pytest
7+
pytest-cov
68
testscenarios
79
testtools
810
responses

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ extras =
1515
flask
1616
django
1717
commands =
18-
coverage run --source acceptable --omit "acceptable/tests/*" setup.py test {posargs}
18+
pytest {posargs}
1919
passenv =
2020
TRAVIS
2121
TRAVIS_BRANCH

0 commit comments

Comments
 (0)