[Lldb-commits] [lldb] 3cdbacc - [lldb/test] Avoid globbing in log file handling code
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 14 04:11:10 PDT 2020
Author: Pavel Labath
Date: 2020-07-14T13:10:59+02:00
New Revision: 3cdbacc46422b8ed6dc6fb8aaec3dfb58451460f
URL: https://github.com/llvm/llvm-project/commit/3cdbacc46422b8ed6dc6fb8aaec3dfb58451460f
DIFF: https://github.com/llvm/llvm-project/commit/3cdbacc46422b8ed6dc6fb8aaec3dfb58451460f.diff
LOG: [lldb/test] Avoid globbing in log file handling code
The glob expression for a test called "test" could match a log file for
a the test "test_foo". Instead of globbing, maintain an explicit list of
log files relevant to the current test.
Added:
Modified:
lldb/packages/Python/lldbsuite/test/lldbtest.py
Removed:
################################################################################
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index 29561d4794be..ebef896d12b6 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -576,6 +576,7 @@ def enableLogChannelsForCurrentTest(self):
# confirm that the file is writeable
host_log_path = "{}-host.log".format(log_basename)
open(host_log_path, 'w').close()
+ self.log_files.append(host_log_path)
log_enable = "log enable -Tpn -f {} ".format(host_log_path)
for channel_with_categories in lldbtest_config.channels:
@@ -602,6 +603,7 @@ def enableLogChannelsForCurrentTest(self):
if lldb.remote_platform is None:
server_log_path = "{}-server.log".format(log_basename)
open(server_log_path, 'w').close()
+ self.log_files.append(server_log_path)
os.environ["LLDB_DEBUGSERVER_LOG_FILE"] = server_log_path
# Communicate channels to lldb-server
@@ -623,12 +625,13 @@ def disableLogChannelsForCurrentTest(self):
# Retrieve the server log (if any) from the remote system. It is assumed the server log
# is writing to the "server.log" file in the current test directory. This can be
# achieved by setting LLDB_DEBUGSERVER_LOG_FILE="server.log" when starting remote
- # platform. If the remote logging is not enabled, then just let the Get() command silently
- # fail.
+ # platform.
if lldb.remote_platform:
- lldb.remote_platform.Get(
- lldb.SBFileSpec("server.log"), lldb.SBFileSpec(
- self.getLogBasenameForCurrentTest() + "-server.log"))
+ server_log_path = self.getLogBasenameForCurrentTest() + "-server.log"
+ if lldb.remote_platform.Get(
+ lldb.SBFileSpec("server.log"),
+ lldb.SBFileSpec(server_log_path)).Success():
+ self.log_files.append(server_log_path)
def setPlatformWorkingDir(self):
if not lldb.remote_platform or not configuration.lldb_platform_working_dir:
@@ -800,11 +803,12 @@ def setUp(self):
# List of forked process PIDs
self.forkedProcessPids = []
- # Create a string buffer to record the session info, to be dumped into a
- # test case specific file if test failure is encountered.
- self.log_basename = self.getLogBasenameForCurrentTest()
+ # List of log files produced by the current test.
+ self.log_files = []
+
+ session_file = self.getLogBasenameForCurrentTest()+".log"
+ self.log_files.append(session_file)
- session_file = "{}.log".format(self.log_basename)
# Python 3 doesn't support unbuffered I/O in text mode. Open buffered.
self.session = encoded_file.open(session_file, "utf-8", mode="w")
@@ -1218,14 +1222,13 @@ def dumpSessionInfo(self):
del self.session
# process the log files
- log_files_for_this_test = glob.glob(self.log_basename + "*")
-
if prefix != 'Success' or lldbtest_config.log_success:
# keep all log files, rename them to include prefix
+ src_log_basename = self.getLogBasenameForCurrentTest(None)
dst_log_basename = self.getLogBasenameForCurrentTest(prefix)
- for src in log_files_for_this_test:
+ for src in self.log_files:
if os.path.isfile(src):
- dst = src.replace(self.log_basename, dst_log_basename)
+ dst = src.replace(src_log_basename, dst_log_basename)
if os.name == "nt" and os.path.isfile(dst):
# On Windows, renaming a -> b will throw an exception if
# b exists. On non-Windows platforms it silently
@@ -1239,8 +1242,9 @@ def dumpSessionInfo(self):
os.rename(src, dst)
else:
# success! (and we don't want log files) delete log files
- for log_file in log_files_for_this_test:
- remove_file(log_file)
+ for log_file in self.log_files:
+ if os.path.isfile(log_file):
+ remove_file(log_file)
# ====================================================
# Config. methods supported through a plugin interface
More information about the lldb-commits
mailing list