Skip to content

Commit ea7a172

Browse files
committed
Test that dotted names work. This fixes pallets#258
1 parent 85efa3f commit ea7a172

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

flask/wrappers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def module(self):
8080
def blueprint(self):
8181
"""The name of the current blueprint"""
8282
if self.url_rule and '.' in self.url_rule.endpoint:
83-
return self.url_rule.endpoint.split('.', 1)[0]
83+
return self.url_rule.endpoint.rsplit('.', 1)[0]
8484

8585
@cached_property
8686
def json(self):

tests/flask_tests.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,6 +1323,31 @@ def test_templates_and_static(self):
13231323
with flask.Flask(__name__).test_request_context():
13241324
assert flask.render_template('nested/nested.txt') == 'I\'m nested'
13251325

1326+
def test_dotted_names(self):
1327+
frontend = flask.Blueprint('myapp.frontend', __name__)
1328+
backend = flask.Blueprint('myapp.backend', __name__)
1329+
1330+
@frontend.route('/fe')
1331+
def frontend_index():
1332+
return flask.url_for('myapp.backend.backend_index')
1333+
1334+
@frontend.route('/fe2')
1335+
def frontend_page2():
1336+
return flask.url_for('.frontend_index')
1337+
1338+
@backend.route('/be')
1339+
def backend_index():
1340+
return flask.url_for('myapp.frontend.frontend_index')
1341+
1342+
app = flask.Flask(__name__)
1343+
app.register_blueprint(frontend)
1344+
app.register_blueprint(backend)
1345+
1346+
c = app.test_client()
1347+
self.assertEqual(c.get('/fe').data.strip(), '/be')
1348+
self.assertEqual(c.get('/fe2').data.strip(), '/fe')
1349+
self.assertEqual(c.get('/be').data.strip(), '/fe')
1350+
13261351

13271352
class SendfileTestCase(unittest.TestCase):
13281353

0 commit comments

Comments
 (0)