MtDu has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/330099 )

Change subject: Replace assertRaises with asserRaisesRegex in family_tests.py
......................................................................

Replace assertRaises with asserRaisesRegex in family_tests.py

assertRaises is not as good of a test as asserRaisesRegex. The latter has an 
extra parameter to match the exception message, allowing more more precision 
when checking an error.

Bug: T154281
Change-Id: Idb030c163f48f349f0adabd5c27dd90dac0d5b4b
---
M tests/family_tests.py
1 file changed, 48 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/99/330099/1

diff --git a/tests/family_tests.py b/tests/family_tests.py
index 41ab51d..c8c9b2f 100644
--- a/tests/family_tests.py
+++ b/tests/family_tests.py
@@ -28,6 +28,10 @@
 
     """Test cases for Family methods."""
 
+    UNKNOWNFAMILY_RE = 'Family unknown does not exist'
+    FAMILY_TYPEERROR_RE = 'Family.obsolete not updatable; ' \
+        'use Family.interwiki_removals and Family.interwiki_replacements'
+    FROZENSET_TYPEERROR_RE = '\'frozenset\' object does not support item 
assignment'
     net = False
 
     def test_family_load_valid(self):
@@ -58,7 +62,11 @@
 
     def test_family_load_invalid(self):
         """Test that an invalid family raised UnknownFamily exception."""
-        self.assertRaises(UnknownFamily, Family.load, 'unknown')
+        self.assertRaisesRegex(
+            UnknownFamily,
+            self.UNKNOWNFAMILY_RE,
+            Family.load,
+            'unknown')
 
     def test_eq_different_families_by_name(self):
         """Test that two Family with same name are equal."""
@@ -96,7 +104,11 @@
         """Test that Family and string with different name are not equal."""
         family = Family.load('wikipedia')
         other = 'unknown'
-        self.assertRaises(UnknownFamily, family.__eq__, other)
+        self.assertRaisesRegex(
+            UnknownFamily,
+            self.UNKNOWNFAMILY_RE,
+            family.__eq__,
+            other)
 
     def test_get_obsolete_wp(self):
         """Test three types of obsolete codes."""
@@ -132,14 +144,27 @@
     def test_obsolete_readonly(self):
         """Test obsolete result not updatable."""
         family = Family.load('test')
-        self.assertRaises(TypeError, family.obsolete.update, {})
-        self.assertRaises(TypeError, family.obsolete.__setitem__, 'a', 'b')
+        self.assertRaisesRegex(
+            TypeError,
+            self.FAMILY_TYPEERROR_RE,
+            family.obsolete.update,
+            {})
+        self.assertRaisesRegex(
+            TypeError,
+            self.FAMILY_TYPEERROR_RE,
+            family.obsolete.__setitem__,
+            'a',
+            'b')
 
     def test_WikimediaFamily_obsolete_readonly(self):
         """Test WikimediaFamily obsolete is readonly."""
         family = Family.load('test')
-        self.assertRaises(TypeError, family.__setattr__, 'obsolete',
-                          {'a': 'b', 'c': None})
+        self.assertRaisesRegex(
+            TypeError,
+            self.FROZENSET_TYPEERROR_RE,
+            family.__setattr__,
+            'obsolete',
+            {'a': 'b', 'c': None})
 
 
 class TestFamilyUrlRegex(PatchingTestCase):
@@ -185,8 +210,11 @@
         self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1'), 'vo')
 
         # Text after $1 is not allowed
-        self.assertRaises(ValueError, f.from_url,
-                          '//vo.wikipedia.org/wiki/$1/foo')
+        self.assertRaisesRegex(
+            ValueError,
+            'Text after the \$1 placeholder is not supported \(T111513\)',
+            f.from_url,
+            '//vo.wikipedia.org/wiki/$1/foo')
 
         # the IWM may contain the wrong protocol, but it's only used to
         # determine a site so using HTTP or HTTPS is not an issue
@@ -225,6 +253,7 @@
 
     """Test cases for old site.Family method."""
 
+    UNKNOWNFAMILY_RE = 'Family unknown does not exist'
     net = False
 
     def test_old_site_family_function(self):
@@ -251,9 +280,17 @@
         # As assertRaises calls the method, unittest is the module
         # invoking the method instead of this test module.
         self._do_test_warning_filename = False
-        self.assertRaises(UnknownFamily, pywikibot.site.Family, 'unknown',
-                          fatal=False)
-        self.assertRaises(UnknownFamily, pywikibot.site.Family, 'unknown')
+        self.assertRaisesRegex(
+                UnknownFamily,
+                self.UNKNOWNFAMILY_RE,
+                pywikibot.site.Family,
+                'unknown',
+                fatal=False)
+        self.assertRaisesRegex(
+                UnknownFamily,
+                self.UNKNOWNFAMILY_RE,
+                pywikibot.site.Family,
+                'unknown')
         self.assertDeprecationParts('pywikibot.site.Family',
                                     'pywikibot.family.Family.load')
         self.assertDeprecationParts('fatal argument of 
pywikibot.family.Family.load')

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb030c163f48f349f0adabd5c27dd90dac0d5b4b
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: MtDu <justin.d...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to