diff --git a/docs/changelog.rst b/docs/changelog.rst index 99154ce..ebd5f6b 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -3,6 +3,11 @@ Changelog ========= +UNRELEASED +---------- + +- Fix compatibility with ``Flask 3.0`` -- the consequence is that the deprecated and incompatible ``request_ctx`` has been removed. + 1.2.1 ------------------ - Fix bug in ``:meth:pytest_flask.fixtures.live_server`` diff --git a/docs/features.rst b/docs/features.rst index c19de7d..5fba992 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -188,28 +188,6 @@ in your project's ``pytest.ini`` file):: addopts = --live-server-port=5000 -``request_ctx`` - request context (Deprecated) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**This fixture is deprecated and will be removed in the future.** - -The request context which contains all request relevant information. - -.. hint:: - - The request context has been pushed implicitly any time the ``app`` - fixture is applied and is kept around during test execution, so it’s easy - to introspect the data: - - .. code:: python - - from flask import request, url_for - - def test_request_headers(client): - res = client.get(url_for('ping'), headers=[('X-Something', '42')]) - assert request.headers['X-Something'] == '42' - - ``live_server_scope`` - set the scope of the live server `````````````````````````````````````````````````````````````````` diff --git a/requirements/main.txt b/requirements/main.txt index 17ab14e..c30a17e 100644 --- a/requirements/main.txt +++ b/requirements/main.txt @@ -1,3 +1,3 @@ pytest>=5.2 -Flask <3.0 -Werkzeug>=0.7 +Flask +Werkzeug diff --git a/src/pytest_flask/fixtures.py b/src/pytest_flask/fixtures.py index 45c94bf..2d8a2a8 100644 --- a/src/pytest_flask/fixtures.py +++ b/src/pytest_flask/fixtures.py @@ -3,7 +3,6 @@ import warnings import pytest -from flask import _request_ctx_stack from ._internal import _determine_scope from ._internal import _make_accept_header @@ -92,23 +91,6 @@ def config(app): return app.config -@pytest.fixture -def request_ctx(app): - """The request context which contains all request relevant information, - e.g. `session`, `g`, `flashes`, etc. - """ - warnings.warn( - "In Werzeug 2.0.0, the Client request methods " - "(client.get, client.post) always return an instance of TestResponse. This " - "class provides a reference to the request object through 'response.request' " - "The fixture 'request_ctx' is deprecated and will be removed in the future, using TestResponse.request " - "is the preferred way.", - DeprecationWarning, - stacklevel=2, - ) - return _request_ctx_stack.top - - @pytest.fixture(params=["application/json", "text/html"]) def mimetype(request): return request.param diff --git a/src/pytest_flask/plugin.py b/src/pytest_flask/plugin.py index 07b1df8..6dafacb 100644 --- a/src/pytest_flask/plugin.py +++ b/src/pytest_flask/plugin.py @@ -15,7 +15,6 @@ from .fixtures import client_class from .fixtures import config from .fixtures import live_server -from .fixtures import request_ctx from .pytest_compat import getfixturevalue diff --git a/tests/test_fixtures.py b/tests/test_fixtures.py index 1d58217..b38af95 100755 --- a/tests/test_fixtures.py +++ b/tests/test_fixtures.py @@ -16,21 +16,6 @@ def test_accept_json(self, accept_json): def test_accept_jsonp(self, accept_jsonp): assert accept_jsonp == [("Accept", "application/json-p")] - def test_request_ctx(self, app, request_ctx): - assert request_ctx.app is app - - def test_request_ctx_is_kept_around(self, client): - res = client.get(url_for("index"), headers=[("X-Something", "42")]) - """In werkzeug 2.0.0 the test Client provides a new attribute 'request' - in the response class which holds a reference to the request object that - produced the respective response, making instrospection easier""" - try: - assert res.request.headers["X-Something"] == "42" - except AttributeError: - """This is the conventional (pre 2.0.0) way of reaching the - request object, using flask.request global.""" - assert request.headers["X-Something"] == "42" - def test_accept_mimetype(self, accept_mimetype): mimestrings = [[("Accept", "application/json")], [("Accept", "text/html")]] assert accept_mimetype in mimestrings