From d28f790b69190192f7f8412f182b57c5894fade6 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 18 Nov 2010 15:11:43 +0000 Subject: Make test_nntplib more robust when the "last" article in a group can't be retrieved --- Lib/test/test_nntplib.py | 35 ++++++++++++++++++++++++++--------- 1 file 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): -- cgit v0.12