summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-11-25 17:39:16 (GMT)
committerGitHub <noreply@github.com>2023-11-25 17:39:16 (GMT)
commit8c9f273760c60d1c59696b3e16ead4cbd03392f2 (patch)
tree1e0130a212b51eaa95f35fff01d2df87eaa1e8a1
parent68db0ed903ee677e0f2684a5598ef2006680cf27 (diff)
downloadcpython-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.py6
-rw-r--r--Lib/test/test_doctest.py17
-rw-r--r--Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst2
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.