jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/677383 )
Change subject: [tests] Suppress all warnings ......................................................................
[tests] Suppress all warnings
This drops all warnings from our test output. Remaining 'WARNING' lines come from our logger rather than warn() clauses.
Bug: T225594 Bug: T234147 Change-Id: I5f827e684c426f64a58ebb76bf55231e82d1a8ea --- M tests/__init__.py M tests/api_tests.py M tests/aspects.py M tests/interwikimap_tests.py M tests/page_tests.py M tests/pagegenerators_tests.py M tests/reflinks_tests.py M tests/replacebot_tests.py M tests/site_tests.py M tests/wikibase_tests.py 10 files changed, 98 insertions(+), 48 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/__init__.py b/tests/__init__.py index 219b263..38c49a0 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -36,6 +36,14 @@
_root_dir = os.path.split(os.path.split(__file__)[0])[0]
+# common warn() clauses... +# +# WARN_SITE_CODE is from T234147 +# WARN_SITE_OBJ is from T225594 + +WARN_SITE_CODE = r'^Site .*:.* instantiated using different code *' +WARN_SITE_OBJ = 'Site objects have been created before arguments were handled' +
def join_root_path(*names): """Return a path relative to the root directory.""" diff --git a/tests/api_tests.py b/tests/api_tests.py index c2cf635..9811ef1 100644 --- a/tests/api_tests.py +++ b/tests/api_tests.py @@ -694,6 +694,9 @@ self.gen.set_namespace(1) self.gen.set_namespace(None)
+ @suppress_warnings( + r'^set_namespace() will be modified to raise TypeError*', + FutureWarning) def test_namespace_param_is_not_settable(self): """Test ListGenerator support_namespace.""" self.gen = api.ListGenerator(listaction='querypage', site=self.site) diff --git a/tests/aspects.py b/tests/aspects.py index 98d9aa5..f814813 100644 --- a/tests/aspects.py +++ b/tests/aspects.py @@ -34,8 +34,12 @@ from pywikibot.exceptions import ServerError, NoUsername from pywikibot.family import WikimediaFamily from pywikibot.site import BaseSite +from pywikibot.tools import suppress_warnings
-from tests import patch_request, unpatch_request, unittest_print +from tests import ( + WARN_SITE_CODE, patch_request, unpatch_request, unittest_print +) + from tests.utils import ( execute_pwb, DrySite, DryRequest, WarningSourceSkipContextManager, AssertAPIErrorContextManager, @@ -854,8 +858,9 @@ .format(data['code']))
if 'site' not in data and 'code' in data and 'family' in data: - data['site'] = Site(data['code'], data['family'], - interface=interface) + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): + data['site'] = Site(data['code'], data['family'], + interface=interface) if 'hostname' not in data and 'site' in data: # Ignore if the family has defined this as # obsolete without a mapping to a hostname. diff --git a/tests/interwikimap_tests.py b/tests/interwikimap_tests.py index 815667d..4298709 100644 --- a/tests/interwikimap_tests.py +++ b/tests/interwikimap_tests.py @@ -8,7 +8,10 @@
import pywikibot
+from pywikibot.tools import suppress_warnings + from tests.aspects import DefaultSiteTestCase +from tests import WARN_SITE_CODE
class TestInterwikiMap(DefaultSiteTestCase): @@ -138,9 +141,10 @@ ): continue
- item = self.iw_map[prefix] - self.assertEqual(item._site, pywikibot.Site(prefix, family)) - self.assertTrue(item.local) + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): + item = self.iw_map[prefix] + self.assertEqual(item._site, pywikibot.Site(prefix, family)) + self.assertTrue(item.local)
def test_invalid_prefix(self): """Test wrong interwiki prefix.""" diff --git a/tests/page_tests.py b/tests/page_tests.py index 7c1d476..7edfd81 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -13,6 +13,9 @@ import pywikibot.page
from pywikibot import config, InvalidTitle +from pywikibot.tools import suppress_warnings + +from tests import WARN_SITE_CODE
from tests.aspects import ( DefaultDrySiteTestCase, DefaultSiteTestCase, SiteAttributeTestCase, @@ -528,8 +531,9 @@ for p2 in mainpage.interwiki(expand=False): self.assertIsInstance(p2, pywikibot.Link) self.assertIn(p2, iw) - for p in mainpage.langlinks(): - self.assertIsInstance(p, pywikibot.Link) + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): + for p in mainpage.langlinks(): + self.assertIsInstance(p, pywikibot.Link) for p in mainpage.imagelinks(): self.assertIsInstance(p, pywikibot.FilePage) for p in mainpage.templates(): diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index 0b6d4e0..db6cf74 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -37,6 +37,15 @@ ) from tests.thread_tests import GeneratorIntersectTestCase
+LINKSEARCH_MSG = (r'.*pywikibot.pagegenerators.LinksearchPageGenerator .*' + r'is deprecated for .*; use Site.exturlusage') + +PAGES_ID_GEN_MSG = (r'.*pywikibot.pagegenerators.PagesFromPageidGenerator .*' + r'is deprecated for .*; use site.load_pages_from_pageids') + +REFERRING_PAGE_MSG = (r'.*pywikibot.pagegenerators.ReferringPageGenerator .*' + r'is deprecated for .*; use Page.getReferences') +
en_wp_page_titles = ( # just a bunch of randomly selected titles for English Wikipedia tests @@ -215,8 +224,10 @@ gen_pages = pagegenerators.PagesFromTitlesGenerator(self.titles, self.site) pageids = [page.pageid for page in gen_pages] - gen = pagegenerators.PagesFromPageidGenerator(pageids, self.site) - self.assertPageTitlesEqual(gen, self.titles) + + with suppress_warnings(PAGES_ID_GEN_MSG, category=DeprecationWarning): + gen = pagegenerators.PagesFromPageidGenerator(pageids, self.site) + self.assertPageTitlesEqual(gen, self.titles)
class TestCategoryFilterPageGenerator(BasetitleTestCase): @@ -628,13 +639,14 @@
def test_non_item_gen(self): """Test TestPreloadingEntityGenerator with ReferringPageGenerator.""" - site = self.get_site() - instance_of_page = pywikibot.Page(site, 'Property:P31') - ref_gen = pagegenerators.ReferringPageGenerator(instance_of_page, - total=5) - gen = pagegenerators.PreloadingEntityGenerator(ref_gen) - self.assertTrue(all(isinstance(item, - pywikibot.ItemPage) for item in gen)) + with suppress_warnings(REFERRING_PAGE_MSG, category=FutureWarning): + site = self.get_site() + instance_of_page = pywikibot.Page(site, 'Property:P31') + ref_gen = pagegenerators.ReferringPageGenerator(instance_of_page, + total=5) + gen = pagegenerators.PreloadingEntityGenerator(ref_gen) + is_all_type = all(isinstance(i, pywikibot.ItemPage) for i in gen) + self.assertTrue(is_all_type)
class WikibaseItemFilterPageGeneratorTestCase(TestCase): @@ -1695,20 +1707,22 @@
def test_double_opposite_protocols(self): """Test LinksearchPageGenerator with two opposite protocols.""" - with self.assertRaises(ValueError): - pagegenerators.LinksearchPageGenerator( - 'http://w.wiki', - protocol='https', - site=self.site) + with suppress_warnings(LINKSEARCH_MSG, category=DeprecationWarning): + with self.assertRaises(ValueError): + pagegenerators.LinksearchPageGenerator( + 'http://w.wiki', + protocol='https', + site=self.site)
def test_double_same_protocols(self): """Test LinksearchPageGenerator with two same protocols.""" - gen = pagegenerators.LinksearchPageGenerator('https://w.wiki', - protocol='https', - site=self.site, - total=1) - self.assertIsInstance(gen, pywikibot.data.api.PageGenerator) - self.assertLength(list(gen), 1) + with suppress_warnings(LINKSEARCH_MSG, category=DeprecationWarning): + gen = pagegenerators.LinksearchPageGenerator('https://w.wiki', + protocol='https', + site=self.site, + total=1) + self.assertIsInstance(gen, pywikibot.data.api.PageGenerator) + self.assertLength(list(gen), 1)
if __name__ == '__main__': # pragma: no cover diff --git a/tests/reflinks_tests.py b/tests/reflinks_tests.py index dc94f11..c8c2c9d 100644 --- a/tests/reflinks_tests.py +++ b/tests/reflinks_tests.py @@ -8,7 +8,9 @@
from scripts.reflinks import XmlDumpPageGenerator, ReferencesRobot, main
-from tests import join_xml_data_path +from pywikibot.tools import suppress_warnings + +from tests import WARN_SITE_OBJ, join_xml_data_path from tests.aspects import TestCase, ScriptMainTestCase from tests.utils import empty_sites
@@ -125,11 +127,13 @@
def test_xml_multiple_namespace_ids(self): """Test the generator using multiple separate namespaces parameters.""" - main('-xml:' + join_xml_data_path('dummy-reflinks.xml'), - '-namespace:0', '-namespace:1', '-xmlstart:Fake page') - gen = self.constructor_kwargs['generator'] - self.assertPageTitlesCountEqual(gen, ['Fake page', 'Talk:Fake page'], - site=self.get_site()) + with suppress_warnings(WARN_SITE_OBJ, category=UserWarning): + main('-xml:' + join_xml_data_path('dummy-reflinks.xml'), + '-namespace:0', '-namespace:1', '-xmlstart:Fake page') + gen = self.constructor_kwargs['generator'] + self.assertPageTitlesCountEqual(gen, ['Fake page', + 'Talk:Fake page'], + site=self.get_site())
def test_xml_multiple_namespace_ids_2(self): """Test the generator using multiple namespaces in one parameter.""" @@ -150,11 +154,12 @@ filename = '-xml:' + join_xml_data_path('dummy-reflinks.xml') for start in start_variants: with self.subTest(xmlstart=start): - main(filename, '-namespace:1', start) - gen = self.constructor_kwargs['generator'] - pages = list(gen) - self.assertPageTitlesEqual(pages, ['Talk:Fake page'], - site=self.site) + with suppress_warnings(WARN_SITE_OBJ, category=UserWarning): + main(filename, '-namespace:1', start) + gen = self.constructor_kwargs['generator'] + pages = list(gen) + self.assertPageTitlesEqual(pages, ['Talk:Fake page'], + site=self.site)
def test_xml_namespace_name(self): """Test the generator using a namespace name.""" diff --git a/tests/replacebot_tests.py b/tests/replacebot_tests.py index ff3267e..97fdb40 100644 --- a/tests/replacebot_tests.py +++ b/tests/replacebot_tests.py @@ -11,10 +11,11 @@ import pywikibot
from pywikibot import fixes +from pywikibot.tools import suppress_warnings
from scripts import replace
-from tests import join_data_path +from tests import WARN_SITE_OBJ, join_data_path
from tests.bot_tests import TWNBotTestCase from tests.utils import empty_sites @@ -92,7 +93,9 @@ """Run the L{replace.main} with the given args and summary and page.""" # -page to not have an empty generator # -site as it will use Site() otherwise - return replace.main(*(args + ('-site:wikipedia:test', '-page:TEST'))) + with suppress_warnings(WARN_SITE_OBJ, category=UserWarning): + return replace.main(*(args + ('-site:wikipedia:test', + '-page:TEST')))
def test_invalid_replacements(self): """Test invalid command line replacement configurations.""" diff --git a/tests/site_tests.py b/tests/site_tests.py index 0b01ded..677d1a4 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -21,7 +21,7 @@ from pywikibot.exceptions import HiddenKeyError from pywikibot.tools import suppress_warnings
-from tests import patch, unittest_print +from tests import WARN_SITE_CODE, patch, unittest_print from tests.aspects import ( AlteredDefaultSiteTestCase, DefaultDrySiteTestCase, @@ -3163,7 +3163,11 @@ mysite = self.get_site() mainpage = self.get_mainpage() links = list(mysite.pagelinks(mainpage, total=20)) - pages = list(mysite.preloadpages(links, groupsize=5, langlinks=True)) + + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): + gen = mysite.preloadpages(links, groupsize=5, langlinks=True) + pages = list(gen) + self.assertLength(links, pages) for page in pages: self.assertIsInstance(page, pywikibot.Page) @@ -3299,8 +3303,7 @@
def test_alias_code_site(self): """Test Wikimedia site with an alias code.""" - with suppress_warnings( - 'Site wikipedia:ja instantiated using different code "jp"'): + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): site = pywikibot.Site('jp', 'wikipedia') self.assertIsInstance(site.obsolete, bool) self.assertEqual(site.code, 'ja') diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py index 4413ffe..f8e7c6e 100644 --- a/tests/wikibase_tests.py +++ b/tests/wikibase_tests.py @@ -16,9 +16,9 @@ from pywikibot import pagegenerators from pywikibot.page import ItemPage, Page, PropertyPage, WikibasePage from pywikibot.site import Namespace, NamespacesDict -from pywikibot.tools import MediaWikiVersion +from pywikibot.tools import MediaWikiVersion, suppress_warnings
-from tests import join_pages_path, mock +from tests import WARN_SITE_CODE, join_pages_path, mock from tests.aspects import TestCase, WikidataTestCase
from tests.basepage import ( @@ -60,7 +60,8 @@
def test_page_text(self): """Test site.loadrevisions() with Page.text.""" - self._test_page_text() + with suppress_warnings(WARN_SITE_CODE, category=UserWarning): + self._test_page_text()
class TestGeneral(WikidataTestCase):
pywikibot-commits@lists.wikimedia.org