From b21b4d1608f5d83d7d6f503672f7eff46ed28f95 Mon Sep 17 00:00:00 2001 From: David Lord Date: Tue, 1 May 2018 13:29:48 -0700 Subject: [PATCH] add more merge cases --- flask/blueprints.py | 6 +++--- tests/test_blueprints.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/flask/blueprints.py b/flask/blueprints.py index 74bca275..5ce5561e 100644 --- a/flask/blueprints.py +++ b/flask/blueprints.py @@ -10,6 +10,7 @@ :license: BSD, see LICENSE for more details. """ from functools import update_wrapper +from werkzeug.urls import url_join from .helpers import _PackageBoundObject, _endpoint_from_view_func @@ -49,8 +50,6 @@ class BlueprintSetupState(object): url_prefix = self.options.get('url_prefix') if url_prefix is None: url_prefix = self.blueprint.url_prefix - if url_prefix: - url_prefix = url_prefix.rstrip('/') #: The prefix that should be used for all URLs defined on the #: blueprint. self.url_prefix = url_prefix @@ -67,7 +66,8 @@ class BlueprintSetupState(object): """ if self.url_prefix is not None: if rule: - rule = '/'.join((self.url_prefix, rule.lstrip('/'))) + rule = '/'.join(( + self.url_prefix.rstrip('/'), rule.lstrip('/'))) else: rule = self.url_prefix options.setdefault('subdomain', self.subdomain) diff --git a/tests/test_blueprints.py b/tests/test_blueprints.py index 311d77f6..465079cd 100644 --- a/tests/test_blueprints.py +++ b/tests/test_blueprints.py @@ -116,7 +116,12 @@ def test_blueprint_app_error_handling(app, client): @pytest.mark.parametrize(('prefix', 'rule', 'url'), ( + ('', '/', '/'), + ('/', '', '/'), + ('/', '/', '/'), ('/foo', '', '/foo'), + ('/foo/', '', '/foo/'), + ('', '/bar', '/bar'), ('/foo/', '/bar', '/foo/bar'), ('/foo/', 'bar', '/foo/bar'), ('/foo', '/bar', '/foo/bar'),