remove test relying on Werkzeug Local internals
This commit is contained in:
parent
192f4ae0b2
commit
0ee1b0b5d9
1 changed files with 0 additions and 54 deletions
|
|
@ -1,59 +1,5 @@
|
||||||
import gc
|
|
||||||
import platform
|
|
||||||
import threading
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
|
||||||
_gc_lock = threading.Lock()
|
|
||||||
|
|
||||||
|
|
||||||
class assert_no_leak:
|
|
||||||
def __enter__(self):
|
|
||||||
gc.disable()
|
|
||||||
_gc_lock.acquire()
|
|
||||||
loc = flask._request_ctx_stack._local
|
|
||||||
|
|
||||||
# Force Python to track this dictionary at all times.
|
|
||||||
# This is necessary since Python only starts tracking
|
|
||||||
# dicts if they contain mutable objects. It's a horrible,
|
|
||||||
# horrible hack but makes this kinda testable.
|
|
||||||
loc.__storage__["FOOO"] = [1, 2, 3]
|
|
||||||
|
|
||||||
gc.collect()
|
|
||||||
self.old_objects = len(gc.get_objects())
|
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, tb):
|
|
||||||
gc.collect()
|
|
||||||
new_objects = len(gc.get_objects())
|
|
||||||
if new_objects > self.old_objects:
|
|
||||||
pytest.fail("Example code leaked")
|
|
||||||
_gc_lock.release()
|
|
||||||
gc.enable()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(platform.python_implementation() == "PyPy", reason="CPython only")
|
|
||||||
def test_memory_consumption():
|
|
||||||
app = flask.Flask(__name__)
|
|
||||||
|
|
||||||
@app.route("/")
|
|
||||||
def index():
|
|
||||||
return flask.render_template("simple_template.html", whiskey=42)
|
|
||||||
|
|
||||||
def fire():
|
|
||||||
with app.test_client() as c:
|
|
||||||
rv = c.get("/")
|
|
||||||
assert rv.status_code == 200
|
|
||||||
assert rv.data == b"<h1>42</h1>"
|
|
||||||
|
|
||||||
# Trigger caches
|
|
||||||
fire()
|
|
||||||
|
|
||||||
with assert_no_leak():
|
|
||||||
for _x in range(10):
|
|
||||||
fire()
|
|
||||||
|
|
||||||
|
|
||||||
def test_aborting(app):
|
def test_aborting(app):
|
||||||
class Foo(Exception):
|
class Foo(Exception):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue