Browse Source

Merge branch '0.10-maintenance'

pull/977/head
Armin Ronacher 11 years ago
parent
commit
a9503580d2
  1. 3
      CHANGES
  2. 2
      flask/app.py
  3. 23
      flask/testsuite/basic.py

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
-------------- --------------

2
flask/app.py

@ -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.

23
flask/testsuite/basic.py

@ -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…
Cancel
Save