Xqt submitted this change.

View Change

Approvals: jenkins-bot: Verified Xqt: Looks good to me, approved
Revert "[test] Test flushing ui and redefining TerminalHandler for T282962"

This reverts commit d8cc11de8d8da9a174572534a02c79d08e7270d0.

Revert "[test] Test flushing ui for T282962"

This reverts commit 8b1725204d0886f45def183deea1d5a5c583a743.

Change-Id: I74dc7a14aaa710d57ea602a94b605e6bd5cd3f95
---
M pywikibot/userinterfaces/terminal_interface_base.py
M tests/__init__.py
M tests/ui_tests.py
3 files changed, 112 insertions(+), 110 deletions(-)

diff --git a/pywikibot/userinterfaces/terminal_interface_base.py b/pywikibot/userinterfaces/terminal_interface_base.py
index c21295f..9db7fc3 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, stream=default_stream)
+ default_handler = TerminalHandler(self, strm=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(
- logging.Formatter(fmt='%(message)s%(newline)s'))
+ TerminalFormatter(fmt='%(message)s%(newline)s'))
root_logger.addHandler(default_handler)

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

# handler for levels WARNING and higher
- warning_handler = TerminalHandler(self, stream=self.stderr)
+ warning_handler = TerminalHandler(self, strm=self.stderr)
warning_handler.setLevel(WARNING)
warning_handler.setFormatter(
- logging.Formatter(fmt='%(levelname)s: %(message)s%(newline)s'))
+ TerminalFormatter(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.StreamHandler):
+class TerminalHandler(logging.Handler):

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

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

- def __init__(self, UI, stream=None):
- """Initializer."""
- super().__init__(stream=stream)
+ def __init__(self, UI, strm=None):
+ """Initialize the handler.
+
+ If strm is not specified, sys.stderr is used.
+
+ """
+ super().__init__()
# 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."""
@@ -534,10 +541,14 @@
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 cae36d79..ebac252 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -74,98 +74,97 @@
_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 = 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'
-##}
+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'
+}

disabled_test_modules = {
'tests', # tests of the tests package
diff --git a/tests/ui_tests.py b/tests/ui_tests.py
index ce56b14..4f5e610 100644
--- a/tests/ui_tests.py
+++ b/tests/ui_tests.py
@@ -154,43 +154,36 @@

def test_output(self):
pywikibot.output('output')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), 'output\n')

def test_stdout(self):
pywikibot.stdout('output')
- ui.flush()
self.assertEqual(newstdout.getvalue(), 'output\n')
self.assertEqual(newstderr.getvalue(), '')

def test_warning(self):
pywikibot.warning('warning')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), 'WARNING: warning\n')

def test_error(self):
pywikibot.error('error')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), 'ERROR: error\n')

def test_log(self):
pywikibot.log('log')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), '')

def test_critical(self):
pywikibot.critical('critical')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), 'CRITICAL: critical\n')

def test_debug(self):
pywikibot.debug('debug', 'test')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(), '')

@@ -203,7 +196,6 @@
raise TestException('Testing Exception')
except TestException:
pywikibot.exception('exception')
- ui.flush()
self.assertEqual(newstdout.getvalue(), '')
self.assertEqual(newstderr.getvalue(),
'ERROR: TestException: Testing Exception\n')

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

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