diff options
author | dlav-sc <daniil.avdeev@syntacore.com> | 2024-12-02 14:51:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-02 14:51:22 +0300 |
commit | 9a34a4f8d668b72868fde3b6a58bb3a57d72c0c9 (patch) | |
tree | 8ff5d89e217dec2e8e774663899a0a552cafebd3 /lldb/packages/Python/lldbsuite/test/lldbtest.py | |
parent | e6eac65ad6aa2c61475d65f13d6d938d0e3a7728 (diff) | |
download | llvm-9a34a4f8d668b72868fde3b6a58bb3a57d72c0c9.zip llvm-9a34a4f8d668b72868fde3b6a58bb3a57d72c0c9.tar.gz llvm-9a34a4f8d668b72868fde3b6a58bb3a57d72c0c9.tar.bz2 |
[lldb] fix fd leak during lldb testsuite (#118093)
During lldb testing dotest.py opens files to dump testcase results, but
doesn't close them.
This patch makes necessary changes to fix the file descriptors leak.
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lldbtest.py')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lldbtest.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 8884ef5..1338d16 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -865,13 +865,9 @@ class Base(unittest.TestCase): session_file = self.getLogBasenameForCurrentTest() + ".log" self.log_files.append(session_file) - # Python 3 doesn't support unbuffered I/O in text mode. Open buffered. - self.session = encoded_file.open(session_file, "utf-8", mode="w") - # Optimistically set __errored__, __failed__, __expected__ to False # initially. If the test errored/failed, the session info - # (self.session) is then dumped into a session specific file for - # diagnosis. + # is then dumped into a session specific file for diagnosis. self.__cleanup_errored__ = False self.__errored__ = False self.__failed__ = False @@ -1235,20 +1231,25 @@ class Base(unittest.TestCase): else: prefix = "Success" + session_file = self.getLogBasenameForCurrentTest() + ".log" + + # Python 3 doesn't support unbuffered I/O in text mode. Open buffered. + session = encoded_file.open(session_file, "utf-8", mode="w") + if not self.__unexpected__ and not self.__skipped__: for test, traceback in pairs: if test is self: - print(traceback, file=self.session) + print(traceback, file=session) import datetime print( "Session info generated @", datetime.datetime.now().ctime(), - file=self.session, + file=session, ) - self.session.close() - del self.session + session.close() + del session # process the log files if prefix != "Success" or lldbtest_config.log_success: |