[Pywikipedia-l] SVN: [6013] branches/rewrite/pywikibot/tests/site_tests.py

russblau at svn.wikimedia.org russblau at svn.wikimedia.org
Thu Oct 23 21:55:15 UTC 2008


Revision: 6013
Author:   russblau
Date:     2008-10-23 21:55:14 +0000 (Thu, 23 Oct 2008)

Log Message:
-----------
still more tests

Modified Paths:
--------------
    branches/rewrite/pywikibot/tests/site_tests.py

Modified: branches/rewrite/pywikibot/tests/site_tests.py
===================================================================
--- branches/rewrite/pywikibot/tests/site_tests.py	2008-10-23 21:07:57 UTC (rev 6012)
+++ branches/rewrite/pywikibot/tests/site_tests.py	2008-10-23 21:55:14 UTC (rev 6013)
@@ -12,6 +12,7 @@
 
 import unittest
 import pywikibot
+import warnings
 
 mysite = pywikibot.Site()
 mainpage = pywikibot.Page(pywikibot.Link("Main Page", mysite))
@@ -114,16 +115,20 @@
         self.assertType(mysite.logged_in(True), bool)
         self.assertType(mysite.userinfo, dict)
         self.assertType(mysite.is_blocked(), bool)
-        self.assertType(mysite.is_blocked(True), bool)
         self.assertType(mysite.messages(), bool)
         self.assertType(mysite.has_right("edit"), bool)
         self.assertFalse(mysite.has_right("nonexistent_right"))
-        self.assertType(mysite.has_right("edit", True), bool)
-        self.assertFalse(mysite.has_right("nonexistent_right", True))
         self.assertType(mysite.has_group("bots"), bool)
         self.assertFalse(mysite.has_group("nonexistent_group"))
-        self.assertType(mysite.has_group("bots", True), bool)
-        self.assertFalse(mysite.has_group("nonexistent_group", True))
+        try:
+            self.assertType(mysite.is_blocked(True), bool)
+            self.assertType(mysite.has_right("edit", True), bool)
+            self.assertFalse(mysite.has_right("nonexistent_right", True))
+            self.assertType(mysite.has_group("bots", True), bool)
+            self.assertFalse(mysite.has_group("nonexistent_group", True))
+        except pywikibot.NoUsername:
+            warnings.warn(
+             "Cannot test Site methods for sysop; no sysop account configured.")
         for msg in ("1movedto2", "about", "aboutpage", "aboutsite",
                     "accesskey-n-portal"):
             self.assertTrue(mysite.has_mediawiki_message(msg))
@@ -450,34 +455,34 @@
         for t in xrange(1, len(timestamps)):
             self.assertTrue(timestamps[t] >= timestamps[t-1])
 
-        for block in mysite.blocks(starttime="2008-01-01T00:00:01", limit=5):
+        for block in mysite.blocks(starttime="2008-07-01T00:00:01Z", limit=5):
             self.assertType(block, dict)
             for prop in props:
                 self.assertTrue(prop in block)
-        for block in mysite.blocks(endtime="2008-01-31T23:59:59", limit=5):
+        for block in mysite.blocks(endtime="2008-07-31T23:59:59Z", limit=5):
             self.assertType(block, dict)
             for prop in props:
                 self.assertTrue(prop in block)
-        for block in mysite.blocks(starttime="2008-02-02T00:00:01",
-                                   endtime="2008-02-02T23:59:59",
+        for block in mysite.blocks(starttime="2008-08-02T00:00:01Z",
+                                   endtime="2008-08-02T23:59:59Z",
                                    reverse=True, limit=5):
             self.assertType(block, dict)
             for prop in props:
                 self.assertTrue(prop in block)
-        for block in mysite.blocks(starttime="2008-02-03T23:59:59",
-                                   endtime="2008-02-03T00:00:01",
+        for block in mysite.blocks(starttime="2008-08-03T23:59:59Z",
+                                   endtime="2008-08-03T00:00:01Z",
                                    limit=5):
             self.assertType(block, dict)
             for prop in props:
                 self.assertTrue(prop in block)
         # starttime earlier than endtime
         self.assertRaises(pywikibot.Error, mysite.blocks,
-                          starttime="2008-02-03T00:00:01",
-                          endtime="2008-02-03T23:59:59", limit=5)
+                          starttime="2008-08-03T00:00:01Z",
+                          endtime="2008-08-03T23:59:59Z", limit=5)
         # reverse: endtime earlier than starttime
         self.assertRaises(pywikibot.Error, mysite.blocks,
-                          starttime="2008-02-03T23:59:59",
-                          endtime="2008-02-03T00:00:01", reverse=True, limit=5)
+                          starttime="2008-08-03T23:59:59Z",
+                          endtime="2008-08-03T00:00:01Z", reverse=True, limit=5)
         for block in mysite.blocks(users=mysite.user(), limit=5):
             self.assertType(block, dict)
             self.assertEqual(block['user'], mysite.user())
@@ -528,32 +533,32 @@
         for entry in mysite.logevents(user=mysite.user(), limit=3):
             self.assertTrue("user" in entry
                             and entry["user"] == mysite.user())
-        for entry in mysite.logevents(start="2008-01-01T00:00:01", limit=5):
+        for entry in mysite.logevents(start="2008-09-01T00:00:01Z", limit=5):
             self.assertType(entry, dict)
-            self.assertTrue(entry['timestamp'] <= "2008-01-01T00:00:01Z")
-        for entry in mysite.logevents(end="2008-01-31T23:59:59", limit=5):
+            self.assertTrue(entry['timestamp'] <= "2008-09-01T00:00:01Z")
+        for entry in mysite.logevents(end="2008-09-02T23:59:59Z", limit=5):
             self.assertType(entry, dict)
-            self.assertTrue(entry['timestamp'] >= "2008-01-31T23:59:59Z")
-        for entry in mysite.logevents(start="2008-02-02T00:00:01",
-                                      end="2008-02-02T23:59:59",
+            self.assertTrue(entry['timestamp'] >= "2008-09-02T23:59:59Z")
+        for entry in mysite.logevents(start="2008-02-02T00:00:01Z",
+                                      end="2008-02-02T23:59:59Z",
                                       reverse=True, limit=5):
             self.assertType(entry, dict)
             self.assertTrue("2008-02-02T00:00:01Z" <= entry['timestamp']
                                 <= "2008-02-02T23:59:59Z")
-        for entry in mysite.logevents(start="2008-02-03T23:59:59",
-                                      end="2008-02-03T00:00:01",
+        for entry in mysite.logevents(start="2008-02-03T23:59:59Z",
+                                      end="2008-02-03T00:00:01Z",
                                       limit=5):
             self.assertType(entry, dict)
             self.assertTrue("2008-02-03T00:00:01Z" <= entry['timestamp']
                                 <= "2008-02-03T23:59:59Z")
         # starttime earlier than endtime
         self.assertRaises(pywikibot.Error, mysite.logevents,
-                          start="2008-02-03T00:00:01",
-                          end="2008-02-03T23:59:59", limit=5)
+                          start="2008-02-03T00:00:01Z",
+                          end="2008-02-03T23:59:59Z", limit=5)
         # reverse: endtime earlier than starttime
         self.assertRaises(pywikibot.Error, mysite.logevents,
-                          start="2008-02-03T23:59:59",
-                          end="2008-02-03T00:00:01", reverse=True, limit=5)
+                          start="2008-02-03T23:59:59Z",
+                          end="2008-02-03T00:00:01Z", reverse=True, limit=5)
 
     def testRecentchanges(self):
         """Test the site.recentchanges() method"""
@@ -592,12 +597,12 @@
                                 <= "2008-10-05T23:59:59Z")
         # start earlier than end
         self.assertRaises(pywikibot.Error, mysite.recentchanges,
-                          start="2008-02-03T00:00:01",
-                          end="2008-02-03T23:59:59", limit=5)
+                          start="2008-02-03T00:00:01Z",
+                          end="2008-02-03T23:59:59Z", limit=5)
         # reverse: end earlier than start
         self.assertRaises(pywikibot.Error, mysite.recentchanges,
-                          start="2008-02-03T23:59:59",
-                          end="2008-02-03T00:00:01", reverse=True, limit=5)
+                          start="2008-02-03T23:59:59Z",
+                          end="2008-02-03T00:00:01Z", reverse=True, limit=5)
         for change in mysite.recentchanges(namespaces=[6,7], limit=5):
             self.assertType(change, dict)
             self.assertTrue("title" in change and "ns" in change)
@@ -714,13 +719,13 @@
         # start earlier than end
         self.assertRaises(pywikibot.Error, mysite.usercontribs,
                           userprefix="Jim",
-                          start="2008-10-03T00:00:01",
-                          end="2008-10-03T23:59:59", limit=5)
+                          start="2008-10-03T00:00:01Z",
+                          end="2008-10-03T23:59:59Z", limit=5)
         # reverse: end earlier than start
         self.assertRaises(pywikibot.Error, mysite.usercontribs,
                           userprefix="Jim",
-                          start="2008-10-03T23:59:59",
-                          end="2008-10-03T00:00:01", reverse=True, limit=5)
+                          start="2008-10-03T23:59:59Z",
+                          end="2008-10-03T00:00:01Z", reverse=True, limit=5)
 
         for contrib in mysite.usercontribs(user=mysite.user(),
                                            namespaces=14, limit=5):
@@ -748,35 +753,149 @@
         self.assertTrue(len(wl) <= 10)
         self.assertTrue(all(isinstance(rev, dict)
                             for rev in wl))
+        for rev in mysite.watchlist_revs(start="2008-10-11T01:02:03Z",
+                                         limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] <= "2008-10-11T01:02:03Z")
+        for rev in mysite.watchlist_revs(end="2008-04-01T02:03:04Z",
+                                         limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] >= "2008-10-11T02:03:04Z")
+        for rev in mysite.watchlist_revs(start="2008-10-11T03:05:07Z",
+                                         limit=5, reverse=True):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] >= "2008-10-11T03:05:07Z")
+        for rev in mysite.watchlist_revs(end="2008-10-11T04:06:08Z",
+                                         limit=5, reverse=True):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] <= "2008-10-11T04:06:08Z")
+        for rev in mysite.watchlist_revs(start="2008-10-13T11:59:59Z",
+                                         end="2008-10-13T00:00:01Z",
+                                         limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("2008-10-13T00:00:01Z" <= rev['timestamp']
+                                <= "2008-10-13T11:59:59Z")
+        for rev in mysite.watchlist_revs(start="2008-10-15T06:00:01Z",
+                                         end="2008-10-15T23:59:59Z",
+                                         reverse=True, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("2008-10-15T06:00:01Z" <= rev['timestamp']
+                                <= "2008-10-15T23:59:59Z")
+        # start earlier than end
+        self.assertRaises(pywikibot.Error, mysite.watchlist_revs,
+                          start="2008-09-03T00:00:01Z",
+                          end="2008-09-03T23:59:59Z", limit=5)
+        # reverse: end earlier than start
+        self.assertRaises(pywikibot.Error, mysite.watchlist_revs,
+                          start="2008-09-03T23:59:59Z",
+                          end="2008-09-03T00:00:01Z", reverse=True, limit=5)
+        for rev in mysite.watchlist_revs(namespaces=[6,7], limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("title" in rev and "ns" in rev)
+            title = rev['title']
+            self.assertTrue(":" in title)
+            prefix = title[ : title.index(":")]
+            self.assertTrue(mysite.ns_index(prefix) in [6,7])
+            self.assertTrue(rev["ns"] in [6,7])
+        for rev in mysite.watchlist_revs(showMinor=True, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("minor" in rev)
+        for rev in mysite.watchlist_revs(showMinor=False, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("minor" not in rev)
+        for rev in mysite.watchlist_revs(showBot=True, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("bot" in rev)
+        for rev in mysite.watchlist_revs(showBot=False, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("bot" not in rev)
+        for rev in mysite.watchlist_revs(showAnon=True, limit=5):
+            self.assertType(rev, dict)
+        for rev in mysite.watchlist_revs(showAnon=False, limit=5):
+            self.assertType(rev, dict)
 
     def testDeletedrevs(self):
         """Test the site.deletedrevs() method"""
 
         if not mysite.logged_in(True):
-            return
+            try:
+                mysite.login(True)
+            except pywikibot.NoUsername:
+                warnings.warn(
+                 "Cannot test Site.deleted_revs; no sysop account configured.")
+                return
         dr = list(mysite.deletedrevs(limit=10))
         self.assertTrue(len(dr) <= 10)
         self.assertTrue(all(isinstance(rev, dict)
                             for rev in dr))
         dr2 = list(mysite.deletedrevs(titles=mainpage.title(withSection=False),
-                                     limit=10))
+                                      limit=10))
         self.assertTrue(len(dr2) <= 10)
         self.assertTrue(all(isinstance(rev, dict)
                             for rev in dr2))
+        for rev in mysite.deletedrevs(start="2008-10-11T01:02:03Z",
+                                      limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] <= "2008-10-11T01:02:03Z")
+        for rev in mysite.deletedrevs(end="2008-04-01T02:03:04Z",
+                                      limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] >= "2008-10-11T02:03:04Z")
+        for rev in mysite.deletedrevs(start="2008-10-11T03:05:07Z",
+                                      limit=5, reverse=True):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] >= "2008-10-11T03:05:07Z")
+        for rev in mysite.deletedrevs(end="2008-10-11T04:06:08Z",
+                                      limit=5, reverse=True):
+            self.assertType(rev, dict)
+            self.assertTrue(rev['timestamp'] <= "2008-10-11T04:06:08Z")
+        for rev in mysite.deletedrevs(start="2008-10-13T11:59:59Z",
+                                      end="2008-10-13T00:00:01Z",
+                                      limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("2008-10-13T00:00:01Z" <= rev['timestamp']
+                                <= "2008-10-13T11:59:59Z")
+        for rev in mysite.deletedrevs(start="2008-10-15T06:00:01Z",
+                                      end="2008-10-15T23:59:59Z",
+                                      reverse=True, limit=5):
+            self.assertType(rev, dict)
+            self.assertTrue("2008-10-15T06:00:01Z" <= rev['timestamp']
+                                <= "2008-10-15T23:59:59Z")
+        # start earlier than end
+        self.assertRaises(pywikibot.Error, mysite.deletedrevs,
+                          start="2008-09-03T00:00:01Z",
+                          end="2008-09-03T23:59:59Z", limit=5)
+        # reverse: end earlier than start
+        self.assertRaises(pywikibot.Error, mysite.deletedrevs,
+                          start="2008-09-03T23:59:59Z",
+                          end="2008-09-03T00:00:01Z", reverse=True, limit=5)
 
     def testUsers(self):
         """Test the site.users() method"""
 
-        us = list(mysite.users([mysite.user()]))
+        us = list(mysite.users(mysite.user()))
         self.assertEqual(len(us), 1)
         self.assertType(us[0], dict)
+        for user in mysite.users(
+                ["Jimbo Wales", "Brion VIBBER", "Tim Starling"]):
+            self.assertType(user, dict)
+            self.assertTrue(user["name"]
+                            in ["Jimbo Wales", "Brion VIBBER", "Tim Starling"])
 
     def testRandompages(self):
         """Test the site.randompages() method"""
+
         rn = list(mysite.randompages(limit=10))
         self.assertTrue(len(rn) <= 10)
         self.assertTrue(all(isinstance(a_page, pywikibot.Page)
                             for a_page in rn))
+        self.assertFalse(all(a_page.isRedirectPage() for a_page in rn))
+        for rndpage in mysite.randompages(limit=5, redirects=True):
+            self.assertType(rndpage, pywikibot.Page)
+            self.assertTrue(rndpage.isRedirectPage())
+        for rndpage in mysite.randompages(limit=5, namespaces=[6, 7]):
+            self.assertType(rndpage, pywikibot.Page)
+            self.assertTrue(rndpage.namespace() in [6, 7])
 
 
 if __name__ == '__main__':





More information about the Pywikipedia-l mailing list