forked from orbit-oss/flask
Merge branch '0.10-maintenance'
This commit is contained in:
commit
a9503580d2
3 changed files with 26 additions and 2 deletions
3
CHANGES
3
CHANGES
|
|
@ -35,6 +35,9 @@ Version 0.10.2
|
||||||
- Fixed an etags bug when sending a file streams with a name.
|
- Fixed an etags bug when sending a file streams with a name.
|
||||||
- Fixed `send_from_directory` not expanding to the application root path
|
- Fixed `send_from_directory` not expanding to the application root path
|
||||||
correctly.
|
correctly.
|
||||||
|
- Changed logic of before first request handlers to flip the flag after
|
||||||
|
invoking. This will allow some uses that are potentially dangerous but
|
||||||
|
should probably be permitted.
|
||||||
|
|
||||||
Version 0.10.1
|
Version 0.10.1
|
||||||
--------------
|
--------------
|
||||||
|
|
|
||||||
|
|
@ -1491,9 +1491,9 @@ class Flask(_PackageBoundObject):
|
||||||
with self._before_request_lock:
|
with self._before_request_lock:
|
||||||
if self._got_first_request:
|
if self._got_first_request:
|
||||||
return
|
return
|
||||||
self._got_first_request = True
|
|
||||||
for func in self.before_first_request_funcs:
|
for func in self.before_first_request_funcs:
|
||||||
func()
|
func()
|
||||||
|
self._got_first_request = True
|
||||||
|
|
||||||
def make_default_options_response(self):
|
def make_default_options_response(self):
|
||||||
"""This method is called to create the default `OPTIONS` response.
|
"""This method is called to create the default `OPTIONS` response.
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import flask
|
||||||
import pickle
|
import pickle
|
||||||
import unittest
|
import unittest
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from threading import Thread
|
from threading import Thread, Condition
|
||||||
from flask.testsuite import FlaskTestCase, emits_module_deprecation_warning
|
from flask.testsuite import FlaskTestCase, emits_module_deprecation_warning
|
||||||
from flask._compat import text_type
|
from flask._compat import text_type
|
||||||
from werkzeug.exceptions import BadRequest, NotFound
|
from werkzeug.exceptions import BadRequest, NotFound
|
||||||
|
|
@ -1095,6 +1095,27 @@ class BasicFunctionalityTestCase(FlaskTestCase):
|
||||||
self.assert_equal(got, [42])
|
self.assert_equal(got, [42])
|
||||||
self.assert_true(app.got_first_request)
|
self.assert_true(app.got_first_request)
|
||||||
|
|
||||||
|
def test_before_first_request_functions_concurrent(self):
|
||||||
|
got = []
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
cv = Condition()
|
||||||
|
@app.before_first_request
|
||||||
|
def foo():
|
||||||
|
with cv:
|
||||||
|
cv.wait()
|
||||||
|
got.append(42)
|
||||||
|
c = app.test_client()
|
||||||
|
def get_and_assert():
|
||||||
|
with cv:
|
||||||
|
cv.notify()
|
||||||
|
c.get("/")
|
||||||
|
self.assert_equal(got, [42])
|
||||||
|
t = Thread(target=get_and_assert)
|
||||||
|
t.start()
|
||||||
|
get_and_assert()
|
||||||
|
t.join()
|
||||||
|
self.assert_true(app.got_first_request)
|
||||||
|
|
||||||
def test_routing_redirect_debugging(self):
|
def test_routing_redirect_debugging(self):
|
||||||
app = flask.Flask(__name__)
|
app = flask.Flask(__name__)
|
||||||
app.debug = True
|
app.debug = True
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue