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 <jayvdb(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>