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

Reply via email to