merge app and request context
This commit is contained in:
parent
330123258e
commit
c2705ffd9c
36 changed files with 779 additions and 1007 deletions
|
|
@ -5,7 +5,7 @@ import pytest
|
|||
from _pytest import monkeypatch
|
||||
|
||||
from flask import Flask
|
||||
from flask.globals import request_ctx
|
||||
from flask.globals import app_ctx as _app_ctx
|
||||
|
||||
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
|
|
@ -83,16 +83,17 @@ def test_apps(monkeypatch):
|
|||
|
||||
@pytest.fixture(autouse=True)
|
||||
def leak_detector():
|
||||
"""Fails if any app contexts are still pushed when a test ends. Pops all
|
||||
contexts so subsequent tests are not affected.
|
||||
"""
|
||||
yield
|
||||
|
||||
# make sure we're not leaking a request context since we are
|
||||
# testing flask internally in debug mode in a few cases
|
||||
leaks = []
|
||||
while request_ctx:
|
||||
leaks.append(request_ctx._get_current_object())
|
||||
request_ctx.pop()
|
||||
|
||||
assert leaks == []
|
||||
while _app_ctx:
|
||||
leaks.append(_app_ctx._get_current_object())
|
||||
_app_ctx.pop()
|
||||
|
||||
assert not leaks
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import pytest
|
|||
|
||||
import flask
|
||||
from flask.globals import app_ctx
|
||||
from flask.globals import request_ctx
|
||||
|
||||
|
||||
def test_basic_url_generation(app):
|
||||
|
|
@ -107,7 +106,8 @@ def test_app_tearing_down_with_handled_exception_by_app_handler(app, client):
|
|||
with app.app_context():
|
||||
client.get("/")
|
||||
|
||||
assert cleanup_stuff == [None]
|
||||
# teardown request context, and with block context
|
||||
assert cleanup_stuff == [None, None]
|
||||
|
||||
|
||||
def test_app_tearing_down_with_unhandled_exception(app, client):
|
||||
|
|
@ -126,9 +126,11 @@ def test_app_tearing_down_with_unhandled_exception(app, client):
|
|||
with app.app_context():
|
||||
client.get("/")
|
||||
|
||||
assert len(cleanup_stuff) == 1
|
||||
assert len(cleanup_stuff) == 2
|
||||
assert isinstance(cleanup_stuff[0], ValueError)
|
||||
assert str(cleanup_stuff[0]) == "dummy"
|
||||
# exception propagated, seen by request context and with block context
|
||||
assert cleanup_stuff[0] is cleanup_stuff[1]
|
||||
|
||||
|
||||
def test_app_ctx_globals_methods(app, app_ctx):
|
||||
|
|
@ -178,8 +180,7 @@ def test_context_refcounts(app, client):
|
|||
@app.route("/")
|
||||
def index():
|
||||
with app_ctx:
|
||||
with request_ctx:
|
||||
pass
|
||||
pass
|
||||
|
||||
assert flask.request.environ["werkzeug.request"] is not None
|
||||
return ""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import warnings
|
|||
import pytest
|
||||
|
||||
import flask
|
||||
from flask.globals import request_ctx
|
||||
from flask.globals import app_ctx
|
||||
from flask.sessions import SecureCookieSessionInterface
|
||||
from flask.sessions import SessionInterface
|
||||
|
||||
|
|
@ -153,12 +153,12 @@ class TestGreenletContextCopying:
|
|||
@app.route("/")
|
||||
def index():
|
||||
flask.session["fizz"] = "buzz"
|
||||
reqctx = request_ctx.copy()
|
||||
ctx = app_ctx.copy()
|
||||
|
||||
def g():
|
||||
assert not flask.request
|
||||
assert not flask.current_app
|
||||
with reqctx:
|
||||
with ctx:
|
||||
assert flask.request
|
||||
assert flask.current_app == app
|
||||
assert flask.request.path == "/"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import flask
|
||||
from flask.globals import request_ctx
|
||||
from flask.globals import app_ctx
|
||||
from flask.sessions import SessionInterface
|
||||
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ def test_open_session_with_endpoint():
|
|||
pass
|
||||
|
||||
def open_session(self, app, request):
|
||||
request_ctx.match_request()
|
||||
app_ctx.match_request()
|
||||
assert request.endpoint is not None
|
||||
|
||||
app = flask.Flask(__name__)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import pytest
|
|||
import flask
|
||||
from flask import appcontext_popped
|
||||
from flask.cli import ScriptInfo
|
||||
from flask.globals import _cv_request
|
||||
from flask.globals import _cv_app
|
||||
from flask.json import jsonify
|
||||
from flask.testing import EnvironBuilder
|
||||
from flask.testing import FlaskCliRunner
|
||||
|
|
@ -382,4 +382,4 @@ def test_client_pop_all_preserved(app, req_ctx, client):
|
|||
# close the response, releasing the context held by stream_with_context
|
||||
rv.close()
|
||||
# only req_ctx fixture should still be pushed
|
||||
assert _cv_request.get(None) is req_ctx
|
||||
assert _cv_app.get(None) is req_ctx
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue