Author: zturner Date: Tue May 26 14:52:24 2015 New Revision: 238239 URL: http://llvm.org/viewvc/llvm-project?rev=238239&view=rev Log: On Windows, delete existing log file before renaming temp file.
On non-Windows platforms, os.rename() will silently replace the destination file if it already exists. On Windows, it doesn't do this, and the filesystem has no mechanism to simulate the same type of atomic rename operation. So on Windows, delete the file first before calling os.rename(). Modified: lldb/trunk/test/lldbtest.py Modified: lldb/trunk/test/lldbtest.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lldbtest.py?rev=238239&r1=238238&r2=238239&view=diff ============================================================================== --- lldb/trunk/test/lldbtest.py (original) +++ lldb/trunk/test/lldbtest.py Tue May 26 14:52:24 2015 @@ -1567,6 +1567,13 @@ class Base(unittest2.TestCase): dst_log_basename = self.getLogBasenameForCurrentTest(prefix) for src in log_files_for_this_test: dst = src.replace(self.log_basename, dst_log_basename) + if os.name == "nt": + # On Windows, renaming a -> b will throw an exception if b exists. On non-Windows platforms + # it silently replaces the destination. Ultimately this means that atomic renames are not + # guaranteed to be possible on Windows, but we need this to work anyway, so just remove the + # destination first if it already exists. + os.remove(dst) + os.rename(src, dst) else: # success! (and we don't want log files) delete log files _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits