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 <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Siebrand <siebrand(a)kitano.nl>
Gerrit-Reviewer: jenkins-bot <>