From 819b34195d5c89eb15939ff4b0746af4df797486 Mon Sep 17 00:00:00 2001 From: nanjekyejoannah Date: Wed, 16 Jan 2019 12:04:04 +0300 Subject: [PATCH 1/3] unittest assertEqual difference output foiled by newlines --- Lib/unittest/case.py | 12 ++++++++++-- Lib/unittest/test/test_case.py | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index a157ae8a14bcbe..2b20dcf22aba70 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -1238,6 +1238,11 @@ def assertCountEqual(self, first, second, msg=None): msg = self._formatMessage(msg, standardMsg) self.fail(msg) + def addTrailingNewLine(self, line): + if line != '' and line[-1] != '\n': + line = line + '\n' + return line + def assertMultiLineEqual(self, first, second, msg=None): """Assert that two multi-line strings are equal.""" self.assertIsInstance(first, str, 'First argument is not a string') @@ -1248,13 +1253,16 @@ def assertMultiLineEqual(self, first, second, msg=None): if (len(first) > self._diffThreshold or len(second) > self._diffThreshold): self._baseAssertEqual(first, second, msg) - firstlines = first.splitlines(keepends=True) + firstlines = first.splitlines(keepends=True) secondlines = second.splitlines(keepends=True) if len(firstlines) == 1 and first.strip('\r\n') == first: firstlines = [first + '\n'] secondlines = [second + '\n'] standardMsg = '%s != %s' % _common_shorten_repr(first, second) - diff = '\n' + ''.join(difflib.ndiff(firstlines, secondlines)) + difflines = list(difflib.ndiff(firstlines, secondlines)) + if len(difflines) > 1: + difflines = [self.addTrailingNewLine(line) for line in difflines] + diff = '\n' + ''.join(difflines) standardMsg = self._truncateMessage(standardMsg, diff) self.fail(self._formatMessage(msg, standardMsg)) diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 687fe5b65f109e..0b834bc4fa7083 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -1839,5 +1839,20 @@ def test2(self): self.assertEqual(MyException.ninstance, 0) +class testAssertEqualSingleLine(unittest.TestCase): + + def test_trailing_new_line_at_end(self): + self.assertEqual("abc\n", "abc\n") + def test_trailing_space_at_end(self): + self.assertEqual("abc ", "abc ") + def test_no_trailing_new_line(self): + self.assertEqual("abc", "abc") + def test_new_line_at_beginning(self): + self.assertEqual("\nabc", "\nabc") + def test_new_line_at_start_and_end(self): + self.assertEqual("\nabc\n", "\nabc\n") + def test_with_space_at_start_and_end(self): + self.assertEqual(" abc ", " abc ") + if __name__ == "__main__": unittest.main() From 28bd8932c8e5e0198a569b767d7998eb7fabbaec Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" Date: Wed, 16 Jan 2019 09:11:30 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NEWS.d/next/Library/2019-01-16-09-11-29.bpo-24780.69AB4h.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2019-01-16-09-11-29.bpo-24780.69AB4h.rst diff --git a/Misc/NEWS.d/next/Library/2019-01-16-09-11-29.bpo-24780.69AB4h.rst b/Misc/NEWS.d/next/Library/2019-01-16-09-11-29.bpo-24780.69AB4h.rst new file mode 100644 index 00000000000000..4a796eb92caab6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-01-16-09-11-29.bpo-24780.69AB4h.rst @@ -0,0 +1 @@ +unittest assertEqual difference output now not foiled by newlines. \ No newline at end of file From 00190f8e2a9456bba518fc36b885cb4efb077bab Mon Sep 17 00:00:00 2001 From: nanjekyejoannah Date: Wed, 16 Jan 2019 12:21:58 +0300 Subject: [PATCH 3/3] fix space --- Lib/unittest/case.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 2b20dcf22aba70..867589809dd549 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -1253,7 +1253,7 @@ def assertMultiLineEqual(self, first, second, msg=None): if (len(first) > self._diffThreshold or len(second) > self._diffThreshold): self._baseAssertEqual(first, second, msg) - firstlines = first.splitlines(keepends=True) + firstlines = first.splitlines(keepends=True) secondlines = second.splitlines(keepends=True) if len(firstlines) == 1 and first.strip('\r\n') == first: firstlines = [first + '\n'] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy