summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-01-30 19:07:14 +0000
committerLars Wirzenius <liw@liw.fi>2011-01-30 19:07:14 +0000
commit5ddae1fc138cdcc2974a5b67686f554ee7caa87f (patch)
tree3d07d9d273252bbe3469e4e863ccbe8bc8fec2b8
parentc70818c596b752d3e807736723a1cf64353ccbaf (diff)
downloadpython-ttystatus-5ddae1fc138cdcc2974a5b67686f554ee7caa87f.tar.gz
Implement enable and disable output.
-rw-r--r--ttystatus/messager.py12
-rw-r--r--ttystatus/messager_tests.py12
-rw-r--r--ttystatus/status.py3
-rw-r--r--ttystatus/status_tests.py21
4 files changed, 39 insertions, 9 deletions
diff --git a/ttystatus/messager.py b/ttystatus/messager.py
index c322590..21ea843 100644
--- a/ttystatus/messager.py
+++ b/ttystatus/messager.py
@@ -27,6 +27,7 @@ class Messager(object):
'''Write messages to the terminal.'''
def __init__(self, output=None, period=None):
+ self._enabled = True
self.output = output or sys.stderr
self._period = 1.0 if period is None else period
self._last_msg = '' # What did we write last?
@@ -72,7 +73,7 @@ class Messager(object):
def _raw_write(self, string):
'''Write raw data if output is terminal.'''
- if self.output.isatty():
+ if self._enabled and self.output.isatty():
try:
self.output.write(string)
except IOError: # pragma: no cover
@@ -128,3 +129,12 @@ class Messager(object):
'''Finalize output.'''
self._overwrite(self._cached_msg)
self._raw_write('\n')
+
+ def disable(self):
+ '''Disable all output.'''
+ self._enabled = False
+
+ def enable(self):
+ '''Enable output to happen.'''
+ self._enabled = True
+
diff --git a/ttystatus/messager_tests.py b/ttystatus/messager_tests.py
index b57fbaf..1356ae3 100644
--- a/ttystatus/messager_tests.py
+++ b/ttystatus/messager_tests.py
@@ -104,3 +104,15 @@ class MessagerTests(unittest.TestCase):
self.messager.set_width(4)
self.messager.write('foobar')
self.assertEqual(self.output.getvalue(), 'foo')
+
+ def test_disables_output(self):
+ self.messager.disable()
+ self.messager.write('foo')
+ self.assertEqual(self.output.getvalue(), '')
+
+ def test_enables_output(self):
+ self.messager.disable()
+ self.messager.enable()
+ self.messager.write('foo')
+ self.assertEqual(self.output.getvalue(), 'foo')
+
diff --git a/ttystatus/status.py b/ttystatus/status.py
index 81354f9..7725e83 100644
--- a/ttystatus/status.py
+++ b/ttystatus/status.py
@@ -88,6 +88,9 @@ class TerminalStatus(object):
def disable(self):
'''Disable all output.'''
+ self._m.disable()
def enable(self):
'''Enable output if it has been disabled.'''
+ self._m.enable()
+
diff --git a/ttystatus/status_tests.py b/ttystatus/status_tests.py
index 78a7f44..b2b1b04 100644
--- a/ttystatus/status_tests.py
+++ b/ttystatus/status_tests.py
@@ -26,6 +26,7 @@ class DummyMessager(object):
def __init__(self):
self.written = StringIO.StringIO()
+ self.enabled = True
def clear(self):
pass
@@ -41,6 +42,12 @@ class DummyMessager(object):
def finish(self):
pass
+
+ def enable(self):
+ self.enabled = True
+
+ def disable(self):
+ self.enabled = False
class TerminalStatusTests(unittest.TestCase):
@@ -113,14 +120,12 @@ class TerminalStatusTests(unittest.TestCase):
def test_has_finish_method(self):
self.assertEqual(self.ts.finish(), None)
- def test_writes_output_by_default(self):
- self.ts.add(ttystatus.String('foo'))
- self.ts['foo'] = 'bar'
- self.assertEqual(self.ts._m.written.getvalue(), 'bar')
+ def test_disable_calls_messager_disable(self):
+ self.ts.disable()
+ self.assertFalse(self.ts._m.enabled)
- def test_disables_output(self):
- self.ts.add(ttystatus.String('foo'))
+ def test_enable_calls_messager_enable(self):
self.ts.disable()
- self.ts['foo'] = 'bar'
- self.assertEqual(self.ts._m.written.getvalue(), '')
+ self.ts.enable()
+ self.assert_(self.ts._m.enabled)