From bee8bfe5f440c2dde7f5af189febdbf81b27abd5 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 9 Sep 2019 04:42:43 -0700 Subject: [PATCH] bpo-37212: Preserve keyword argument order in unittest.mock.call and error messages (GH-14310) (cherry picked from commit 9d607061c9c888913ae2c18543775cf360d55f27) Co-authored-by: Xtreak --- Lib/unittest/mock.py | 2 +- Lib/unittest/test/testmock/testmock.py | 6 +++--- .../next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 4c76f53f387..7a4fcf4e3aa 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2320,7 +2320,7 @@ def _format_call_signature(name, args, kwargs): formatted_args = '' args_string = ', '.join([repr(arg) for arg in args]) kwargs_string = ', '.join([ - '%s=%r' % (key, value) for key, value in sorted(kwargs.items()) + '%s=%r' % (key, value) for key, value in kwargs.items() ]) if args_string: formatted_args = args_string diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index d3a1e89da81..413ee689510 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -1563,11 +1563,11 @@ class MockTest(unittest.TestCase): m.assert_called_once() self.assertNotIn("Calls:", str(e.exception)) - #Issue21256 printout of keyword args should be in deterministic order - def test_sorted_call_signature(self): + #Issue37212 printout of keyword args now preserves the original order + def test_ordered_call_signature(self): m = Mock() m.hello(name='hello', daddy='hero') - text = "call(daddy='hero', name='hello')" + text = "call(name='hello', daddy='hero')" self.assertEqual(repr(m.hello.call_args), text) #Issue21270 overrides tuple methods for mock.call objects diff --git a/Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst b/Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst new file mode 100644 index 00000000000..520a0229aa9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst @@ -0,0 +1,2 @@ +:func:`unittest.mock.call` now preserves the order of keyword arguments in +repr output. Patch by Karthikeyan Singaravelan.