jenkins-bot has submitted this change and it was merged.

Change subject: Split TestUserContribs between user and non-user
......................................................................


Split TestUserContribs between user and non-user

TestUserContribs method had high chance of causing a database error,
which now only occurs in new methods with specific invocations.

Bug: T78668
Change-Id: I7acdab9cab50e2edce1865b7aca6bba4470db639
(manually cherry-pick of ee054a56)
---
M tests/site_tests.py
1 file changed, 95 insertions(+), 41 deletions(-)

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



diff --git a/tests/site_tests.py b/tests/site_tests.py
index 20be28b..0909100 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -1031,7 +1031,14 @@
                 raise unittest.SkipTest("gsrsearch returned timeout on site: 
%r" % e)
             raise
 
-    def testUsercontribs(self):
+
+class TestUserContribsAsUser(DefaultSiteTestCase):
+
+    """Test site method site.usercontribs() with bot user."""
+
+    user = True
+
+    def test_basic(self):
         """Test the site.usercontribs() method."""
         mysite = self.get_site()
         uc = list(mysite.usercontribs(user=mysite.user(), total=10))
@@ -1040,39 +1047,98 @@
                             for contrib in uc))
         self.assertTrue(all('user' in contrib and contrib['user'] == 
mysite.user()
                             for contrib in uc))
+
+    def test_namespaces(self):
+        """Test the site.usercontribs() method using namespaces."""
+        mysite = self.get_site()
+        for contrib in mysite.usercontribs(user=mysite.user(),
+                                           namespaces=14, total=5):
+            self.assertIsInstance(contrib, dict)
+            self.assertIn("title", contrib)
+            self.assertTrue(contrib["title"].startswith(mysite.namespace(14)))
+
+        for contrib in mysite.usercontribs(user=mysite.user(),
+                                           namespaces=[10, 11], total=5):
+            self.assertIsInstance(contrib, dict)
+            self.assertIn("title", contrib)
+            self.assertIn(contrib["ns"], (10, 11))
+
+    def test_show_minor(self):
+        """Test the site.usercontribs() method using showMinor."""
+        mysite = self.get_site()
+        for contrib in mysite.usercontribs(user=mysite.user(),
+                                           showMinor=True, total=5):
+            self.assertIsInstance(contrib, dict)
+            self.assertIn("minor", contrib)
+
+        for contrib in mysite.usercontribs(user=mysite.user(),
+                                           showMinor=False, total=5):
+            self.assertIsInstance(contrib, dict)
+            self.assertNotIn("minor", contrib)
+
+
+class TestUserContribsWithoutUser(DefaultSiteTestCase):
+
+    """Test site method site.usercontribs() without bot user."""
+
+    def test_user_prefix(self):
+        """Test the site.usercontribs() method with userprefix."""
+        mysite = self.get_site()
         for contrib in mysite.usercontribs(userprefix="John", total=5):
             self.assertIsInstance(contrib, dict)
             for key in ("user", "title", "ns", "pageid", "revid"):
                 self.assertIn(key, contrib)
             self.assertTrue(contrib["user"].startswith("John"))
-        for contrib in mysite.usercontribs(userprefix="Jane",
-                                           
start=pywikibot.Timestamp.fromISOformat("2008-10-06T01:02:03Z"),
-                                           total=5):
+
+    def test_user_prefix_range(self):
+        """Test the site.usercontribs() method."""
+        mysite = self.get_site()
+        for contrib in mysite.usercontribs(
+                userprefix='Jane',
+                
start=pywikibot.Timestamp.fromISOformat("2008-10-06T01:02:03Z"),
+                total=5):
             self.assertLessEqual(contrib['timestamp'], "2008-10-06T01:02:03Z")
-        for contrib in mysite.usercontribs(userprefix="Jane",
-                                           
end=pywikibot.Timestamp.fromISOformat("2008-10-07T02:03:04Z"),
-                                           total=5):
+
+        for contrib in mysite.usercontribs(
+                userprefix='Jane',
+                end=pywikibot.Timestamp.fromISOformat("2008-10-07T02:03:04Z"),
+                total=5):
             self.assertGreaterEqual(contrib['timestamp'], 
"2008-10-07T02:03:04Z")
-        for contrib in mysite.usercontribs(userprefix="Brion",
-                                           
start=pywikibot.Timestamp.fromISOformat("2008-10-08T03:05:07Z"),
-                                           total=5, reverse=True):
-            self.assertGreaterEqual(contrib['timestamp'], 
"2008-10-08T03:05:07Z")
-        for contrib in mysite.usercontribs(userprefix="Brion",
-                                           
end=pywikibot.Timestamp.fromISOformat("2008-10-09T04:06:08Z"),
-                                           total=5, reverse=True):
-            self.assertLessEqual(contrib['timestamp'], "2008-10-09T04:06:08Z")
-        for contrib in mysite.usercontribs(userprefix="Tim",
-                                           
start=pywikibot.Timestamp.fromISOformat("2008-10-10T11:59:59Z"),
-                                           
end=pywikibot.Timestamp.fromISOformat("2008-10-10T00:00:01Z"),
-                                           total=5):
+
+        for contrib in mysite.usercontribs(
+                userprefix='Tim',
+                
start=pywikibot.Timestamp.fromISOformat("2008-10-10T11:59:59Z"),
+                end=pywikibot.Timestamp.fromISOformat("2008-10-10T00:00:01Z"),
+                total=5):
             self.assertTrue(
                 "2008-10-10T00:00:01Z" <= contrib['timestamp'] <= 
"2008-10-10T11:59:59Z")
-        for contrib in mysite.usercontribs(userprefix="Tim",
-                                           
start=pywikibot.Timestamp.fromISOformat("2008-10-11T06:00:01Z"),
-                                           
end=pywikibot.Timestamp.fromISOformat("2008-10-11T23:59:59Z"),
-                                           reverse=True, total=5):
+
+    def test_user_prefix_reverse(self):
+        """Test the site.usercontribs() method with range reversed."""
+        mysite = self.get_site()
+        for contrib in mysite.usercontribs(
+                userprefix='Brion',
+                
start=pywikibot.Timestamp.fromISOformat("2008-10-08T03:05:07Z"),
+                total=5, reverse=True):
+            self.assertGreaterEqual(contrib['timestamp'], 
"2008-10-08T03:05:07Z")
+
+        for contrib in mysite.usercontribs(
+                userprefix='Brion',
+                end=pywikibot.Timestamp.fromISOformat("2008-10-09T04:06:08Z"),
+                total=5, reverse=True):
+            self.assertLessEqual(contrib['timestamp'], "2008-10-09T04:06:08Z")
+
+        for contrib in mysite.usercontribs(
+                userprefix='Tim',
+                
start=pywikibot.Timestamp.fromISOformat("2008-10-11T06:00:01Z"),
+                end=pywikibot.Timestamp.fromISOformat("2008-10-11T23:59:59Z"),
+                reverse=True, total=5):
             self.assertTrue(
                 "2008-10-11T06:00:01Z" <= contrib['timestamp'] <= 
"2008-10-11T23:59:59Z")
+
+    def test_invalid_range(self):
+        """Test the site.usercontribs() method with invalid parameters."""
+        mysite = self.get_site()
         # start earlier than end
         self.assertRaises(pywikibot.Error, mysite.usercontribs,
                           userprefix="Jim",
@@ -1084,24 +1150,12 @@
                           start="2008-10-03T23:59:59Z",
                           end="2008-10-03T00:00:01Z", reverse=True, total=5)
 
-        for contrib in mysite.usercontribs(user=mysite.user(),
-                                           namespaces=14, total=5):
-            self.assertIsInstance(contrib, dict)
-            self.assertIn("title", contrib)
-            self.assertTrue(contrib["title"].startswith(mysite.namespace(14)))
-        for contrib in mysite.usercontribs(user=mysite.user(),
-                                           namespaces=[10, 11], total=5):
-            self.assertIsInstance(contrib, dict)
-            self.assertIn("title", contrib)
-            self.assertIn(contrib["ns"], (10, 11))
-        for contrib in mysite.usercontribs(user=mysite.user(),
-                                           showMinor=True, total=5):
-            self.assertIsInstance(contrib, dict)
-            self.assertIn("minor", contrib)
-        for contrib in mysite.usercontribs(user=mysite.user(),
-                                           showMinor=False, total=5):
-            self.assertIsInstance(contrib, dict)
-            self.assertNotIn("minor", contrib)
+
+class SiteWatchlistRevsTestCase(DefaultSiteTestCase):
+
+    """Test site method watchlist_revs()."""
+
+    user = True
 
     def testWatchlistrevs(self):
         """Test the site.watchlist_revs() method."""

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I7acdab9cab50e2edce1865b7aca6bba4470db639
Gerrit-PatchSet: 3
Gerrit-Project: pywikibot/core
Gerrit-Branch: 2.0
Gerrit-Owner: John Vandenberg <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to