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

Change subject: [FIX] Sametitle: Don't discard invalid namespaces
......................................................................


[FIX] Sametitle: Don't discard invalid namespaces

If the namespace was invalid, sametitle would've still just compared the
text after the 'namespace' so a page title like 'Foo:Bar' would result
in 'namespace main' and 'name is Bar' although it should've been 'name
is Foo:Bar' because 'Foo' is not a valid namespace.

Also modified the tests so this will be more visible in the future.

Change-Id: Idd42d63125fa2470374c0392e26cceac9e49bb30
---
M pywikibot/site.py
M tests/site_tests.py
2 files changed, 24 insertions(+), 15 deletions(-)

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



diff --git a/pywikibot/site.py b/pywikibot/site.py
index 009adeb..d83a098 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -818,11 +818,13 @@
         """
         def ns_split(title):
             """Separate the namespace from the name."""
-            if ':' not in title:
-                title = ':' + title
-            ns, _, name = title.partition(':')
-            ns = Namespace.lookup_name(ns, self.namespaces) or default_ns
-            return ns, name
+            ns, delim, name = title.partition(':')
+            if delim:
+                ns = Namespace.lookup_name(ns, self.namespaces)
+            if not delim or not ns:
+                return default_ns, title
+            else:
+                return ns, name
 
         if title1 == title2:
             return True
diff --git a/tests/site_tests.py b/tests/site_tests.py
index e738859..82e11f5 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -1905,7 +1905,7 @@
         self.assertEqual(item.id, 'Q5296')
 
 
-class TestSameTitleSite(TestCase):
+class TestSametitleSite(TestCase):
 
     """Test APISite.sametitle on sites with known behaviour."""
 
@@ -1924,27 +1924,34 @@
         }
     }
 
-    def check(self, site, case_sensitive):
-        self.assertEqual(site.sametitle('Foo', 'foo'), not case_sensitive)
-        self.assertTrue(site.sametitle('File:Foo', 'Image:Foo'))
-        self.assertTrue(site.sametitle(':Foo', 'Foo'))
-        self.assertFalse(site.sametitle('User:Foo', 'Foo'))
-
     def test_enwp(self):
-        self.check(self.get_site('enwp'), False)
+        self.assertTrue(self.get_site('enwp').sametitle('Foo', 'foo'))
         self.assertFalse(self.get_site('enwp').sametitle(
             'Template:Test template', 'Template:Test Template'))
 
     def test_dewp(self):
         site = self.get_site('dewp')
-        self.check(site, False)
+        self.assertTrue(site.sametitle('Foo', 'foo'))
         self.assertTrue(site.sametitle('Benutzer:Foo', 'User:Foo'))
         self.assertTrue(site.sametitle('Benutzerin:Foo', 'User:Foo'))
         self.assertTrue(site.sametitle('Benutzerin:Foo', 'Benutzer:Foo'))
 
     def test_enwt(self):
-        self.check(self.get_site('enwt'), True)
+        self.assertFalse(self.get_site('enwt').sametitle('Foo', 'foo'))
 
+    def test_general(self, code):
+        site = self.get_site(code)
+        self.assertTrue(site.sametitle('File:Foo', 'Image:Foo'))
+        self.assertTrue(site.sametitle(':Foo', 'Foo'))
+        self.assertFalse(site.sametitle('User:Foo', 'Foo'))
+        self.assertFalse(site.sametitle('User:Foo', 'Project:Foo'))
+
+        self.assertTrue(site.sametitle('Namespace:', 'Namespace:'))
+
+        self.assertFalse(site.sametitle('Invalid:Foo', 'Foo'))
+        self.assertFalse(site.sametitle('Invalid1:Foo', 'Invalid2:Foo'))
+        self.assertFalse(site.sametitle('Invalid:Foo', ':Foo'))
+        self.assertFalse(site.sametitle('Invalid:Foo', 'Invalid:foo'))
 
 if __name__ == '__main__':
     try:

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Idd42d63125fa2470374c0392e26cceac9e49bb30
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to