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

Change subject: [FIX] Tests: Actually do dry site tests
......................................................................


[FIX] Tests: Actually do dry site tests

Because the metaclass didn't check if 'dry' was selected via a subclass
those tests weren't done at all with nose. This sets 'dry' then and also fixes
all tests which implicitly loaded the site and thus failed.

Bug: 72885
Change-Id: I7010d45d2e99f123528465bbc236e7e08fdc721d
---
M tests/api_tests.py
M tests/aspects.py
M tests/dry_api_tests.py
M tests/link_tests.py
4 files changed, 68 insertions(+), 58 deletions(-)

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



diff --git a/tests/api_tests.py b/tests/api_tests.py
index 96afc5a..a41e74d 100644
--- a/tests/api_tests.py
+++ b/tests/api_tests.py
@@ -18,7 +18,18 @@
 )
 
 
-class TestApiFunctions(DefaultDrySiteTestCase):
+class TestApiFunctions(DefaultSiteTestCase):
+
+    """API Request object test class."""
+
+    def testObjectCreation(self):
+        """Test api.Request() constructor with implicit site creation."""
+        req = api.Request(action="test", foo="", bar="test")
+        self.assertTrue(req)
+        self.assertEqual(req.site, self.get_site())
+
+
+class TestDryApiFunctions(DefaultDrySiteTestCase):
 
     """API Request object test class."""
 
@@ -27,8 +38,6 @@
         mysite = self.get_site()
         req = api.Request(site=mysite, action="test", foo="", bar="test")
         self.assertTrue(req)
-        self.assertEqual(req.site, mysite)
-        req = api.Request(action="test", foo="", bar="test")
         self.assertEqual(req.site, mysite)
         self.assertIn("foo", req._params)
         self.assertEqual(req["bar"], ["test"])
diff --git a/tests/aspects.py b/tests/aspects.py
index e1b2900..ea44585 100644
--- a/tests/aspects.py
+++ b/tests/aspects.py
@@ -456,7 +456,7 @@
         # Inherit superclass attributes
         for base in bases:
             for key in ('pwb', 'net', 'site', 'wikibase', 'user', 'write',
-                        'sites', 'family', 'code',
+                        'sites', 'family', 'code', 'dry',
                         'cached', 'cacheinfo'):
                 if hasattr(base, key) and key not in dct:
                     # print('%s has %s; copying to %s'
diff --git a/tests/dry_api_tests.py b/tests/dry_api_tests.py
index 38ced9e..cc7e876 100644
--- a/tests/dry_api_tests.py
+++ b/tests/dry_api_tests.py
@@ -212,7 +212,8 @@
 
     def test_upload_object(self):
         """Test Request object prepared to upload."""
-        req = Request(action="upload", file='MP_sounds.png', mime=True,
+        req = Request(site=self.get_site(), action="upload",
+                      file='MP_sounds.png', mime=True,
                       filename=os.path.join(_data_dir, 'MP_sounds.png'))
         self.assertEqual(req.mime, True)
 
@@ -223,8 +224,8 @@
 
     def test_query_constructor(self):
         """Test QueryGenerator constructor."""
-        qGen1 = QueryGenerator(action="query", meta="siteinfo")
-        qGen2 = QueryGenerator(meta="siteinfo")
+        qGen1 = QueryGenerator(site=self.get_site(), action="query", 
meta="siteinfo")
+        qGen2 = QueryGenerator(site=self.get_site(), meta="siteinfo")
         self.assertEqual(str(qGen1.request), str(qGen2.request))
 
 
diff --git a/tests/link_tests.py b/tests/link_tests.py
index 6cf9fb0..cb99fe1 100644
--- a/tests/link_tests.py
+++ b/tests/link_tests.py
@@ -28,76 +28,76 @@
     """
 
     def test_valid(self):
-        self.assertEqual(Link('Sandbox').title, 'Sandbox')
-        self.assertEqual(Link('A "B"').title, 'A "B"')
-        self.assertEqual(Link('A \'B\'').title, 'A \'B\'')
-        self.assertEqual(Link('.com').title, '.com')
-        self.assertEqual(Link('~').title, '~')
-        self.assertEqual(Link('"').title, '"')
-        self.assertEqual(Link('\'').title, '\'')
-        self.assertEqual(Link('Talk:Sandbox').title, 'Sandbox')
-        self.assertEqual(Link('Talk:Foo:Sandbox').title, 'Foo:Sandbox')
-        self.assertEqual(Link('File:Example.svg').title, 'Example.svg')
-        self.assertEqual(Link('File_talk:Example.svg').title, 'Example.svg')
-        self.assertEqual(Link('Foo/.../Sandbox').title, 'Foo/.../Sandbox')
-        self.assertEqual(Link('Sandbox/...').title, 'Sandbox/...')
-        self.assertEqual(Link('A~~').title, 'A~~')
-        self.assertEqual(Link(':A').title, 'A')
+        self.assertEqual(Link('Sandbox', self.get_site()).title, 'Sandbox')
+        self.assertEqual(Link('A "B"', self.get_site()).title, 'A "B"')
+        self.assertEqual(Link('A \'B\'', self.get_site()).title, 'A \'B\'')
+        self.assertEqual(Link('.com', self.get_site()).title, '.com')
+        self.assertEqual(Link('~', self.get_site()).title, '~')
+        self.assertEqual(Link('"', self.get_site()).title, '"')
+        self.assertEqual(Link('\'', self.get_site()).title, '\'')
+        self.assertEqual(Link('Talk:Sandbox', self.get_site()).title, 
'Sandbox')
+        self.assertEqual(Link('Talk:Foo:Sandbox', self.get_site()).title, 
'Foo:Sandbox')
+        self.assertEqual(Link('File:Example.svg', self.get_site()).title, 
'Example.svg')
+        self.assertEqual(Link('File_talk:Example.svg', self.get_site()).title, 
'Example.svg')
+        self.assertEqual(Link('Foo/.../Sandbox', self.get_site()).title, 
'Foo/.../Sandbox')
+        self.assertEqual(Link('Sandbox/...', self.get_site()).title, 
'Sandbox/...')
+        self.assertEqual(Link('A~~', self.get_site()).title, 'A~~')
+        self.assertEqual(Link(':A', self.get_site()).title, 'A')
         # Length is 256 total, but only title part matters
-        self.assertEqual(Link('Category:' + 'X' * 248).title, 'X' * 248)
-        self.assertEqual(Link('X' * 252).title, 'X' * 252)
-        self.assertEqual(Link('A%20B').title, 'A B')
-        self.assertEqual(Link('A é B').title, u'A é B')
-        self.assertEqual(Link('A é B').title, u'A é B')
-        self.assertEqual(Link('A é B').title, u'A é B')
+        self.assertEqual(Link('Category:' + 'X' * 248, self.get_site()).title, 
'X' * 248)
+        self.assertEqual(Link('X' * 252, self.get_site()).title, 'X' * 252)
+        self.assertEqual(Link('A%20B', self.get_site()).title, 'A B')
+        self.assertEqual(Link('A é B', self.get_site()).title, u'A é B')
+        self.assertEqual(Link('A é B', self.get_site()).title, u'A é B')
+        self.assertEqual(Link('A é B', self.get_site()).title, u'A é B')
 
-        l = Link('A | B')
+        l = Link('A | B', self.get_site())
         self.assertEqual(l.title, 'A')
         self.assertEqual(l.anchor, ' B')
 
-        l = Link('A%23B')
+        l = Link('A%23B', self.get_site())
         self.assertEqual(l.title, 'A')
         self.assertEqual(l.section, 'B')
 
     def test_invalid(self):
-        self.assertRaises(InvalidTitle, Link('').parse)
-        # TODO: self.assertRaises(InvalidTitle, Link(':').parse)
-        self.assertRaises(InvalidTitle, Link('__  __').parse)
-        self.assertRaises(InvalidTitle, Link('  __  ').parse)
+        self.assertRaises(InvalidTitle, Link('', self.get_site()).parse)
+        # TODO: self.assertRaises(InvalidTitle, Link(':', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('__  __', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('  __  ', self.get_site()).parse)
         # Bad characters forbidden regardless of wgLegalTitleChars
-        self.assertRaises(InvalidTitle, Link('A [ B').parse)
-        self.assertRaises(InvalidTitle, Link('A ] B').parse)
-        self.assertRaises(InvalidTitle, Link('A { B').parse)
-        self.assertRaises(InvalidTitle, Link('A } B').parse)
-        self.assertRaises(InvalidTitle, Link('A < B').parse)
-        self.assertRaises(InvalidTitle, Link('A > B').parse)
+        self.assertRaises(InvalidTitle, Link('A [ B', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A ] B', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A { B', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A } B', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A < B', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A > B', self.get_site()).parse)
         # URL encoding
         # %XX is understood by wikimedia but not %XXXX
-        self.assertRaises(InvalidTitle, Link('A%2523B').parse)
+        self.assertRaises(InvalidTitle, Link('A%2523B', self.get_site()).parse)
         # Subject of NS_TALK does not roundtrip to NS_MAIN
         # TODO: A link is invalid if their (non-)talk page would be in another
         #       namespace than the link's "other" namespace
-        # TODO: self.assertRaises(InvalidTitle, 
Link('Talk:File:Example.svg').parse)
+        # TODO: self.assertRaises(InvalidTitle, Link('Talk:File:Example.svg', 
self.get_site()).parse)
         # Directory navigation
-        self.assertRaises(InvalidTitle, Link('.').parse)
-        self.assertRaises(InvalidTitle, Link('..').parse)
-        self.assertRaises(InvalidTitle, Link('./Sandbox').parse)
-        self.assertRaises(InvalidTitle, Link('../Sandbox').parse)
-        self.assertRaises(InvalidTitle, Link('Foo/./Sandbox').parse)
-        self.assertRaises(InvalidTitle, Link('Foo/../Sandbox').parse)
-        self.assertRaises(InvalidTitle, Link('Sandbox/.').parse)
-        self.assertRaises(InvalidTitle, Link('Sandbox/..').parse)
+        self.assertRaises(InvalidTitle, Link('.', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('..', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('./Sandbox', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('../Sandbox', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Foo/./Sandbox', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Foo/../Sandbox', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Sandbox/.', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Sandbox/..', 
self.get_site()).parse)
         # Tilde
-        self.assertRaises(InvalidTitle, Link('A ~~~ Name').parse)
-        self.assertRaises(InvalidTitle, Link('A ~~~~ Signature').parse)
-        self.assertRaises(InvalidTitle, Link('A ~~~~~ Timestamp').parse)
+        self.assertRaises(InvalidTitle, Link('A ~~~ Name', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A ~~~~ Signature', 
self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('A ~~~~~ Timestamp', 
self.get_site()).parse)
         # Overlength
-        self.assertRaises(InvalidTitle, Link('x' * 256).parse)
-        self.assertRaises(InvalidTitle, Link('Invalid:' + 'X' * 248).parse)
+        self.assertRaises(InvalidTitle, Link('x' * 256, self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Invalid:' + 'X' * 248, 
self.get_site()).parse)
         # Namespace prefix without actual title
-        self.assertRaises(InvalidTitle, Link('Talk:').parse)
-        self.assertRaises(InvalidTitle, Link('Category: ').parse)
-        # TODO: self.assertRaises(InvalidTitle, Link('Category: #bar').parse)
+        self.assertRaises(InvalidTitle, Link('Talk:', self.get_site()).parse)
+        self.assertRaises(InvalidTitle, Link('Category: ', 
self.get_site()).parse)
+        # TODO: self.assertRaises(InvalidTitle, Link('Category: #bar', 
self.get_site()).parse)
 
 
 # ---- The first set of tests are explicit links, starting with a ':'.

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I7010d45d2e99f123528465bbc236e7e08fdc721d
Gerrit-PatchSet: 3
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: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to