John Vandenberg has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/230486

Change subject: Add fallback for v1.14 siteinfo 'fileextensions'
......................................................................

Add fallback for v1.14 siteinfo 'fileextensions'

Change-Id: I97892edc04f9548aba15b69206a7b8ecaa98a901
---
M pywikibot/site.py
M tests/site_tests.py
M tests/utils.py
3 files changed, 33 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/86/230486/1

diff --git a/pywikibot/site.py b/pywikibot/site.py
index 695359c..be830ba 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1270,6 +1270,9 @@
                 'levels': ['', 'autoconfirmed', 'sysop'],
                 'types': ['create', 'edit', 'move', 'upload']
             }
+        elif key == 'fileextensions':
+            # the default file extensions in MediaWiki
+            return [{'ext': ext} for ext in ['png', 'gif', 'jpg', 'jpeg']]
         else:
             return pywikibot.tools.EMPTY_DEFAULT
 
diff --git a/tests/site_tests.py b/tests/site_tests.py
index 0b9c726..84fdf31 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -33,7 +33,7 @@
     DefaultWikidataClientTestCase,
     AlteredDefaultSiteTestCase,
 )
-from tests.utils import allowed_failure, allowed_failure_if
+from tests.utils import allowed_failure, allowed_failure_if, entered_loop
 from tests.basepage_tests import BasePageLoadRevisionsCachingTestBase
 
 if sys.version_info[0] > 2:
@@ -1765,7 +1765,7 @@
         self.assertEqual(len(mypage._revisions), 12)
 
 
-class TestSiteInfo(WikimediaDefaultSiteTestCase):
+class TestSiteInfo(DefaultSiteTestCase):
 
     """Test cases for Site metadata and capabilities."""
 
@@ -1788,20 +1788,31 @@
         self.assertEqual(mysite.case(), mysite.siteinfo['case'])
         self.assertEqual(re.findall("\$1", mysite.siteinfo['articlepath']), 
["$1"])
 
-        def entered_loop(iterable):
-            for iterable_item in iterable:
-                return True
-            return False
-
+    def test_properties_with_defaults(self):
+        """Test the siteinfo properties with defaults."""
+        # This does not test that the defaults work correct,
+        # unless the default site is a version needing these defaults
+        # 'fileextensions' introduced in v1.14:
+        self.assertIsInstance(self.site.siteinfo.get('fileextensions'), list)
+        self.assertIn('fileextensions', self.site.siteinfo)
+        self.assertIn({'ext': 'png'}, self.site.siteinfo['fileextensions'])
+        # 'restrictions' introduced in v1.23:
+        mysite = self.site
         self.assertIsInstance(mysite.siteinfo.get('restrictions'), dict)
         self.assertIn('restrictions', mysite.siteinfo)
-        # the following line only works in 1.23+
-        self.assertTrue(mysite.siteinfo.is_recognised('restrictions'))
-        del mysite.siteinfo._cache['restrictions']
-        self.assertIsInstance(mysite.siteinfo.get('restrictions', 
cache=False), dict)
-        self.assertNotIn('restrictions', mysite.siteinfo)
+        self.assertIn('cascadinglevels', self.site.siteinfo['restrictions'])
 
+    def test_no_cache(self):
+        """Test siteinfo caching can be disabled."""
+        if 'fileextensions' in self.site.siteinfo._cache:
+            del self.site.siteinfo._cache['fileextensions']
+        self.site.siteinfo.get('fileextensions', cache=False)
+        self.assertNotIn('fileextensions', self.site.siteinfo)
+
+    def test_not_exists(self):
+        """Test accessing a property not in siteinfo."""
         not_exists = 'this-property-does-not-exist'
+        mysite = self.site
         self.assertRaises(KeyError, mysite.siteinfo.__getitem__, not_exists)
         self.assertNotIn(not_exists, mysite.siteinfo)
         self.assertEqual(len(mysite.siteinfo.get(not_exists)), 0)
diff --git a/tests/utils.py b/tests/utils.py
index ae5face..c882d61 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -119,6 +119,13 @@
     return gen
 
 
+def entered_loop(iterable):
+    """Return True if iterable contains items."""
+    for iterable_item in iterable:
+        return True
+    return False
+
+
 class WarningSourceSkipContextManager(warnings.catch_warnings):
 
     """

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I97892edc04f9548aba15b69206a7b8ecaa98a901
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <[email protected]>

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

Reply via email to