From 44e39ab0713566bd91363f19ed09921df5db0196 Mon Sep 17 00:00:00 2001 From: "Serge S. Koval" Date: Fri, 14 Jun 2013 10:28:37 +0300 Subject: [PATCH] Fixed class-based views support --- flask/app.py | 2 +- flask/testsuite/basic.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/flask/app.py b/flask/app.py index 98ecb106..addc40b4 100644 --- a/flask/app.py +++ b/flask/app.py @@ -979,7 +979,7 @@ class Flask(_PackageBoundObject): self.url_map.add(rule) if view_func is not None: old_func = self.view_functions.get(endpoint) - if old_func is not None and old_func is not view_func: + if old_func is not None and old_func != view_func: raise AssertionError('View function mapping is overwriting an ' 'existing endpoint function: %s' % endpoint) self.view_functions[endpoint] = view_func diff --git a/flask/testsuite/basic.py b/flask/testsuite/basic.py index 9372fdd1..51fd46f2 100644 --- a/flask/testsuite/basic.py +++ b/flask/testsuite/basic.py @@ -1217,6 +1217,35 @@ class SubdomainTestCase(FlaskTestCase): rv = c.get('/outside', 'http://xtesting.localhost/') self.assert_equal(rv.data, b'Outside') + def test_multi_route_rules(self): + app = flask.Flask(__name__) + + @app.route('/') + @app.route('//') + def index(test='a'): + return test + + rv = app.test_client().open('/') + self.assert_equal(rv.data, b'a') + rv = app.test_client().open('/b/') + self.assert_equal(rv.data, b'b') + + def test_multi_route_class_views(self): + class View(object): + def __init__(self, app): + app.add_url_rule('/', 'index', self.index) + app.add_url_rule('//', 'index', self.index) + + def index(self, test='a'): + return test + + app = flask.Flask(__name__) + _ = View(app) + rv = app.test_client().open('/') + self.assert_equal(rv.data, b'a') + rv = app.test_client().open('/b/') + self.assert_equal(rv.data, b'b') + def suite(): suite = unittest.TestSuite()