jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1172809?usp=email )
Change subject: Tests: Suppress print statements during
generate_family_file_tests.py
......................................................................
Tests: Suppress print statements during generate_family_file_tests.py
Suppress print statements in FamilyFileGenerator.run() and getapis() methods.
These methods produce unnecessary interactive output that floods test results.
Suppressing them improves test readability.
Change-Id: I37ecee8329ab455dadaf4feace541030bc9e56e2
---
M pywikibot/scripts/generate_family_file.py
M tests/generate_family_file_tests.py
2 files changed, 29 insertions(+), 19 deletions(-)
Approvals:
jenkins-bot: Verified
Xqt: Looks good to me, approved
diff --git a/pywikibot/scripts/generate_family_file.py
b/pywikibot/scripts/generate_family_file.py
index 4e3bde0..f09046d 100755
--- a/pywikibot/scripts/generate_family_file.py
+++ b/pywikibot/scripts/generate_family_file.py
@@ -43,6 +43,7 @@
import sys
from contextlib import suppress
from pathlib import Path
+from textwrap import fill
from urllib.parse import urlparse, urlunparse
@@ -96,6 +97,11 @@
self.wikis = {} # {'https://wiki/$1': Wiki('https://wiki/$1'), ...}
self.langs = [] # [Wiki('https://wiki/$1'), ...]
+ @staticmethod
+ def show(*args, **kwargs):
+ """Wrapper around print to be mocked in tests."""
+ print(*args, **kwargs)
+
def get_params(self) -> bool: # pragma: no cover
"""Ask for parameters if necessary."""
if self.base_url is None:
@@ -117,8 +123,8 @@
return False
if any(x not in NAME_CHARACTERS for x in self.name):
- print(f'ERROR: Name of family "{self.name}" must be ASCII letters'
- ' and digits [a-zA-Z0-9]')
+ self.show(f'ERROR: Name of family "{self.name}" must be ASCII'
+ ' letters and digits [a-zA-Z0-9]')
return False
return True
@@ -153,10 +159,10 @@
return
self.wikis[w.lang] = w
- print('\n=================================='
- f'\nAPI url: {w.api}'
- f'\nMediaWiki version: {w.version}'
- '\n==================================\n')
+ self.show('\n=================================='
+ f'\nAPI url: {w.api}'
+ f'\nMediaWiki version: {w.version}'
+ '\n==================================\n')
self.getlangs(w)
self.getapis()
@@ -171,13 +177,14 @@
same domain are collected. A [h]elp answer was added to show
more information about possible answers.
"""
- print('Determining other sites...', end='')
+ self.show('Determining other sites...', end='')
try:
self.langs = w.langs
- print(' '.join(sorted(wiki['prefix'] for wiki in self.langs)))
+ self.show(fill(' '.join(sorted(wiki['prefix']
+ for wiki in self.langs))))
except Exception as e: # pragma: no cover
self.langs = []
- print(e, '; continuing...')
+ self.show(e, '; continuing...')
if len([lang for lang in self.langs if lang['url'] == w.iwpath]) == 0:
if w.private_wiki:
@@ -199,7 +206,7 @@
'([y]es, [s]trict, [N]o, [e]dit), [h]elp) ').lower()
if makeiw in ('y', 's', 'n', 'e', ''):
break
- print(
+ self.show(
'\n'
'[y]es: create interwiki links for all sites\n'
'[s]trict: yes, but for sites with same domain only\n'
@@ -220,7 +227,7 @@
elif makeiw == 'e': # pragma: no cover
for wiki in self.langs:
- print(wiki['prefix'], wiki['url'])
+ self.show(wiki['prefix'], wiki['url'])
do_langs = re.split(' *,| +',
input('Which sites do you want: '))
self.langs = [wiki for wiki in self.langs
@@ -235,20 +242,20 @@
def getapis(self) -> None:
"""Load other site pages."""
- print(f'Loading {len(self.langs)} wikis... ')
+ self.show(f'Loading {len(self.langs)} wikis... ')
remove = []
for lang in self.langs:
key = lang['prefix']
- print(f' * {key}... ', end='')
+ self.show(f' * {key}... ', end='')
if key not in self.wikis:
try:
self.wikis[key] = self.Wiki(lang['url'])
- print('downloaded')
+ self.show('downloaded')
except Exception as e: # pragma: no cover
- print(e)
+ self.show(e)
remove.append(lang)
else:
- print('in cache')
+ self.show('in cache')
for lang in remove:
self.langs.remove(lang)
@@ -256,11 +263,11 @@
def writefile(self, verify) -> None: # pragma: no cover
"""Write the family file."""
fp = Path(self.base_dir, 'families', f'{self.name}_family.py')
- print(f'Writing {fp}... ')
+ self.show(f'Writing {fp}... ')
if fp.exists() and input(
f'{fp} already exists. Overwrite? (y/n) ').lower() == 'n':
- print('Terminating.')
+ self.show('Terminating.')
sys.exit(1)
code_hostname_pairs = '\n '.join(
diff --git a/tests/generate_family_file_tests.py
b/tests/generate_family_file_tests.py
index 91b86fc..e7386a6 100755
--- a/tests/generate_family_file_tests.py
+++ b/tests/generate_family_file_tests.py
@@ -10,6 +10,7 @@
import unittest
from contextlib import suppress
from random import sample
+from unittest.mock import patch
from urllib.parse import urlparse
from pywikibot import Site
@@ -86,7 +87,9 @@
def test_attributes_after_run(self) -> None:
"""Test FamilyFileGenerator attributes after run()."""
gen = self.generator_instance
- gen.run()
+ with patch.object(FamilyTestGenerator, 'show') as mock_show:
+ gen.run()
+ mock_show.assert_called()
with self.subTest(test='Test whether default is loaded'):
self.assertIn(self.site.lang, gen.wikis)
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1172809?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I37ecee8329ab455dadaf4feace541030bc9e56e2
Gerrit-Change-Number: 1172809
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]