lists.wikimedia.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
List overview
Download
Pywikibot-commits
December 2017
----- 2024 -----
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
pywikibot-commits@lists.wikimedia.org
1 participants
74 discussions
Start a n
N
ew thread
[Gerrit] pywikibot/core[master]: [wikibase_tests] Replace assertRaises with assertRaisesRegex
by jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/394147
) Change subject: [wikibase_tests] Replace assertRaises with assertRaisesRegex ...................................................................... [wikibase_tests] Replace assertRaises with assertRaisesRegex Change-Id: Ia34634938ac9ba8e7234f9d801af590bac6e78d4 --- M tests/wikibase_tests.py 1 file changed, 151 insertions(+), 95 deletions(-) Approvals: John Vandenberg: Looks good to me, approved Dalba: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py index a07de41..cb93598 100644 --- a/tests/wikibase_tests.py +++ b/tests/wikibase_tests.py @@ -145,7 +145,9 @@ self.assertEqual(prop.type, 'wikibase-item') self.assertEqual(prop.namespace(), 120) claim = pywikibot.Claim(repo, 'p21') - self.assertRaises(ValueError, claim.setTarget, value="test") + regex = r' is not type .+\.$' + with self.assertRaisesRegex(ValueError, regex): + claim.setTarget(value="test") claim.setTarget(ItemPage(repo, 'q1')) self.assertEqual(claim._formatValue(), {'entity-type': 'item', 'numeric-id': 1}) @@ -179,7 +181,8 @@ self.assertEqual(y.precision, 0.500005084017101) self.assertIsInstance(y.precision, float) z = pywikibot.Coordinate(site=repo, lat=12.0, lon=13.0) - with self.assertRaises(ValueError): + regex = r'^No values set for dim or precision$' + with self.assertRaisesRegex(ValueError, regex): z.precisionToDim() def test_Coordinate_plain_globe(self): @@ -352,7 +355,8 @@ self.assertEqual(t.toTimestamp(), timestamp) t = pywikibot.WbTime(site=repo, year=-2010, hour=12, minute=43) - self.assertRaises(ValueError, t.toTimestamp) + regex = r'^You cannot turn BC dates into a Timestamp$' + self.assertRaisesRegex(ValueError, regex, t.toTimestamp) t = pywikibot.WbTime(site=repo, year=2010, month=1, day=1, hour=12, minute=43, second=0) @@ -363,10 +367,11 @@ def test_WbTime_errors(self): """Test WbTime precision errors.""" repo = self.get_repo() - self.assertRaises(ValueError, pywikibot.WbTime, site=repo, - precision=15) - self.assertRaises(ValueError, pywikibot.WbTime, site=repo, - precision='invalid_precision') + regex = r'^no year given$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTime(site=repo, precision=15) + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTime(site=repo, precision='invalid_precision') class TestWbQuantity(WbRepresentationTestCase): @@ -471,8 +476,9 @@ def test_WbQuantity_errors(self): """Test WbQuantity error handling.""" - self.assertRaises(ValueError, pywikibot.WbQuantity, amount=None, - error=1) + regex = r'^no amount given$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbQuantity(amount=None, error=1) def test_WbQuantity_entity_unit(self): """Test WbQuantity with entity uri unit.""" @@ -652,12 +658,13 @@ def test_WbMonolingualText_errors(self): """Test WbMonolingualText error handling.""" - self.assertRaises(ValueError, pywikibot.WbMonolingualText, - text='', language='sv') - self.assertRaises(ValueError, pywikibot.WbMonolingualText, - text='Test this!', language='') - self.assertRaises(ValueError, pywikibot.WbMonolingualText, - text=None, language='sv') + regex = r'^text and language cannot be empty$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbMonolingualText(text='', language='sv') + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbMonolingualText(text='Test this!', language='') + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbMonolingualText(text=None, language='sv') class TestWbGeoShapeNonDry(WbRepresentationTestCase): @@ -705,30 +712,35 @@ def test_WbGeoShape_error_on_non_page(self): """Test WbGeoShape error handling when given a non-page.""" - self.assertRaises(ValueError, pywikibot.WbGeoShape, - 'A string', self.get_repo()) + regex = r'^Page must be a pywikibot\.Page object\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbGeoShape('A string', self.get_repo()) def test_WbGeoShape_error_on_non_exitant_page(self): """Test WbGeoShape error handling of a non-existant page.""" page = Page(self.commons, 'Non-existant page... really') - self.assertRaises(ValueError, pywikibot.WbGeoShape, - page, self.get_repo()) + regex = r'^Page must exist\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbGeoShape(page, self.get_repo()) def test_WbGeoShape_error_on_wrong_site(self): """Test WbGeoShape error handling of a page on non-filerepo site.""" repo = self.get_repo() page = Page(repo, 'Q123') - self.assertRaises(ValueError, pywikibot.WbGeoShape, - page, self.get_repo()) + regex = r'^Page must be on the geo-shape repository site\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbGeoShape(page, self.get_repo()) def test_WbGeoShape_error_on_wrong_page_type(self): """Test WbGeoShape error handling of a non-map page.""" non_data_page = Page(self.commons, 'File:Foo.jpg') non_map_page = Page(self.commons, 'Data:Templatedata/Graph:Lines.tab') - self.assertRaises(ValueError, pywikibot.WbGeoShape, - non_data_page, self.get_repo()) - self.assertRaises(ValueError, pywikibot.WbGeoShape, - non_map_page, self.get_repo()) + regex = r"^Page must be in 'Data:' namespace and end in '\.map' " + \ + r"for geo-shape\.$" + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbGeoShape(non_data_page, self.get_repo()) + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbGeoShape(non_map_page, self.get_repo()) class TestWbTabularDataNonDry(WbRepresentationTestCase): @@ -776,30 +788,35 @@ def test_WbTabularData_error_on_non_page(self): """Test WbTabularData error handling when given a non-page.""" - self.assertRaises(ValueError, pywikibot.WbTabularData, - 'A string', self.get_repo()) + regex = r'^Page must be a pywikibot\.Page object\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTabularData('A string', self.get_repo()) def test_WbTabularData_error_on_non_exitant_page(self): """Test WbTabularData error handling of a non-existant page.""" page = Page(self.commons, 'Non-existant page... really') - self.assertRaises(ValueError, pywikibot.WbTabularData, - page, self.get_repo()) + regex = r'^Page must exist\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTabularData(page, self.get_repo()) def test_WbTabularData_error_on_wrong_site(self): """Test WbTabularData error handling of a page on non-filerepo site.""" repo = self.get_repo() page = Page(repo, 'Q123') - self.assertRaises(ValueError, pywikibot.WbTabularData, - page, self.get_repo()) + regex = r'^Page must be on the tabular-data repository site\.$' + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTabularData(page, self.get_repo()) def test_WbTabularData_error_on_wrong_page_type(self): """Test WbTabularData error handling of a non-map page.""" non_data_page = Page(self.commons, 'File:Foo.jpg') non_map_page = Page(self.commons, 'Data:Lyngby Hovedgade.map') - self.assertRaises(ValueError, pywikibot.WbTabularData, - non_data_page, self.get_repo()) - self.assertRaises(ValueError, pywikibot.WbTabularData, - non_map_page, self.get_repo()) + regex = r"^Page must be in 'Data:' namespace and end in '\.tab' " + \ + r"for tabular-data\.$" + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTabularData(non_data_page, self.get_repo()) + with self.assertRaisesRegex(ValueError, regex): + pywikibot.WbTabularData(non_map_page, self.get_repo()) class TestWbUnknown(WbRepresentationTestCase): @@ -993,11 +1010,17 @@ def test_item_invalid_titles(self): """Test invalid titles of wikibase items.""" wikidata = self.get_repo() - for title in ['null', 'NULL', 'None', '', - '-2', '1', '0', '+1', - 'Q0', 'Q0.5', 'Q', 'Q-1', 'Q+1']: - self.assertRaises(pywikibot.InvalidTitle, - ItemPage, wikidata, title) + + regex = r"^'.+' is not a valid .+ page title$" + for title in ['null', 'NULL', 'None', + '-2', '1', '0', '+1', 'Q0', + 'Q0.5', 'Q', 'Q-1', 'Q+1']: + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + ItemPage(wikidata, title) + + regex = r"^Item's title cannot be empty$" + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + ItemPage(wikidata, '') def test_item_untrimmed_title(self): """ @@ -1025,13 +1048,14 @@ self.assertIsInstance(numeric_id, int) self.assertEqual(numeric_id, 7) self.assertFalse(hasattr(item, '_content')) - self.assertRaises(pywikibot.NoPage, item.get) + regex = r"^Page .+ doesn't exist\.$" + self.assertRaisesRegex(pywikibot.NoPage, regex, item.get) self.assertTrue(hasattr(item, '_content')) self.assertEqual(item.id, 'Q7') self.assertEqual(item.getID(), 'Q7') self.assertEqual(item._link._title, 'Q7') self.assertEqual(item.title(), 'Q7') - self.assertRaises(pywikibot.NoPage, item.get) + self.assertRaisesRegex(pywikibot.NoPage, regex, item.get) self.assertTrue(hasattr(item, '_content')) self.assertEqual(item._link._title, 'Q7') self.assertEqual(item.getID(), 'Q7') @@ -1044,7 +1068,8 @@ item = ItemPage(wikidata, 'Q9999999999999999999') self.assertFalse(item.exists()) self.assertEqual(item.getID(), 'Q9999999999999999999') - self.assertRaises(pywikibot.NoPage, item.get) + regex = r"^Page .+ doesn't exist\.$" + self.assertRaisesRegex(pywikibot.NoPage, regex, item.get) def test_fromPage_noprops(self): """Test item from page without properties.""" @@ -1117,7 +1142,9 @@ def test_fromPage_invalid_title(self): """Test item from page with invalid title.""" page = pywikibot.Page(pywikibot.page.Link("[]", self.site)) - self.assertRaises(pywikibot.InvalidTitle, ItemPage.fromPage, page) + regex = r' contains illegal char\(s\) ' + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + ItemPage.fromPage(page) def _test_fromPage_noitem(self, link): """Helper function to test a page without an associated item. @@ -1147,7 +1174,9 @@ if method == 'exists': self.assertFalse(item.exists()) else: - self.assertRaises(pywikibot.NoPage, getattr(item, method)) + regex = r"^Page .+ doesn't exist\.$" + with self.assertRaisesRegex(pywikibot.NoPage, regex): + getattr(item, method)() # The invocation above of a fetching method shouldnt change # the local item, but it does! The title changes to '-1'. @@ -1168,8 +1197,9 @@ page.properties() # by default, fromPage should always raise the same exception - self.assertRaises(pywikibot.NoPage, - ItemPage.fromPage, page) + regex = r"^Page .+ doesn't exist\.$" + with self.assertRaisesRegex(pywikibot.NoPage, regex): + ItemPage.fromPage(page) def test_fromPage_redirect(self): """ @@ -1207,9 +1237,8 @@ # ItemPage.fromPage should raise an exception when not lazy loading # and that exception should refer to the source title 'Test page' # not the Item being created. - self.assertRaisesRegex(pywikibot.NoPage, 'Test page', - ItemPage.fromPage, - page, lazy_load=False) + with self.assertRaisesRegex(pywikibot.NoPage, 'Test page'): + ItemPage.fromPage(page, lazy_load=False) item = ItemPage.fromPage(page, lazy_load=True) @@ -1232,29 +1261,34 @@ """Test ItemPage.from_entity_uri with a non-Wikibase site.""" repo = self.site entity_uri = '
http://www.wikidata.org/entity/Q124
' - self.assertRaises(TypeError, - ItemPage.from_entity_uri, repo, entity_uri) + regex = r' is not a data repository\.$' + with self.assertRaisesRegex(TypeError, regex): + ItemPage.from_entity_uri(repo, entity_uri) def test_from_entity_uri_wrong_repo(self): """Test ItemPage.from_entity_uri with unexpected item repo.""" repo = self.get_repo() entity_uri = '
http://test.wikidata.org/entity/Q124
' - self.assertRaises(ValueError, - ItemPage.from_entity_uri, repo, entity_uri) + regex = r'^The supplied data repository \(.+\) does not ' + \ + r'correspond to that of the item \(.+\)$' + with self.assertRaisesRegex(ValueError, regex): + ItemPage.from_entity_uri(repo, entity_uri) def test_from_entity_uri_invalid_title(self): """Test ItemPage.from_entity_uri with an invalid item title format.""" repo = self.get_repo() entity_uri = '
http://www.wikidata.org/entity/Nonsense
' - self.assertRaises(pywikibot.InvalidTitle, - ItemPage.from_entity_uri, repo, entity_uri) + regex = r"^'.+' is not a valid .+ page title$" + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + ItemPage.from_entity_uri(repo, entity_uri) def test_from_entity_uri_no_item(self): """Test ItemPage.from_entity_uri with non-exitent item.""" repo = self.get_repo() entity_uri = '
http://www.wikidata.org/entity/Q999999999999999999
' - self.assertRaises(pywikibot.NoPage, - ItemPage.from_entity_uri, repo, entity_uri) + regex = r"^Page .+ doesn't exist\.$" + with self.assertRaisesRegex(pywikibot.NoPage, regex): + ItemPage.from_entity_uri(repo, entity_uri) def test_from_entity_uri_no_item_lazy(self): """Test ItemPage.from_entity_uri with lazy loaded non-exitent item.""" @@ -1278,7 +1312,9 @@ item = ItemPage(wikidata, 'Q1') self.assertFalse(item.isRedirectPage()) self.assertTrue(item.exists()) - self.assertRaises(pywikibot.IsNotRedirectPage, item.getRedirectTarget) + regex = r'^Page .+ is not a redirect page\.$' + self.assertRaisesRegex(pywikibot.IsNotRedirectPage, regex, + item.getRedirectTarget) def test_redirect_item(self): """Test redirect item.""" @@ -1291,7 +1327,8 @@ self.assertTrue(item.exists()) self.assertEqual(item.getRedirectTarget(), target) self.assertIsInstance(item.getRedirectTarget(), ItemPage) - self.assertRaises(pywikibot.IsRedirectPage, item.get) + regex = r'^Page .+ is a redirect page\.$' + self.assertRaisesRegex(pywikibot.IsRedirectPage, regex, item.get) def test_redirect_item_without_get(self): """Test redirect item without explicit get operation.""" @@ -1310,7 +1347,9 @@ def test_property_empty_property(self): """Test creating a PropertyPage without a title.""" wikidata = self.get_repo() - self.assertRaises(pywikibot.InvalidTitle, PropertyPage, wikidata) + regex = r"^Property's title cannot be empty$" + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + PropertyPage(wikidata) def test_globe_coordinate(self): """Test a coordinate PropertyPage has the correct type.""" @@ -1416,13 +1455,18 @@ """Test setting claim of the incorrect value.""" wikidata = self.get_repo() date_claim = pywikibot.Claim(wikidata, 'P569') - self.assertRaises(ValueError, date_claim.setTarget, 'foo') + regex = r' is not type .+\.$' + with self.assertRaisesRegex(ValueError, regex): + date_claim.setTarget('foo') url_claim = pywikibot.Claim(wikidata, 'P856') - self.assertRaises(ValueError, url_claim.setTarget, pywikibot.WbTime(2001, site=wikidata)) + with self.assertRaisesRegex(ValueError, regex): + url_claim.setTarget(pywikibot.WbTime(2001, site=wikidata)) mono_claim = pywikibot.Claim(wikidata, 'P1450') - self.assertRaises(ValueError, mono_claim.setTarget, 'foo') + with self.assertRaisesRegex(ValueError, regex): + mono_claim.setTarget('foo') quantity_claim = pywikibot.Claim(wikidata, 'P1106') - self.assertRaises(ValueError, quantity_claim.setTarget, 'foo') + with self.assertRaisesRegex(ValueError, regex): + quantity_claim.setTarget('foo') class TestItemBasePageMethods(WikidataTestCase, BasePageMethodsTestBase): @@ -1472,26 +1516,28 @@ item = WikibasePage(self.repo, 'Q1') # avoid loading anything item._content = {} - self.assertRaises(NotImplementedError, - item.get, force=True, sysop=True) - self.assertRaises(NotImplementedError, - item.get, force=False, sysop=True) - self.assertRaises(NotImplementedError, - item.get, force=False, sysop=False) - self.assertRaises(NotImplementedError, - item.get, sysop=True) + with self.assertRaises(NotImplementedError): + item.get(force=True, sysop=True) + with self.assertRaises(NotImplementedError): + item.get(force=False, sysop=True) + with self.assertRaises(NotImplementedError): + item.get(force=False, sysop=False) + with self.assertRaises(NotImplementedError): + item.get(sysop=True) def test_item_get_args(self): """Test ItemPage.get() with sysop argument.""" item = ItemPage(self.repo, 'Q1') item._content = {} - self.assertRaises(NotImplementedError, item.get, sysop=True) + with self.assertRaises(NotImplementedError): + item.get(sysop=True) def test_property_get_args(self): """Test PropertyPage.get() with sysop argument.""" pp = PropertyPage(self.repo, 'P1') pp._content = {} - self.assertRaises(NotImplementedError, pp.get, sysop=True) + with self.assertRaises(NotImplementedError): + pp.get(sysop=True) class TestLinks(WikidataTestCase): @@ -1634,9 +1680,10 @@ """ wikidata = self.get_repo() page = WikibasePage(wikidata) - self.assertRaises(AttributeError, page.namespace) + regex = r' object has no attribute ' + self.assertRaisesRegex(AttributeError, regex, page.namespace) page = WikibasePage(wikidata, title='') - self.assertRaises(AttributeError, page.namespace) + self.assertRaisesRegex(AttributeError, regex, page.namespace) page = WikibasePage(wikidata, ns=0) self.assertEqual(page.namespace(), 0) @@ -1651,10 +1698,11 @@ self.assertEqual(page.namespace(), 120) # mismatch in namespaces - self.assertRaises(ValueError, WikibasePage, wikidata, - ns=0, entity_type='property') - self.assertRaises(ValueError, WikibasePage, wikidata, - ns=120, entity_type='item') + regex = r'^Namespace ".+" is not valid for Wikibase entity type ".+"$' + with self.assertRaisesRegex(ValueError, regex): + WikibasePage(wikidata, ns=0, entity_type='property') + with self.assertRaisesRegex(ValueError, regex): + WikibasePage(wikidata, ns=120, entity_type='item') def test_wikibase_link_namespace(self): """Test the title resolved to a namespace correctly.""" @@ -1713,10 +1761,14 @@ wikidata = self.get_repo() # All subclasses of WikibasePage raise a ValueError # if the namespace for the page title is not correct - self.assertRaises(ValueError, WikibasePage, wikidata, - title='Wikidata:Main Page') - self.assertRaises(ValueError, ItemPage, wikidata, 'File:Q1') - self.assertRaises(ValueError, PropertyPage, wikidata, 'File:P60') + regex = r': Namespace ".+" is not valid$' + with self.assertRaisesRegex(ValueError, regex): + WikibasePage(wikidata, title='Wikidata:Main Page') + regex = r"^'.+' is not in the namespace " + with self.assertRaisesRegex(ValueError, regex): + ItemPage(wikidata, 'File:Q1') + with self.assertRaisesRegex(ValueError, regex): + PropertyPage(wikidata, 'File:P60') def test_item_unknown_namespace(self): """Test unknown namespaces for Wikibase entities.""" @@ -1725,8 +1777,9 @@ # TODO: These items have inappropriate titles, which should # raise an error. wikidata = self.get_repo() - self.assertRaises(pywikibot.InvalidTitle, ItemPage, - wikidata, 'Invalid:Q1') + regex = r"^'.+' is not a valid item page title$" + with self.assertRaisesRegex(pywikibot.InvalidTitle, regex): + ItemPage(wikidata, 'Invalid:Q1') class TestAlternateNamespaces(WikidataTestCase): @@ -1810,8 +1863,10 @@ """Test that page_from_repository method fails.""" site = self.get_site(key) dummy_item = 'Q1' - self.assertRaises(NotImplementedError, - site.page_from_repository, dummy_item) + regex = r'^page_from_repository method is not implemented ' + \ + r'for Wikibase .+\.$' + with self.assertRaisesRegex(NotImplementedError, regex): + site.page_from_repository(dummy_item) class TestUnconnectedClient(TestCase): @@ -1840,10 +1895,10 @@ site = self.get_site(key) self.wdp = pywikibot.Page(site, self.sites[key]['page_title']) - self.assertRaises(pywikibot.WikiBaseError, - ItemPage.fromPage, self.wdp) - self.assertRaisesRegex(pywikibot.WikiBaseError, - 'no data repository', + regex = r' has no data repository$' + with self.assertRaisesRegex(pywikibot.WikiBaseError, regex): + ItemPage.fromPage(self.wdp) + self.assertRaisesRegex(pywikibot.WikiBaseError, regex, self.wdp.data_item) def test_has_data_repository(self, key): @@ -1855,8 +1910,9 @@ """Test that page_from_repository method fails.""" site = self.get_site(key) dummy_item = 'Q1' - self.assertRaises(pywikibot.UnknownExtension, - site.page_from_repository, dummy_item) + regex = r'^Wikibase is not implemented for .+\.$' + with self.assertRaisesRegex(pywikibot.UnknownExtension, regex): + site.page_from_repository(dummy_item) class TestJSON(WikidataTestCase): -- To view, visit
https://gerrit.wikimedia.org/r/394147
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged Gerrit-Change-Id: Ia34634938ac9ba8e7234f9d801af590bac6e78d4 Gerrit-PatchSet: 13 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Androbin <robin.richtsfeld(a)gmail.com> Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com> Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com> Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com> Gerrit-Reviewer: jenkins-bot <>
6 years, 5 months
1
0
0
0
[Gerrit] pywikibot/core[master]: fixes.py, timestamp_tests.py: Fix invalid escape sequences
by jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/394558
) Change subject: fixes.py, timestamp_tests.py: Fix invalid escape sequences ...................................................................... fixes.py, timestamp_tests.py: Fix invalid escape sequences Python 3.6 warns about invalid escape sequences. Fix them. Change-Id: I73ed6c6065cdedf3e1661aa57df0070b132c6247 --- M pywikibot/fixes.py M tests/timestamp_tests.py 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: jenkins-bot: Verified Xqt: Looks good to me, approved diff --git a/pywikibot/fixes.py b/pywikibot/fixes.py index d974d85..0f161f3 100644 --- a/pywikibot/fixes.py +++ b/pywikibot/fixes.py @@ -380,7 +380,7 @@ }, 'isbn': { - 'generator': ['-search:insource:/nowiki\>ISBN:?(?: | *)[0-9]/', + 'generator': [r'-search:insource:/nowiki\>ISBN:?(?: | *)[0-9]/', '-namespace:0'], 'regex': True, 'msg': 'isbn-formatting', # use i18n translations diff --git a/tests/timestamp_tests.py b/tests/timestamp_tests.py index a466352..f6c76b8 100644 --- a/tests/timestamp_tests.py +++ b/tests/timestamp_tests.py @@ -74,7 +74,7 @@ def test_iso_format_property(self): """Test iso format properties.""" self.assertEqual(Timestamp.ISO8601Format, Timestamp._ISO8601Format()) - self.assertEqual(re.sub('[\-\:TZ]', '', Timestamp.ISO8601Format), + self.assertEqual(re.sub(r'[\-:TZ]', '', Timestamp.ISO8601Format), Timestamp.mediawikiTSFormat) def test_mediawiki_format(self): -- To view, visit
https://gerrit.wikimedia.org/r/394558
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged Gerrit-Change-Id: I73ed6c6065cdedf3e1661aa57df0070b132c6247 Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Dalba <dalba.wiki(a)gmail.com> Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com> Gerrit-Reviewer: Xqt <info(a)gno.de> Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com> Gerrit-Reviewer: jenkins-bot <>
6 years, 5 months
1
0
0
0
[Gerrit] pywikibot/core[master]: Change to use assertRaisesRegex in link_tests.py
by jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/394520
) Change subject: Change to use assertRaisesRegex in link_tests.py ...................................................................... Change to use assertRaisesRegex in link_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. Also bump the Pywikibot license to 2014-2017 in `link_tests.py`. Bug: T154281 Change-Id: Ie2dd6a0e5828be51fd500a2f0a14f552a9ed917e --- M tests/link_tests.py 1 file changed, 99 insertions(+), 30 deletions(-) Approvals: John Vandenberg: Looks good to me, approved jenkins-bot: Verified diff --git a/tests/link_tests.py b/tests/link_tests.py index 8bacdc1..9fba7c1 100644 --- a/tests/link_tests.py +++ b/tests/link_tests.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- """Test Link functionality.""" # -# (C) Pywikibot team, 2014-2015 +# (C) Pywikibot team, 2014-2017 # # Distributed under the terms of the MIT license. # from __future__ import absolute_import, unicode_literals + +import re import pywikibot @@ -103,43 +105,104 @@ def test_invalid(self): """Test that invalid titles raise InvalidTitle exception.""" - self.assertRaises(InvalidTitle, Link('', self.get_site()).parse) - self.assertRaises(InvalidTitle, Link(':', self.get_site()).parse) - self.assertRaises(InvalidTitle, Link('__ __', self.get_site()).parse) - self.assertRaises(InvalidTitle, Link(' __ ', self.get_site()).parse) + exception_message_regex = ( + r'^The link does not contain a page title$' + ) + + texts_to_test = ['', ':', '__ __', ' __ '] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + exception_message_regex): + Link(text, self.get_site()).parse() + # Bad characters forbidden regardless of wgLegalTitleChars - 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) + def generate_contains_illegal_chars_exc_regex(text): + exc_regex = ( + r'^(u|)\'%s\' contains illegal char\(s\) (u|)\'%s\'$' % ( + re.escape(text), re.escape(text[2]) + )) + return exc_regex + + texts_to_test = ['A [ B', 'A ] B', 'A { B', 'A } B', 'A < B', 'A > B'] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + generate_contains_illegal_chars_exc_regex(text)): + Link(text, self.get_site()).parse() + # URL encoding # %XX is understood by wikimedia but not %XXXX - self.assertRaises(InvalidTitle, Link('A%2523B', self.get_site()).parse) + with self.assertRaisesRegex( + InvalidTitle, + r'^(u|)\'A%23B\' contains illegal char\(s\) (u|)\'%23\'$'): + Link('A%2523B', self.get_site()).parse() + # A link is invalid if their (non-)talk page would be in another # namespace than the link's "other" namespace - self.assertRaises(InvalidTitle, Link('Talk:File:Example.svg', self.get_site()).parse) + with self.assertRaisesRegex( + InvalidTitle, + (r'The \(non-\)talk page of (u|)\'Talk:File:Example.svg\'' + r' is a valid title in another namespace.')): + Link('Talk:File:Example.svg', self.get_site()).parse() + # Directory navigation - 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) + def generate_contains_dot_combinations_exc_regex(text): + exc_regex = ( + r'^\(contains \. / combinations\): (u|)\'%s\'$' % re.escape( + text) + ) + return exc_regex + + texts_to_test = ['.', '..', './Sandbox', '../Sandbox', 'Foo/./Sandbox', + 'Foo/../Sandbox', 'Sandbox/.', 'Sandbox/..'] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + generate_contains_dot_combinations_exc_regex(text)): + Link(text, self.get_site()).parse() + # Tilde - 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) + def generate_contains_tilde_exc_regex(text): + exc_regex = r'^\(contains ~~~\): (u|)\'%s\'$' % re.escape(text) + return exc_regex + + texts_to_test = ['A ~~~ Name', 'A ~~~~ Signature', 'A ~~~~~ Timestamp'] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + generate_contains_tilde_exc_regex(text)): + Link(text, self.get_site()).parse() + # Overlength - self.assertRaises(InvalidTitle, Link('x' * 256, self.get_site()).parse) - self.assertRaises(InvalidTitle, Link('Invalid:' + 'X' * 248, self.get_site()).parse) + def generate_overlength_exc_regex(text): + exc_regex = r'^\(over 255 bytes\): (u|)\'%s\'$' % re.escape(text) + return exc_regex + + texts_to_test = [('x' * 256), ('Invalid:' + 'X' * 248)] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + generate_overlength_exc_regex(text)): + Link(text, self.get_site()).parse() + # Namespace prefix without actual title - self.assertRaises(InvalidTitle, Link('Talk:', self.get_site()).parse) - self.assertRaises(InvalidTitle, Link('Category: ', self.get_site()).parse) - self.assertRaises(InvalidTitle, Link('Category: #bar', self.get_site()).parse) + def generate_has_no_title_exc_regex(text): + exc_regex = r'^(u|)\'%s\' has no title\.$' % re.escape(text) + return exc_regex + + texts_to_test = ['Talk:', 'Category: ', 'Category: #bar'] + + for text in texts_to_test: + with self.assertRaisesRegex( + InvalidTitle, + generate_has_no_title_exc_regex(text.strip())): + Link(text, self.get_site()).parse() def test_relative(self): """Test that relative links are handled properly.""" @@ -183,7 +246,13 @@ """Test Python issue 10254 causes an exception.""" pywikibot.page.unicodedata = __import__('unicodedata') title = 'Li̍t-sṳ́' - self.assertRaises(UnicodeError, Link, title, self.site) + with self.assertRaisesRegex( + UnicodeError, + re.escape('Link(%r, %s): combining characters detected, which ' + 'are not supported by Pywikibot on Python 2.6.6. ' + 'See
https://phabricator.wikimedia.org/T102461
' + % (title, self.site))): + Link(title, self.site) # ---- The first set of tests are explicit links, starting with a ':'. -- To view, visit
https://gerrit.wikimedia.org/r/394520
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged Gerrit-Change-Id: Ie2dd6a0e5828be51fd500a2f0a14f552a9ed917e Gerrit-PatchSet: 3 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Rafidaslam <rafidteam(a)gmail.com> Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com> Gerrit-Reviewer: MtDu <justin.d128(a)gmail.com> Gerrit-Reviewer: Rafidaslam <rafidteam(a)gmail.com> Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com> Gerrit-Reviewer: jenkins-bot <>
6 years, 5 months
1
0
0
0
[Gerrit] pywikibot/core[master]: proofreadpage_tests.py: Mark test_page_gen_redlink as expect...
by jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/394296
) Change subject: proofreadpage_tests.py: Mark test_page_gen_redlink as expected failure ...................................................................... proofreadpage_tests.py: Mark test_page_gen_redlink as expected failure Bug: T181697 Change-Id: Idfe1f890a3dc4bcf14ddd5feb54007fa61703ae8 --- M tests/proofreadpage_tests.py 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: John Vandenberg: Looks good to me, but someone else must approve jenkins-bot: Verified Xqt: Looks good to me, approved diff --git a/tests/proofreadpage_tests.py b/tests/proofreadpage_tests.py index 77117ad..4d76a2e 100644 --- a/tests/proofreadpage_tests.py +++ b/tests/proofreadpage_tests.py @@ -675,6 +675,7 @@ n = self.index.get_number(page) self.assertEqual(self.index.get_page(n), page) + @unittest.expectedFailure # T181697 def test_page_gen_redlink(self): """Test Index page generator with redlinks.""" # Check start/end limits. -- To view, visit
https://gerrit.wikimedia.org/r/394296
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged Gerrit-Change-Id: Idfe1f890a3dc4bcf14ddd5feb54007fa61703ae8 Gerrit-PatchSet: 2 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Dalba <dalba.wiki(a)gmail.com> Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com> Gerrit-Reviewer: Xqt <info(a)gno.de> Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com> Gerrit-Reviewer: jenkins-bot <>
6 years, 5 months
1
0
0
0
← Newer
1
2
3
4
5
6
7
8
Older →
Jump to page:
1
2
3
4
5
6
7
8
Results per page:
10
25
50
100
200