mirror of
https://github.com/python/cpython.git
synced 2025-08-09 11:29:45 +00:00
Make test_nntplib more robust when the "last" article in a group can't be retrieved
This commit is contained in:
parent
8ce1f1ff83
commit
d28f790b69
1 changed files with 26 additions and 9 deletions
|
@ -112,9 +112,13 @@ class NetworkedNNTPTestsMixin:
|
||||||
|
|
||||||
def test_xover(self):
|
def test_xover(self):
|
||||||
resp, count, first, last, name = self.server.group(self.GROUP_NAME)
|
resp, count, first, last, name = self.server.group(self.GROUP_NAME)
|
||||||
resp, lines = self.server.xover(last, last)
|
resp, lines = self.server.xover(last - 5, last)
|
||||||
|
if len(lines) == 0:
|
||||||
|
self.skipTest("no articles retrieved")
|
||||||
|
# The 'last' article is not necessarily part of the output (cancelled?)
|
||||||
art_num, art_dict = lines[0]
|
art_num, art_dict = lines[0]
|
||||||
self.assertEqual(art_num, last)
|
self.assertGreaterEqual(art_num, last - 5)
|
||||||
|
self.assertLessEqual(art_num, last)
|
||||||
self._check_art_dict(art_dict)
|
self._check_art_dict(art_dict)
|
||||||
|
|
||||||
def test_over(self):
|
def test_over(self):
|
||||||
|
@ -127,7 +131,9 @@ class NetworkedNNTPTestsMixin:
|
||||||
# The "start-end" article range form
|
# The "start-end" article range form
|
||||||
resp, lines = self.server.over((start, last))
|
resp, lines = self.server.over((start, last))
|
||||||
art_num, art_dict = lines[-1]
|
art_num, art_dict = lines[-1]
|
||||||
self.assertEqual(art_num, last)
|
# The 'last' article is not necessarily part of the output (cancelled?)
|
||||||
|
self.assertGreaterEqual(art_num, start)
|
||||||
|
self.assertLessEqual(art_num, last)
|
||||||
self._check_art_dict(art_dict)
|
self._check_art_dict(art_dict)
|
||||||
# XXX The "message_id" form is unsupported by gmane
|
# XXX The "message_id" form is unsupported by gmane
|
||||||
# 503 Overview by message-ID unsupported
|
# 503 Overview by message-ID unsupported
|
||||||
|
@ -149,15 +155,26 @@ class NetworkedNNTPTestsMixin:
|
||||||
|
|
||||||
def test_article_head_body(self):
|
def test_article_head_body(self):
|
||||||
resp, count, first, last, name = self.server.group(self.GROUP_NAME)
|
resp, count, first, last, name = self.server.group(self.GROUP_NAME)
|
||||||
resp, head = self.server.head(last)
|
# Try to find an available article
|
||||||
|
for art_num in (last, first, last - 1):
|
||||||
|
try:
|
||||||
|
resp, head = self.server.head(art_num)
|
||||||
|
except nntplib.NNTPTemporaryError as e:
|
||||||
|
if not e.response.startswith("423 "):
|
||||||
|
raise
|
||||||
|
# "423 No such article" => choose another one
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.skipTest("could not find a suitable article number")
|
||||||
self.assertTrue(resp.startswith("221 "), resp)
|
self.assertTrue(resp.startswith("221 "), resp)
|
||||||
self.check_article_resp(resp, head, last)
|
self.check_article_resp(resp, head, art_num)
|
||||||
resp, body = self.server.body(last)
|
resp, body = self.server.body(art_num)
|
||||||
self.assertTrue(resp.startswith("222 "), resp)
|
self.assertTrue(resp.startswith("222 "), resp)
|
||||||
self.check_article_resp(resp, body, last)
|
self.check_article_resp(resp, body, art_num)
|
||||||
resp, article = self.server.article(last)
|
resp, article = self.server.article(art_num)
|
||||||
self.assertTrue(resp.startswith("220 "), resp)
|
self.assertTrue(resp.startswith("220 "), resp)
|
||||||
self.check_article_resp(resp, article, last)
|
self.check_article_resp(resp, article, art_num)
|
||||||
self.assertEqual(article.lines, head.lines + [b''] + body.lines)
|
self.assertEqual(article.lines, head.lines + [b''] + body.lines)
|
||||||
|
|
||||||
def test_capabilities(self):
|
def test_capabilities(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue