Index: webkit/tools/layout_tests/layout_package/metered_stream.py |
=================================================================== |
--- webkit/tools/layout_tests/layout_package/metered_stream.py (revision 36724) |
+++ webkit/tools/layout_tests/layout_package/metered_stream.py (working copy) |
@@ -1,72 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-""" |
-Package that implements a stream wrapper that has 'meters' as well as |
-regular output. A 'meter' is a single line of text that can be erased |
-and rewritten repeatedly, without producing multiple lines of output. It |
-can be used to produce effects like progress bars. |
-""" |
- |
- |
-class MeteredStream: |
- """This class is a wrapper around a stream that allows you to implement |
- meters. |
- |
- It can be used like a stream, but calling update() will print |
- the string followed by only a carriage return (instead of a carriage |
- return and a line feed). This can be used to implement progress bars and |
- other sorts of meters. Note that anything written by update() will be |
- erased by a subsequent update(), write(), or flush().""" |
- |
- def __init__(self, verbose, stream): |
- """ |
- Args: |
- verbose: whether update is a no-op |
- stream: output stream to write to |
- """ |
- self._dirty = False |
- self._verbose = verbose |
- self._stream = stream |
- self._last_update = "" |
- |
- def write(self, txt): |
- """Write text directly to the stream, overwriting and resetting the |
- meter.""" |
- if self._dirty: |
- self.update("") |
- self._dirty = False |
- self._stream.write(txt) |
- |
- def flush(self): |
- """Flush any buffered output.""" |
- self._stream.flush() |
- |
- def update(self, str): |
- """Write an update to the stream that will get overwritten by the next |
- update() or by a write(). |
- |
- This is used for progress updates that don't need to be preserved in |
- the log. Note that verbose disables this routine; we have this in |
- case we are logging lots of output and the update()s will get lost |
- or won't work properly (typically because verbose streams are |
- redirected to files. |
- |
- TODO(dpranke): figure out if there is a way to detect if we're writing |
- to a stream that handles CRs correctly (e.g., terminals). That might |
- be a cleaner way of handling this. |
- """ |
- if self._verbose: |
- return |
- |
- # Print the necessary number of backspaces to erase the previous |
- # message. |
- self._stream.write("\b" * len(self._last_update)) |
- self._stream.write(str) |
- num_remaining = len(self._last_update) - len(str) |
- if num_remaining > 0: |
- self._stream.write(" " * num_remaining + "\b" * num_remaining) |
- self._last_update = str |
- self._dirty = True |