mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +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 @@ def _check_art_dict(self, art_dict):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    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 @@ def test_over(self):
 | 
				
			||||||
        # 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 @@ def check_article_resp(self, resp, article, art_num=None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    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