diff options
| author | Chris McDonough <chrism@plope.com> | 2011-10-24 18:25:53 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-10-24 18:25:53 -0400 |
| commit | 392937ce3554402e39f9119f1cdb69e6b8aa6e68 (patch) | |
| tree | a092752a622a1f2b7ecc6c9728af3b5a02a9dab5 | |
| parent | 517c757fbbfb0103eea3000db109f946c6015c80 (diff) | |
| download | pyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.tar.gz pyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.tar.bz2 pyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.zip | |
add tests for view sorting
| -rw-r--r-- | pyramid/config/views.py | 3 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_views.py | 18 |
2 files changed, 18 insertions, 3 deletions
diff --git a/pyramid/config/views.py b/pyramid/config/views.py index 9b277dafb..a88c22b12 100644 --- a/pyramid/config/views.py +++ b/pyramid/config/views.py @@ -1,4 +1,5 @@ import inspect +import operator from zope.interface import Interface from zope.interface import classProvides @@ -481,7 +482,7 @@ class MultiView(object): if accept is None or '*' in accept: self.views.append((order, view, phash)) - self.views.sort(key=lambda x: x[0]) + self.views.sort(key=operator.itemgetter(0)) else: subset = self.media_views.setdefault(accept, []) subset.append((order, view, phash)) diff --git a/pyramid/tests/test_config/test_views.py b/pyramid/tests/test_config/test_views.py index 0813eecdb..fa263a311 100644 --- a/pyramid/tests/test_config/test_views.py +++ b/pyramid/tests/test_config/test_views.py @@ -1844,9 +1844,23 @@ class TestMultiView(unittest.TestCase): mv.add('view', 100, phash='abc') self.assertEqual(mv.views, [(100, 'view', 'abc')]) mv.add('view', 100, phash='def') - self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')]) + self.assertEqual(mv.views, [(100, 'view', 'abc'), + (100, 'view', 'def')]) mv.add('view', 100, phash='abc') - self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')]) + self.assertEqual(mv.views, [(100, 'view', 'abc'), + (100, 'view', 'def')]) + + def test_multiple_with_functions_as_views(self): + # this failed on py3 at one point, because functions aren't orderable + # and we were sorting the views via a plain sort() rather than + # sort(key=itemgetter(0)). + def view1(request): pass + def view2(request): pass + mv = self._makeOne() + mv.add(view1, 100, None) + self.assertEqual(mv.views, [(100, view1, None)]) + mv.add(view2, 100, None) + self.assertEqual(mv.views, [(100, view1, None), (100, view2, None)]) def test_get_views_request_has_no_accept(self): request = DummyRequest() |
