]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-94722: fix DocTest.__eq__ for case of no line number on one side (#112385)
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>
Sat, 25 Nov 2023 17:23:43 +0000 (17:23 +0000)
committerGitHub <noreply@github.com>
Sat, 25 Nov 2023 17:23:43 +0000 (17:23 +0000)
Lib/doctest.py
Lib/test/test_doctest.py
Misc/NEWS.d/next/Library/2023-11-24-21-00-24.gh-issue-94722.GMIQIn.rst [new file with mode: 0644]

index 2f14aa083348958af25d73233f1e471f28c6c673..d109b6c9e373438323d8d1bdce16d929b5b02156 100644 (file)
@@ -591,9 +591,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
index cb4e2157bb228b9aad7f68f1504a5a611829e898..772dbd1d02130539bf2bb16994a99b21dbc50416 100644 (file)
@@ -413,6 +413,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 (file)
index 0000000..41bd57f
--- /dev/null
@@ -0,0 +1,2 @@
+Fix bug where comparison between instances of :class:`~doctest.DocTest` fails if
+one of them has ``None`` as its lineno.