Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions easybuild/base/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ def setUp(self):

self.orig_sys_stdout = sys.stdout
self.orig_sys_stderr = sys.stderr
self.stdout_std_err_buffers = []

def convert_exception_to_str(self, err):
"""Convert an Exception instance to a string."""
Expand Down Expand Up @@ -182,6 +183,7 @@ def mock_stdout(self, enable):
sys.stdout.flush()
if enable:
sys.stdout = StringIO()
self.stdout_std_err_buffers.append(sys.stdout)
else:
sys.stdout = self.orig_sys_stdout

Expand All @@ -190,6 +192,7 @@ def mock_stderr(self, enable):
sys.stderr.flush()
if enable:
sys.stderr = StringIO()
self.stdout_std_err_buffers.append(sys.stderr)
else:
sys.stderr = self.orig_sys_stderr

Expand Down Expand Up @@ -235,4 +238,6 @@ def tearDown(self):
"""Cleanup after running a test."""
self.mock_stdout(False)
self.mock_stderr(False)
for buf in self.stdout_std_err_buffers:
buf.close()
super().tearDown()
2 changes: 2 additions & 0 deletions easybuild/tools/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -573,8 +573,10 @@ def to_cmd_str(cmd):
for line in iter(proc.stdout.readline, b''):
_log.debug(f"Captured stdout: {line.decode(errors='ignore').rstrip()}")
stdout += line
proc.stdout.close()
if split_stderr:
stderr += proc.stderr.read() or b''
proc.stderr.close()
else:
(stdout, stderr) = proc.communicate(input=stdin)

Expand Down
Loading