diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-18 15:11:43 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-18 15:11:43 (GMT) |
commit | d28f790b69190192f7f8412f182b57c5894fade6 (patch) | |
tree | 84b8843f800e03db9251a9b2e3fdbaf8a59e7ce6 /Lib/test/test_nntplib.py | |
parent | 8ce1f1ff83bf2521fc0f98a45aeb5904c69a1286 (diff) | |
download | cpython-d28f790b69190192f7f8412f182b57c5894fade6.zip cpython-d28f790b69190192f7f8412f182b57c5894fade6.tar.gz cpython-d28f790b69190192f7f8412f182b57c5894fade6.tar.bz2 |
Make test_nntplib more robust when the "last" article in a group can't be retrieved
Diffstat (limited to 'Lib/test/test_nntplib.py')
-rw-r--r-- | Lib/test/test_nntplib.py | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/Lib/test/test_nntplib.py b/Lib/test/test_nntplib.py index e97b9cc..97179cf 100644 --- a/Lib/test/test_nntplib.py +++ b/Lib/test/test_nntplib.py @@ -112,9 +112,13 @@ class NetworkedNNTPTestsMixin: def test_xover(self): 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] - self.assertEqual(art_num, last) + self.assertGreaterEqual(art_num, last - 5) + self.assertLessEqual(art_num, last) self._check_art_dict(art_dict) def test_over(self): @@ -127,7 +131,9 @@ class NetworkedNNTPTestsMixin: # The "start-end" article range form resp, lines = self.server.over((start, last)) 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) # XXX The "message_id" form is unsupported by gmane # 503 Overview by message-ID unsupported @@ -149,15 +155,26 @@ class NetworkedNNTPTestsMixin: def test_article_head_body(self): 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.check_article_resp(resp, head, last) - resp, body = self.server.body(last) + self.check_article_resp(resp, head, art_num) + resp, body = self.server.body(art_num) self.assertTrue(resp.startswith("222 "), resp) - self.check_article_resp(resp, body, last) - resp, article = self.server.article(last) + self.check_article_resp(resp, body, art_num) + resp, article = self.server.article(art_num) 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) def test_capabilities(self): |