Page MenuHomePhabricator

testLinkMethods fails on Travis
Closed, DuplicatePublic

Description

______________________ 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: AssertionError

See: https://travis-ci.org/wikimedia/pywikibot-core/jobs/177817110#L6394-L6467

Related Objects

StatusSubtypeAssignedTask
ResolvedMagul
DuplicateMagul