Modified: trunk/Tools/ChangeLog (124089 => 124090)
--- trunk/Tools/ChangeLog 2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/ChangeLog 2012-07-30 21:07:46 UTC (rev 124090)
@@ -1,5 +1,29 @@
2012-07-30 Dirk Pranke <dpra...@chromium.org>
+ nrwt: --verbose logging does not work right on windows
+ https://bugs.webkit.org/show_bug.cgi?id=92673
+
+ Unreviewed, build fix.
+
+ The --verbose log level is not being propagated to the worker
+ processes on windows properly; this has been broken ever since I
+ refactored logging into the message pool directly :(.
+
+ Also, fixing this revealed that outputcapture wasn't saving and
+ restoring log levels correctly, so I had to fix that as well.
+
+ * Scripts/webkitpy/common/message_pool.py:
+ (_MessagePool._start_workers):
+ (_MessagePool._worker_log_level):
+ (_Worker.__init__):
+ (_Worker._set_up_logging):
+ (_WorkerLogHandler.__init__):
+ * Scripts/webkitpy/common/system/outputcapture.py:
+ (OutputCapture.capture_output):
+ (OutputCapture.restore_output):
+
+2012-07-30 Dirk Pranke <dpra...@chromium.org>
+
After r123895, new-run-webkit-tests can fail with TypeError when a test crashes
https://bugs.webkit.org/show_bug.cgi?id=92664
Modified: trunk/Tools/Scripts/webkitpy/common/message_pool.py (124089 => 124090)
--- trunk/Tools/Scripts/webkitpy/common/message_pool.py 2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/Scripts/webkitpy/common/message_pool.py 2012-07-30 21:07:46 UTC (rev 124090)
@@ -104,12 +104,22 @@
host = self._host
for worker_number in xrange(self._num_workers):
- worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None)
+ worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None, self._worker_log_level())
self._workers.append(worker)
worker.start()
if self._worker_startup_delay_secs:
time.sleep(self._worker_startup_delay_secs)
+ def _worker_log_level(self):
+ log_level = logging.NOTSET
+ for handler in logging.root.handlers:
+ if handler.level != logging.NOTSET:
+ if log_level == logging.NOTSET:
+ log_level = handler.level
+ else:
+ log_level = min(log_level, handler.level)
+ return log_level
+
def wait(self):
try:
self._start_workers()
@@ -192,12 +202,13 @@
class _Worker(multiprocessing.Process):
- def __init__(self, host, messages_to_manager, messages_to_worker, worker_factory, worker_number, running_inline, manager):
+ def __init__(self, host, messages_to_manager, messages_to_worker, worker_factory, worker_number, running_inline, manager, log_level):
super(_Worker, self).__init__()
self.host = host
self.worker_number = worker_number
self.name = 'worker/%d' % worker_number
self.log_messages = []
+ self.log_level = log_level
self._running_inline = running_inline
self._manager = manager
@@ -300,12 +311,14 @@
self._log_handler = _WorkerLogHandler(self)
self._logger.addHandler(self._log_handler)
+ self._logger.setLevel(self.log_level)
class _WorkerLogHandler(logging.Handler):
def __init__(self, worker):
logging.Handler.__init__(self)
self._worker = worker
+ self.setLevel(worker.log_level)
def emit(self, record):
self._worker.log_messages.append(record)
Modified: trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py (124089 => 124090)
--- trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py 2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py 2012-07-30 21:07:46 UTC (rev 124090)
@@ -68,11 +68,15 @@
self._logs = StringIO()
self._logs_handler = logging.StreamHandler(self._logs)
self._logs_handler.setLevel(self._log_level)
- logging.getLogger().addHandler(self._logs_handler)
+ self._logger = logging.getLogger()
+ self._orig_log_level = self._logger.level
+ self._logger.addHandler(self._logs_handler)
+ self._logger.setLevel(min(self._log_level, self._orig_log_level))
return (self._capture_output_with_name("stdout"), self._capture_output_with_name("stderr"))
def restore_output(self):
- logging.getLogger().removeHandler(self._logs_handler)
+ self._logger.removeHandler(self._logs_handler)
+ self._logger.setLevel(self._orig_log_level)
self._logs_handler.flush()
self._logs.flush()
logs_string = self._logs.getvalue()