______________________ TestSiteGenerators.testLinkMethods ______________________ self = <tests.site_tests.TestSiteGenerators testMethod=testLinkMethods> def testLinkMethods(self): """Test site methods for getting links to and from a page.""" if self.site.family.name == 'wpbeta': raise unittest.SkipTest('Test fails on betawiki; T69931') mysite = self.get_site() mainpage = self.get_mainpage() backlinks = set(mysite.pagebacklinks(mainpage, namespaces=[0])) # only non-redirects: filtered = set(mysite.pagebacklinks(mainpage, namespaces=0, filterRedirects=False)) # only redirects: redirs = set(mysite.pagebacklinks(mainpage, namespaces=0, filterRedirects=True)) # including links to redirect pages (but not the redirects): indirect = set(mysite.pagebacklinks(mainpage, namespaces=[0], followRedirects=True, filterRedirects=False)) self.assertEqual(filtered & redirs, set([])) self.assertEqual(indirect & redirs, set([])) self.assertLessEqual(filtered, indirect) self.assertLessEqual(filtered, backlinks) self.assertLessEqual(redirs, backlinks) self.assertLessEqual( backlinks, set(self.site.pagebacklinks(mainpage, namespaces=[0, 2]))) # pagereferences includes both backlinks and embeddedin embedded = set(mysite.page_embeddedin(mainpage, namespaces=[0])) refs = set(mysite.pagereferences(mainpage, namespaces=[0])) self.assertTrue(backlinks.issubset(refs)) self.assertTrue(embedded.issubset(refs)) for bl in backlinks: self.assertIsInstance(bl, pywikibot.Page) self.assertIn(bl, refs) for ei in embedded: self.assertIsInstance(ei, pywikibot.Page) self.assertIn(ei, refs) for ref in refs: self.assertIn(ref, backlinks | embedded) # test embeddedin arguments self.assertTrue(embedded.issuperset( set(mysite.page_embeddedin(mainpage, filterRedirects=True, namespaces=[0])))) self.assertTrue(embedded.issuperset( set(mysite.page_embeddedin(mainpage, filterRedirects=False, namespaces=[0])))) self.assertTrue(embedded.issubset( set(mysite.page_embeddedin(mainpage, namespaces=[0, 2])))) links = set(mysite.pagelinks(mainpage)) for pl in links: self.assertIsInstance(pl, pywikibot.Page) # test links arguments # TODO: There have been build failures because the following assertion # wasn't true. Bug: T92856 # Example: https://travis-ci.org/wikimedia/pywikibot-core/jobs/54552081#L505 namespace_links = set(mysite.pagelinks(mainpage, namespaces=[0, 1])) if namespace_links - links: unittest_print( 'FAILURE wrt T92856:\nSym. difference: "{0}"'.format( '", "'.join( '{0}@{1}'.format(link.namespace(), link.title(withNamespace=False)) for link in namespace_links ^ links))) self.assertCountEqual( set(mysite.pagelinks(mainpage, namespaces=[0, 1])) - links, []) for target in mysite.preloadpages(mysite.pagelinks(mainpage, follow_redirects=True, total=5)): self.assertIsInstance(target, pywikibot.Page) self.assertFalse(target.isRedirectPage()) # test pagecategories for cat in mysite.pagecategories(mainpage): self.assertIsInstance(cat, pywikibot.Category) for cm in mysite.categorymembers(cat): self.assertIsInstance(cat, pywikibot.Page) # test pageimages self.assertTrue(all(isinstance(im, pywikibot.FilePage) for im in mysite.pageimages(mainpage))) # test pagetemplates self.assertTrue(all(isinstance(te, pywikibot.Page) for te in mysite.pagetemplates(mainpage))) self.assertTrue(set(mysite.pagetemplates(mainpage)).issuperset( > set(mysite.pagetemplates(mainpage, namespaces=[10])))) E AssertionError: False is not true tests/site_tests.py:542: AssertionError
see e.g.: https://travis-ci.org/wikimedia/pywikibot-core/jobs/184654277#L3800