summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-10-24 18:25:53 -0400
committerChris McDonough <chrism@plope.com>2011-10-24 18:25:53 -0400
commit392937ce3554402e39f9119f1cdb69e6b8aa6e68 (patch)
treea092752a622a1f2b7ecc6c9728af3b5a02a9dab5
parent517c757fbbfb0103eea3000db109f946c6015c80 (diff)
downloadpyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.tar.gz
pyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.tar.bz2
pyramid-392937ce3554402e39f9119f1cdb69e6b8aa6e68.zip
add tests for view sorting
-rw-r--r--pyramid/config/views.py3
-rw-r--r--pyramid/tests/test_config/test_views.py18
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()