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]

Reply via email to