diff mercurial/testing/__init__.py @ 47804:5ad37164a8fe stable

testing: make sure write_file is "atomic" This make sure viewer cannot see the new file with partial content. This was likely the cause of some flakiness in `test-nointerrupt.t` Differential Revision: https://phab.mercurial-scm.org/D11250
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 03 Aug 2021 19:26:26 +0200
parents 1bad89a67745
children 6000f5b25c9b
line wrap: on
line diff
--- a/mercurial/testing/__init__.py	Wed Aug 04 19:45:13 2021 +0200
+++ b/mercurial/testing/__init__.py	Tue Aug 03 19:26:26 2021 +0200
@@ -33,5 +33,11 @@
 
 
 def write_file(path, content=b''):
-    with open(path, 'wb') as f:
+    if content:
+        write_path = b'%s.tmp' % path
+    else:
+        write_path = path
+    with open(write_path, 'wb') as f:
         f.write(content)
+    if path != write_path:
+        os.rename(write_path, path)