diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-11-25 17:39:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-25 17:39:16 (GMT) |
commit | 8c9f273760c60d1c59696b3e16ead4cbd03392f2 (patch) | |
tree | 1e0130a212b51eaa95f35fff01d2df87eaa1e8a1 | |
parent | 68db0ed903ee677e0f2684a5598ef2006680cf27 (diff) | |
download | cpython-8c9f273760c60d1c59696b3e16ead4cbd03392f2.zip cpython-8c9f273760c60d1c59696b3e16ead4cbd03392f2.tar.gz cpython-8c9f273760c60d1c59696b3e16ead4cbd03392f2.tar.bz2 |
[3.11] gh-94722: fix DocTest.__eq__ for case of no line number on one side (GH-112385) (#112401)
gh-94722: fix DocTest.__eq__ for case of no line number on one side (GH-112385)
(cherry picked from commit fbb9027a037ff1bfaf3f596df033ca45743ee980)
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
-rw-r--r-- | Lib/doctest.py | 6 | ||||
-rw-r--r-- | Lib/test/test_doctest.py | 17 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst | 2 |
3 files changed, 23 insertions, 2 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index 21abe47..5012b24 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -569,9 +569,11 @@ class DocTest: def __lt__(self, other): if not isinstance(other, DocTest): return NotImplemented - return ((self.name, self.filename, self.lineno, id(self)) + self_lno = self.lineno if self.lineno is not None else -1 + other_lno = other.lineno if other.lineno is not None else -1 + return ((self.name, self.filename, self_lno, id(self)) < - (other.name, other.filename, other.lineno, id(other))) + (other.name, other.filename, other_lno, id(other))) ###################################################################### ## 3. DocTestParser diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 617529d..6c0da0b 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -416,6 +416,23 @@ Compare `DocTest`: False >>> test != other_test True + >>> test < other_test + False + >>> other_test < test + True + +Test comparison with lineno None on one side + + >>> no_lineno = parser.get_doctest(docstring, globs, 'some_test', + ... 'some_test', None) + >>> test.lineno is None + False + >>> no_lineno.lineno is None + True + >>> test < no_lineno + False + >>> no_lineno < test + True Compare `DocTestCase`: diff --git a/Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst b/Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst new file mode 100644 index 0000000..41bd57f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst @@ -0,0 +1,2 @@ +Fix bug where comparison between instances of :class:`~doctest.DocTest` fails if +one of them has ``None`` as its lineno. |