From 8200b89a060a36396185e519999e27b43644b51f Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Mon, 28 Jan 2019 23:11:18 -0600 Subject: test unsortable discriminators --- tests/test_exceptions.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 399940c05..e7a2871a5 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -1,3 +1,4 @@ +from collections import OrderedDict import unittest @@ -72,7 +73,9 @@ class TestConfigurationConflictError(unittest.TestCase): return ConfigurationConflictError(conflicts) def test_str(self): - conflicts = {'a': ('1', '2', '3'), 'b': ('4', '5', '6')} + conflicts = OrderedDict() + conflicts['a'] = ('1', '2', '3') + conflicts['b'] = ('4', '5', '6') exc = self._makeOne(conflicts) self.assertEqual( str(exc), @@ -88,6 +91,25 @@ Conflicting configuration actions 6""", ) + def test_non_sortable_discriminators_in_str(self): + conflicts = OrderedDict() + conflicts['a'] = ('1', '2', '3') + conflicts[None] = ('4', '5', '6') + exc = self._makeOne(conflicts) + self.assertEqual( + str(exc), + """\ +Conflicting configuration actions + For: a + 1 + 2 + 3 + For: None + 4 + 5 + 6""", + ) + class TestConfigurationExecutionError(unittest.TestCase): def _makeOne(self, etype, evalue, info): -- cgit v1.2.3 From a5e0dd71d603573b2e3c366a60729caa725c9ac4 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Mon, 28 Jan 2019 23:12:20 -0600 Subject: stop sorting discriminators in exception output --- src/pyramid/exceptions.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/pyramid/exceptions.py b/src/pyramid/exceptions.py index 9a7054731..92a0098e0 100644 --- a/src/pyramid/exceptions.py +++ b/src/pyramid/exceptions.py @@ -3,8 +3,6 @@ from pyramid.httpexceptions import HTTPBadRequest, HTTPNotFound, HTTPForbidden NotFound = HTTPNotFound # bw compat Forbidden = HTTPForbidden # bw compat -CR = '\n' - class BadCSRFOrigin(HTTPBadRequest): """ @@ -92,14 +90,13 @@ class ConfigurationConflictError(ConfigurationError): def __str__(self): r = ["Conflicting configuration actions"] - items = sorted(self._conflicts.items()) - for discriminator, infos in items: + for discriminator, infos in self._conflicts.items(): r.append(" For: %s" % (discriminator,)) for info in infos: - for line in str(info).rstrip().split(CR): + for line in str(info).rstrip().split('\n'): r.append(" " + line) - return CR.join(r) + return '\n'.join(r) class ConfigurationExecutionError(ConfigurationError): -- cgit v1.2.3