jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/358484 )

Change subject: Split testLinkMethods in separate methods
......................................................................


Split testLinkMethods in separate methods

Plus other refactoring:
 - .issuperset() calls have been replaces by self.assertLessEqual
 - assertEqual(all(...)) have been replaced by for loops calling
   multiple self.assertX(...) functions
 - T69931 is marked as resolved, so the tests has been re-activated for
   beta; if it still fails, we can de-activate specific tests rather
   than the whole block.

Change-Id: I986d80d64c0909e43cbbee23d068602faecc6ecb
---
M tests/site_tests.py
1 file changed, 100 insertions(+), 66 deletions(-)

Approvals:
  jenkins-bot: Verified
  Xqt: Looks good to me, approved



diff --git a/tests/site_tests.py b/tests/site_tests.py
index 07c1b1a..2740a44 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -452,10 +452,15 @@
 
 
 class TestSiteGenerators(DefaultSiteTestCase):
-
     """Test cases for Site methods."""
 
     cached = True
+
+    def setUp(self):
+        """Initialize self.site and self.mainpage."""
+        super(TestSiteGenerators, self).setUp()
+        self.site = self.get_site()
+        self.mainpage = self.get_mainpage()
 
     def test_generator_namespace(self):
         """Test site._generator with namespaces."""
@@ -469,62 +474,111 @@
                               namespaces=1)
         self.assertEqual(gen.request['gblnamespace'], [1])
 
-    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]))
+    def test_pagereferences(self):
+        """Test Site.pagereferences."""
+        # pagereferences includes both backlinks and embeddedin
+        backlinks = set(self.site.pagebacklinks(self.mainpage, namespaces=[0]))
+        embedded = set(self.site.page_embeddedin(self.mainpage, 
namespaces=[0]))
+        refs = set(self.site.pagereferences(self.mainpage, namespaces=[0]))
+
+        self.assertLessEqual(backlinks, refs)
+        self.assertLessEqual(embedded, refs)
+        self.assertEqual(refs, backlinks | embedded)
+
+    def test_backlinks(self):
+        """Test Site.pagebacklinks."""
+        backlinks_ns_0 = set(self.site.pagebacklinks(
+            self.mainpage, namespaces=[0]))
+        backlinks_ns_0_2 = set(self.site.pagebacklinks(
+            self.mainpage, namespaces=[0, 2]))
+
         # only non-redirects:
-        filtered = set(mysite.pagebacklinks(mainpage, namespaces=0,
-                                            filterRedirects=False))
+        filtered = set(self.site.pagebacklinks(
+            self.mainpage, namespaces=0, filterRedirects=False))
         # only redirects:
-        redirs = set(mysite.pagebacklinks(mainpage, namespaces=0,
-                                          filterRedirects=True))
+        redirs = set(self.site.pagebacklinks(
+            self.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))
+        indirect = set(self.site.pagebacklinks(
+            self.mainpage, namespaces=[0], followRedirects=True, 
filterRedirects=False))
+
+        for bl in backlinks_ns_0:
+            self.assertIsInstance(bl, pywikibot.Page)
+
         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])))
+        self.assertLessEqual(filtered, backlinks_ns_0)
+        self.assertLessEqual(redirs, backlinks_ns_0)
+        self.assertLessEqual(backlinks_ns_0, backlinks_ns_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:
+    def test_embeddedin(self):
+        """Test Site.page_embeddedin."""
+        embedded_ns_0 = set(self.site.page_embeddedin(
+            self.mainpage, namespaces=[0]))
+        embedded_ns_0_2 = set(self.site.page_embeddedin(
+            self.mainpage, namespaces=[0, 2]))
+        redirs = set(self.site.page_embeddedin(
+            self.mainpage, filterRedirects=True, namespaces=[0]))
+        no_redirs = set(self.site.page_embeddedin(
+            self.mainpage, filterRedirects=False, namespaces=[0]))
+
+        for ei in embedded_ns_0:
             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))
+
+        self.assertLessEqual(redirs, embedded_ns_0)
+        self.assertLessEqual(no_redirs, embedded_ns_0)
+        self.assertLessEqual(embedded_ns_0, embedded_ns_0_2)
+
+    def test_pagecategories(self):
+        """Test Site.pagecategories."""
+        for cat in self.site.pagecategories(self.mainpage):
+            self.assertIsInstance(cat, pywikibot.Category)
+
+    def test_categorymembers(self):
+        """Test Site.categorymembers."""
+        cats = list(self.site.pagecategories(self.mainpage))
+        if len(cats) == 0:
+            self.skipTest("Main page is not in any categories.")
+        else:
+            for cm in self.site.categorymembers(cats[0]):
+                self.assertIsInstance(cm, pywikibot.Page)
+
+    def test_pageimages(self):
+        """Test Site.pageimages."""
+        for im in self.site.pageimages(self.mainpage):
+            self.assertIsInstance(im, pywikibot.FilePage)
+
+    def test_pagetemplates(self):
+        """Test Site.pagetemplates."""
+        pagetemplates_all = set(self.site.pagetemplates(self.mainpage))
+        pagetemplates_ns_10 = set(self.site.pagetemplates(self.mainpage, 
namespaces=[10]))
+
+        for te in pagetemplates_all:
+            self.assertIsInstance(te, pywikibot.Page)
+
+        self.assertLessEqual(pagetemplates_ns_10, pagetemplates_all)
+
+    def test_pagelanglinks(self):
+        """Test Site.pagelanglinks."""
+        for ll in self.site.pagelanglinks(self.mainpage):
+            self.assertIsInstance(ll, pywikibot.Link)
+
+    def test_page_extlinks(self):
+        """Test Site.extlinks."""
+        for el in self.site.page_extlinks(self.mainpage):
+            self.assertIsInstance(el, basestring)
+
+    def test_pagelinks(self):
+        """Test Site.pagelinks."""
+        links = set(self.site.pagelinks(self.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]))
+        namespace_links = set(self.site.pagelinks(self.mainpage, 
namespaces=[0, 1]))
         if namespace_links - links:
             unittest_print(
                 'FAILURE wrt T92856:\nSym. difference: "{0}"'.format(
@@ -533,31 +587,11 @@
                                          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)):
+            set(self.site.pagelinks(self.mainpage, namespaces=[0, 1])) - 
links, [])
+        for target in self.site.preloadpages(
+                self.site.pagelinks(self.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]))))
-        # test pagelanglinks
-        for ll in mysite.pagelanglinks(mainpage):
-            self.assertIsInstance(ll, pywikibot.Link)
-        # test page_extlinks
-        self.assertTrue(all(isinstance(el, basestring)
-                            for el in mysite.page_extlinks(mainpage)))
 
     def test_allpages(self):
         """Test the site.allpages() method."""

-- 
To view, visit https://gerrit.wikimedia.org/r/358484
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I986d80d64c0909e43cbbee23d068602faecc6ecb
Gerrit-PatchSet: 7
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <valhall...@arctus.nl>
Gerrit-Reviewer: John Vandenberg <jay...@gmail.com>
Gerrit-Reviewer: Magul <tomasz.magul...@gmail.com>
Gerrit-Reviewer: Xqt <i...@gno.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to