diff --git a/progressbar/utils.py b/progressbar/utils.py index a969484a..f95dace3 100644 --- a/progressbar/utils.py +++ b/progressbar/utils.py @@ -57,16 +57,18 @@ def unwrap(self, stdout=False, stderr=False): self.unwrap_stderr() def unwrap_stdout(self): - if self.wrapped_stdout > 0: + if self.wrapped_stdout > 1: self.wrapped_stdout -= 1 else: sys.stdout = self.original_stdout + self.wrapped_stdout = 0 def unwrap_stderr(self): - if self.wrapped_stderr > 0: + if self.wrapped_stderr > 1: self.wrapped_stderr -= 1 else: sys.stderr = self.original_stderr + self.wrapped_stderr = 0 def flush(self): if self.wrapped_stdout: diff --git a/tests/test_stream.py b/tests/test_stream.py index c72cbf7b..956f8084 100644 --- a/tests/test_stream.py +++ b/tests/test_stream.py @@ -1,3 +1,4 @@ +import io import sys import progressbar @@ -38,3 +39,11 @@ def test_wrap(): progressbar.streams.unwrap(stderr=True, stdout=True) progressbar.streams.unwrap(stderr=True, stdout=True) progressbar.streams.unwrap(stderr=True, stdout=True) + + +def test_fd_as_io_stream(): + stream = io.StringIO() + with progressbar.ProgressBar(fd=stream) as pb: + for i in range(101): + pb.update(i) + stream.close()