Divadsn has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/404085 )
Change subject: Replace assertRaises with assertRaisesRegex in isbn_tests.py
......................................................................
Replace assertRaises with assertRaisesRegex in isbn_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: Iaab3472bbae926caf5d68239b3828b5691ee38b9
---
M tests/isbn_tests.py
1 file changed, 54 insertions(+), 19 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/85/404085/1
diff --git a/tests/isbn_tests.py b/tests/isbn_tests.py
index df00417..216a1f8 100644
--- a/tests/isbn_tests.py
+++ b/tests/isbn_tests.py
@@ -39,6 +39,19 @@
"""Test CosmeticChanges ISBN fix."""
+ ISBNINVALIDCHECKSUM_RE = (
+ r"ISBN-13: The ISBN ([A-Z0-9]*) is not 13 digits long\. / "
+ r"ISBN-10: The ISBN checksum of ([A-Z0-9]*) is incorrect\."
+ )
+ ISBNINVALIDLENGTH_RE = (
+ r"ISBN-13: The ISBN ([A-Z0-9]*) is not 13 digits long\. / "
+ r"ISBN-10: The ISBN ([A-Z0-9]*) is not 10 digits long\."
+ )
+ ISBNXINTHEMIDDLE_RE = (
+ r"ISBN-13: The ISBN ([A-Z0-9]*) contains invalid characters\. / "
+ r"ISBN-10: The ISBN ([A-Z0-9]*) is not 10 digits long\."
+ )
+
def test_valid_isbn(self):
"""Test ISBN."""
cc = CosmeticChangesToolkit(self.site, namespace=0)
@@ -54,17 +67,17 @@
cc = CosmeticChangesToolkit(self.site, namespace=0)
# Invalid characters
- self.assertRaises(AnyIsbnValidationException,
- cc.fix_ISBN, 'ISBN 0975229LOL')
+ self.assertRaisesRegex(AnyIsbnValidationException,
self.ISBNINVALIDLENGTH_RE,
+ cc.fix_ISBN, 'ISBN 0975229LOL')
# Invalid checksum
- self.assertRaises(AnyIsbnValidationException,
- cc.fix_ISBN, 'ISBN 0975229801')
+ self.assertRaisesRegex(AnyIsbnValidationException,
self.ISBNINVALIDCHECKSUM_RE,
+ cc.fix_ISBN, 'ISBN 0975229801')
# Invalid length
- self.assertRaises(AnyIsbnValidationException,
- cc.fix_ISBN, 'ISBN 09752298')
+ self.assertRaisesRegex(AnyIsbnValidationException,
self.ISBNINVALIDLENGTH_RE,
+ cc.fix_ISBN, 'ISBN 09752298')
# X in the middle
- self.assertRaises(AnyIsbnValidationException,
- cc.fix_ISBN, 'ISBN 09752X9801')
+ self.assertRaisesRegex(AnyIsbnValidationException,
self.ISBNXINTHEMIDDLE_RE,
+ cc.fix_ISBN, 'ISBN 09752X9801')
def test_ignore_invalid_isbn(self):
"""Test fixing ISBN numbers with an invalid ISBN."""
@@ -77,6 +90,23 @@
class TestIsbn(TestCase):
"""Test ISBN-related classes and helper functions."""
+
+ ISBNINVALIDCHARACTERS_RE = (
+ r"The ISBN ([A-Z0-9]*) contains invalid characters"
+ )
+ ISBNINVALIDCHECKSUM_RE = (
+ r"The ISBN checksum of ([A-Z0-9]*) is incorrect"
+ )
+ ISBNINVALIDLENGTH_RE = (
+ r"The ISBN ([A-Z0-9]*) is not (10|13) digits long"
+ )
+ ISBNBOTHINVALIDLENGTH_RE = (
+ r"ISBN-13: The ISBN ([A-Z0-9]*) is not 13 digits long\. / "
+ r"ISBN-10: The ISBN ([A-Z0-9]*) is not 10 digits long\."
+ )
+ ISBNXINTHEMIDDLE_RE = (
+ r"ISBN ([A-Z0-9]*): X is only allowed at the end of the ISBN"
+ )
net = False
@@ -94,10 +124,14 @@
self.assertEqual(isbn13.code, '978-0-9752298-0-4')
# Errors
- self.assertRaises(IsbnExc, ISBN10, '0975229LOL') # Invalid characters
- self.assertRaises(IsbnExc, ISBN10, '0975229801') # Invalid checksum
- self.assertRaises(IsbnExc, ISBN10, '09752298') # Invalid length
- self.assertRaises(IsbnExc, ISBN10, '09752X9801') # X in the middle
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDCHARACTERS_RE,
+ ISBN10, '0975229LOL') # Invalid characters
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDCHECKSUM_RE,
+ ISBN10, '0975229801') # Invalid checksum
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDLENGTH_RE,
+ ISBN10, '09752298') # Invalid length
+ self.assertRaisesRegex(IsbnExc, self.ISBNXINTHEMIDDLE_RE,
+ ISBN10, '09752X9801') # X in the middle
def test_isbn13(self):
"""Test ISBN13."""
@@ -111,19 +145,20 @@
self.assertEqual(isbn.code, '9788090273412')
# Errors
- self.assertRaises(IsbnExc, ISBN13, '9783161484LOL') # Invalid chars
- self.assertRaises(IsbnExc, ISBN13, '9783161484105') # Invalid checksum
- self.assertRaises(IsbnExc, ISBN13, '9783161484') # Invalid length
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDCHARACTERS_RE,
+ ISBN13, '9783161484LOL') # Invalid characters
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDCHECKSUM_RE,
+ ISBN13, '9783161484105') # Invalid checksum
+ self.assertRaisesRegex(IsbnExc, self.ISBNINVALIDLENGTH_RE,
+ ISBN13, '9783161484') # Invalid length
def test_general(self):
"""Test things that apply both to ISBN10 and ISBN13."""
# getIsbn
self.assertIsInstance(getIsbn('097522980x'), ISBN10)
self.assertIsInstance(getIsbn('9783161484100'), ISBN13)
- self.assertRaisesRegex(IsbnExc,
- 'ISBN-13: The ISBN 097522 is not 13 digits '
- 'long. / ISBN-10: The ISBN 097522 is not 10 '
- 'digits long.', getIsbn, '097522')
+ self.assertRaisesRegex(IsbnExc, self.ISBNBOTHINVALIDLENGTH_RE ,
+ getIsbn, '097522')
# hyphenateIsbnNumbers
self.assertEqual(hyphenateIsbnNumbers('ISBN 097522980x'),
--
To view, visit https://gerrit.wikimedia.org/r/404085
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaab3472bbae926caf5d68239b3828b5691ee38b9
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Divadsn <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits