______________________ 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, [])
E AssertionError: Element counts were not equal:
E
E Diff is 4835 characters long. Set self.maxDiff to None to see it.
tests/site_tests.py:524: AssertionErrorSee: https://travis-ci.org/wikimedia/pywikibot-core/jobs/177817110#L6394-L6467