Clockery has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/404285 )
Change subject: Replace assertRaises with assertRaisesRegex in api_tests.py
......................................................................
Replace assertRaises with assertRaisesRegex in api_tests.py
assertRaisesRegex allows exceptions to be cross-checked against the
expected message, which allows for more precision in error-checking.
Bug: T154281
Change-Id: I9cab456143c721ea9c05756914ba4c0cad1851a5
---
M tests/api_tests.py
1 file changed, 23 insertions(+), 19 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/85/404285/1
diff --git a/tests/api_tests.py b/tests/api_tests.py
index 7906847..633f094 100644
--- a/tests/api_tests.py
+++ b/tests/api_tests.py
@@ -36,6 +36,10 @@
else:
from urllib import unquote_plus as unquote_to_bytes
+internal_fake = 'internal_api_error_fake:'
+foo_bar = 'foobar'
+read_perm_req = 'You need read permission to use this module'
+
class TestAPIMWException(DefaultSiteTestCase):
@@ -85,7 +89,7 @@
req = api.Request(site=self.site, parameters={'action': 'query',
'fake': True})
with PatchedHttp(api, self.data):
- self.assertRaises(api.APIMWException, req.submit)
+ self.assertRaisesRegex(api.APIMWException, internal_fake,
req.submit)
def test_API_error_encoding_ASCII(self):
"""Test a Page instance as parameter using ASCII chars."""
@@ -95,7 +99,7 @@
'titles': page})
self.assert_parameters = {'fake': ''}
with PatchedHttp(api, self._dummy_request):
- self.assertRaises(api.APIMWException, req.submit)
+ self.assertRaisesRegex(api.APIMWException, internal_fake,
req.submit)
def test_API_error_encoding_Unicode(self):
"""Test a Page instance as parameter using non-ASCII chars."""
@@ -105,7 +109,7 @@
'titles': page})
self.assert_parameters = {'fake': ''}
with PatchedHttp(api, self._dummy_request):
- self.assertRaises(api.APIMWException, req.submit)
+ self.assertRaisesRegex(api.APIMWException, internal_fake,
req.submit)
class TestApiFunctions(DefaultSiteTestCase):
@@ -328,8 +332,8 @@
pi.fetch('foobar')
self.assertNotIn('foobar', pi._paraminfo)
- self.assertRaises(KeyError, pi.__getitem__, 'foobar')
- self.assertRaises(KeyError, pi.__getitem__, 'foobar+foobar')
+ self.assertRaisesRegex(KeyError, foo_bar, pi.__getitem__, 'foobar')
+ self.assertRaisesRegex(KeyError, foo_bar, pi.__getitem__,
'foobar+foobar')
self.assertIn('main', pi._paraminfo)
self.assertIn('paraminfo', pi._paraminfo)
@@ -354,8 +358,8 @@
self.assertEqual(mod[6:], pi[mod]['name'])
self.assertEqual(mod, pi[mod]['path'])
- self.assertRaises(KeyError, pi.__getitem__, 'query+foobar')
- self.assertRaises(KeyError, pi.submodules, 'edit')
+ self.assertRaisesRegex(KeyError, foo_bar, pi.__getitem__,
'query+foobar')
+ self.assertRaisesRegex(KeyError, 'edit', pi.submodules, 'edit')
def test_query_modules_with_limits(self):
"""Test query_modules_with_limits property."""
@@ -497,8 +501,8 @@
def test_non_lazy_load(self):
"""Test OptionSet with initialised site."""
options = api.OptionSet(self.get_site(), 'recentchanges', 'show')
- self.assertRaises(KeyError, options.__setitem__, 'invalid_name', True)
- self.assertRaises(ValueError, options.__setitem__, 'anon',
'invalid_value')
+ self.assertRaisesRegex(KeyError, 'Invalid name', options.__setitem__,
'invalid_name', True)
+ self.assertRaisesRegex(ValueError, 'Invalid value',
options.__setitem__, 'anon', 'invalid_value')
options['anon'] = True
self.assertCountEqual(['anon'], options._enabled)
self.assertEqual(set(), options._disabled)
@@ -525,12 +529,12 @@
options['anon'] = True
self.assertIn('invalid_name', options._enabled)
self.assertEqual(2, len(options))
- self.assertRaises(KeyError, options._set_site, self.get_site(),
+ self.assertRaisesRegex(KeyError, 'OptionSet already contains invalid
name', options._set_site, self.get_site(),
'recentchanges', 'show')
self.assertEqual(2, len(options))
options._set_site(self.get_site(), 'recentchanges', 'show', True)
self.assertEqual(1, len(options))
- self.assertRaises(TypeError, options._set_site, self.get_site(),
+ self.assertRaisesRegex(TypeError, 'The site can not be set multiple
times', options._set_site, self.get_site(),
'recentchanges', 'show')
@@ -650,9 +654,9 @@
def test_namespace(self):
"""Test PageGenerator set_namespace."""
- self.assertRaises(AssertionError, self.gen.set_namespace, 0)
- self.assertRaises(AssertionError, self.gen.set_namespace, 1)
- self.assertRaises(AssertionError, self.gen.set_namespace, None)
+ self.assertRaisesRegex(AssertionError, '^$', self.gen.set_namespace, 0)
+ self.assertRaisesRegex(AssertionError, '^$', self.gen.set_namespace, 1)
+ self.assertRaisesRegex(AssertionError, '^$', self.gen.set_namespace,
None)
class TestPropertyGenerator(TestCase):
@@ -811,7 +815,7 @@
def test_namespace_none(self):
"""Test ListGenerator set_namespace with None."""
- self.assertRaises(TypeError, self.gen.set_namespace, None)
+ self.assertRaisesRegex(TypeError, 'argument must be a string',
self.gen.set_namespace, None)
def test_namespace_zero(self):
"""Test ListGenerator set_namespace with 0."""
@@ -945,9 +949,9 @@
"""Test the query with a username which does not exist."""
self.site._username = ['Not registered username', None]
req = api.Request(site=self.site, parameters={'action': 'query'})
- self.assertRaises(pywikibot.NoUsername, req.submit)
+ self.assertRaisesRegex(pywikibot.NoUsername, 'does not have read
permissions on', req.submit)
# FIXME: T100965
- self.assertRaises(api.APIError, req.submit)
+ self.assertRaisesRegex(api.APIError, read_perm_req, req.submit)
class TestLazyLoginNoUsername(TestLazyLoginBase):
@@ -966,9 +970,9 @@
del pywikibot.config.usernames['steward']
req = api.Request(site=self.site, parameters={'action': 'query'})
- self.assertRaises(pywikibot.NoUsername, req.submit)
+ self.assertRaisesRegex(pywikibot.NoUsername, 'If you have an account
for that site, please add a line to user', req.submit)
# FIXME: T100965
- self.assertRaises(api.APIError, req.submit)
+ self.assertRaisesRegex(api.APIError, read_perm_req, req.submit)
class TestBadTokenRecovery(TestCase):
--
To view, visit https://gerrit.wikimedia.org/r/404285
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9cab456143c721ea9c05756914ba4c0cad1851a5
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Clockery <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits