Skip to content

Commit 392937c

Browse files
committed
add tests for view sorting
1 parent 517c757 commit 392937c

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

pyramid/config/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import inspect
2+
import operator
23

34
from zope.interface import Interface
45
from zope.interface import classProvides
@@ -481,7 +482,7 @@ def add(self, view, order, accept=None, phash=None):
481482

482483
if accept is None or '*' in accept:
483484
self.views.append((order, view, phash))
484-
self.views.sort(key=lambda x: x[0])
485+
self.views.sort(key=operator.itemgetter(0))
485486
else:
486487
subset = self.media_views.setdefault(accept, [])
487488
subset.append((order, view, phash))

pyramid/tests/test_config/test_views.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,9 +1844,23 @@ def test_add_with_phash(self):
18441844
mv.add('view', 100, phash='abc')
18451845
self.assertEqual(mv.views, [(100, 'view', 'abc')])
18461846
mv.add('view', 100, phash='def')
1847-
self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')])
1847+
self.assertEqual(mv.views, [(100, 'view', 'abc'),
1848+
(100, 'view', 'def')])
18481849
mv.add('view', 100, phash='abc')
1849-
self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')])
1850+
self.assertEqual(mv.views, [(100, 'view', 'abc'),
1851+
(100, 'view', 'def')])
1852+
1853+
def test_multiple_with_functions_as_views(self):
1854+
# this failed on py3 at one point, because functions aren't orderable
1855+
# and we were sorting the views via a plain sort() rather than
1856+
# sort(key=itemgetter(0)).
1857+
def view1(request): pass
1858+
def view2(request): pass
1859+
mv = self._makeOne()
1860+
mv.add(view1, 100, None)
1861+
self.assertEqual(mv.views, [(100, view1, None)])
1862+
mv.add(view2, 100, None)
1863+
self.assertEqual(mv.views, [(100, view1, None), (100, view2, None)])
18501864

18511865
def test_get_views_request_has_no_accept(self):
18521866
request = DummyRequest()

0 commit comments

Comments
 (0)