Xqt submitted this change.

View Change

Approvals: Xqt: Verified; Looks good to me, approved
[test] Test flushing ui and redefining TerminalHandler for T282962

Change-Id: I03e1d17a1682ab5f8adddb20d68fdffca0e9a8a9
---
M pywikibot/userinterfaces/terminal_interface_base.py
M tests/__init__.py
2 files changed, 101 insertions(+), 112 deletions(-)

diff --git a/pywikibot/userinterfaces/terminal_interface_base.py b/pywikibot/userinterfaces/terminal_interface_base.py
index b51db48..c21295f 100755
--- a/pywikibot/userinterfaces/terminal_interface_base.py
+++ b/pywikibot/userinterfaces/terminal_interface_base.py
@@ -97,7 +97,7 @@
default_stream = self.stderr

# default handler for display to terminal
- default_handler = TerminalHandler(self, strm=default_stream)
+ default_handler = TerminalHandler(self, stream=default_stream)
if config.verbose_output:
default_handler.setLevel(VERBOSE)
else:
@@ -105,22 +105,22 @@
# this handler ignores levels above INPUT
default_handler.addFilter(MaxLevelFilter(INPUT))
default_handler.setFormatter(
- TerminalFormatter(fmt='%(message)s%(newline)s'))
+ logging.Formatter(fmt='%(message)s%(newline)s'))
root_logger.addHandler(default_handler)

# handler for level STDOUT
- output_handler = TerminalHandler(self, strm=self.stdout)
+ output_handler = TerminalHandler(self, stream=self.stdout)
output_handler.setLevel(STDOUT)
output_handler.addFilter(MaxLevelFilter(STDOUT))
output_handler.setFormatter(
- TerminalFormatter(fmt='%(message)s%(newline)s'))
+ logging.Formatter(fmt='%(message)s%(newline)s'))
root_logger.addHandler(output_handler)

# handler for levels WARNING and higher
- warning_handler = TerminalHandler(self, strm=self.stderr)
+ warning_handler = TerminalHandler(self, stream=self.stderr)
warning_handler.setLevel(WARNING)
warning_handler.setFormatter(
- TerminalFormatter(fmt='%(levelname)s: %(message)s%(newline)s'))
+ logging.Formatter(fmt='%(levelname)s: %(message)s%(newline)s'))
root_logger.addHandler(warning_handler)

warnings_logger = logging.getLogger('py.warnings')
@@ -494,7 +494,7 @@
return list(self.argv)


-class TerminalHandler(logging.Handler):
+class TerminalHandler(logging.StreamHandler):

"""A handler class that writes logging records to a terminal.

@@ -509,27 +509,19 @@
# create a class-level lock that can be shared by all instances
sharedlock = threading.RLock()

- def __init__(self, UI, strm=None):
- """Initialize the handler.
-
- If strm is not specified, sys.stderr is used.
-
- """
- super().__init__()
+ def __init__(self, UI, stream=None):
+ """Initializer."""
+ super().__init__(stream=stream)
# replace Handler's instance-specific lock with the shared class lock
# to ensure that only one instance of this handler can write to
# the console at a time
self.lock = TerminalHandler.sharedlock
- if strm is None:
- strm = sys.stderr
- self.stream = strm
- self.formatter = None
self.UI = UI

def flush(self):
"""Flush the stream."""
+ super().flush()
self.UI.flush()
- self.stream.flush()

def emit(self, record):
"""Emit the record formatted to the output and return it."""
@@ -542,14 +534,10 @@
record.__dict__.setdefault('newline', '\n')

text = self.format(record)
+ self.flush()
return self.UI.output(text, targetStream=self.stream)


-class TerminalFormatter(logging.Formatter):
-
- """Terminal logging formatter."""
-
-
class MaxLevelFilter(logging.Filter):

"""Filter that only passes records at or below a specific level.
diff --git a/tests/__init__.py b/tests/__init__.py
index ebac252..cae36d79 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -74,97 +74,98 @@
_pwb_py = join_root_path('pwb.py')

library_test_modules = {
- 'api',
- 'basesite',
- 'bot',
- 'category',
- 'collections',
- 'cosmetic_changes',
- 'date',
- 'datasite',
- 'deprecation',
- 'diff',
- 'djvu',
- 'dry_api',
- 'dry_site',
- 'echo',
- 'edit',
- 'edit_failure',
- 'eventstreams',
- 'family',
- 'file',
- 'fixes',
- 'flow',
- 'flow_edit',
- 'flow_thanks',
- 'http',
- 'i18n',
- 'interwiki_graph',
- 'interwiki_link',
- 'interwikimap',
- 'link',
- 'linter',
- 'logentries',
- 'login',
- 'mediawikiversion',
- 'mysql',
- 'namespace',
- 'oauth',
- 'page',
- 'pagegenerators',
- 'paraminfo',
- 'plural',
- 'proofreadpage',
- 'site',
- 'site_decorators',
- 'site_detect',
- 'siteinfo',
- 'sparql',
- 'tests',
- 'textlib',
- 'thanks',
- 'thread',
- 'timestamp',
- 'timestripper',
- 'tk',
- 'token',
- 'tools',
- 'tools_chars',
- 'tools_formatter',
+## 'api',
+## 'basesite',
+## 'bot',
+## 'category',
+## 'collections',
+## 'cosmetic_changes',
+## 'date',
+## 'datasite',
+## 'deprecation',
+## 'diff',
+## 'djvu',
+## 'dry_api',
+## 'dry_site',
+## 'echo',
+## 'edit',
+## 'edit_failure',
+## 'eventstreams',
+## 'family',
+## 'file',
+## 'fixes',
+## 'flow',
+## 'flow_edit',
+## 'flow_thanks',
+## 'http',
+## 'i18n',
+## 'interwiki_graph',
+## 'interwiki_link',
+## 'interwikimap',
+## 'link',
+## 'linter',
+## 'logentries',
+## 'login',
+## 'mediawikiversion',
+## 'mysql',
+## 'namespace',
+## 'oauth',
+## 'page',
+## 'pagegenerators',
+## 'paraminfo',
+## 'plural',
+## 'proofreadpage',
+## 'site',
+## 'site_decorators',
+## 'site_detect',
+## 'siteinfo',
+## 'sparql',
+## 'tests',
+## 'textlib',
+## 'thanks',
+## 'thread',
+## 'timestamp',
+## 'timestripper',
+## 'tk',
+## 'token',
+## 'tools',
+## 'tools_chars',
+## 'tools_formatter',
'ui',
- 'ui_options',
- 'upload',
- 'uploadbot',
- 'user',
- 'wikibase',
- 'wikibase_edit',
- 'wikistats',
- 'xmlreader'
+## 'ui_options',
+## 'upload',
+## 'uploadbot',
+## 'user',
+## 'wikibase',
+## 'wikibase_edit',
+## 'wikistats',
+## 'xmlreader'
}

-script_test_modules = {
- 'add_text',
- 'archivebot',
- 'cache',
- 'category_bot',
- 'checkimages',
- 'deletionbot',
- 'fixing_redirects',
- 'generate_family_file',
- 'generate_user_files',
- 'interwikidata',
- 'l10n',
- 'patrolbot',
- 'protectbot',
- 'pwb',
- 'redirect_bot',
- 'reflinks',
- 'replacebot',
- 'script',
- 'template_bot',
- 'uploadscript',
- 'weblinkchecker'
-}
+script_test_modules = set()
+
+## 'add_text',
+## 'archivebot',
+## 'cache',
+## 'category_bot',
+## 'checkimages',
+## 'deletionbot',
+## 'fixing_redirects',
+## 'generate_family_file',
+## 'generate_user_files',
+## 'interwikidata',
+## 'l10n',
+## 'patrolbot',
+## 'protectbot',
+## 'pwb',
+## 'redirect_bot',
+## 'reflinks',
+## 'replacebot',
+## 'script',
+## 'template_bot',
+## 'uploadscript',
+## 'weblinkchecker'
+##}

disabled_test_modules = {
'tests', # tests of the tests package

To view, visit change 692109. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: tests
Gerrit-Change-Id: I03e1d17a1682ab5f8adddb20d68fdffca0e9a8a9
Gerrit-Change-Number: 692109
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged