Fix #81: fix ValueError when a closed stream was used
diff --git a/colorama/ansitowin32.py b/colorama/ansitowin32.py
index 6d8daba..a750d2a 100644
--- a/colorama/ansitowin32.py
+++ b/colorama/ansitowin32.py
@@ -64,7 +64,7 @@
# should we strip ANSI sequences from our output?
if strip is None:
- strip = conversion_supported or not is_a_tty(wrapped)
+ strip = conversion_supported or (not wrapped.closed and not is_a_tty(wrapped))
self.strip = strip
# should we should convert ANSI sequences into win32 calls?
diff --git a/colorama/tests/ansitowin32_test.py b/colorama/tests/ansitowin32_test.py
index 7890f34..f351763 100644
--- a/colorama/tests/ansitowin32_test.py
+++ b/colorama/tests/ansitowin32_test.py
@@ -60,7 +60,6 @@
stream = AnsiToWin32(mockStdout)
self.assertFalse(stream.strip)
-
def testWriteStripsAnsi(self):
mockStdout = Mock()
stream = AnsiToWin32(mockStdout)
@@ -73,7 +72,6 @@
self.assertFalse(stream.wrapped.write.called)
self.assertEqual(stream.write_and_convert.call_args, (('abc',), {}))
-
def testWriteDoesNotStripAnsi(self):
mockStdout = Mock()
stream = AnsiToWin32(mockStdout)
@@ -87,7 +85,6 @@
self.assertFalse(stream.write_and_convert.called)
self.assertEqual(stream.wrapped.write.call_args, (('abc',), {}))
-
def assert_autoresets(self, convert, autoreset=True):
stream = AnsiToWin32(Mock())
stream.convert = convert
@@ -166,6 +163,10 @@
converter.reset_all()
+ def test_wrap_shouldnt_raise_on_closed_orig_stdout(self):
+ stream = StringIO()
+ stream.close()
+ converter = AnsiToWin32(stream)
def testExtractParams(self):
stream = AnsiToWin32(Mock())