changeset 30269:f42cd5434cc2

statprof: require paths to save or load profile data Upstream appears to aggressively save statprof data in a well-defined home directory path. Change the code to not do that. We also change file saving to fail if an error has occurred instead of silently failing. Callers can catch the exception. This behavior is more suitable for a generic "library" module.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 14 Aug 2016 19:14:05 -0700
parents ad4c0236168d
children 2ed0b3f9f79e
files mercurial/statprof.py
diffstat 1 files changed, 5 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/statprof.py	Sun Aug 14 19:13:32 2016 -0700
+++ b/mercurial/statprof.py	Sun Aug 14 19:14:05 2016 -0700
@@ -311,13 +311,11 @@
         state.accumulate_time(clock())
         state.last_start_time = None
         statprofpath = os.environ.get('STATPROF_DEST')
-        save_data(statprofpath)
+        if statprofpath:
+            save_data(statprofpath)
 
-def save_data(path=None):
-    try:
-        path = path or (os.environ['HOME'] + '/statprof.data')
-        file = open(path, "w+")
-
+def save_data(path):
+    with open(path, 'w+') as file:
         file.write(str(state.accumulated_time) + '\n')
         for sample in state.samples:
             time = str(sample.time)
@@ -326,13 +324,7 @@
                      for s in stack]
             file.write(time + '\0' + '\0'.join(sites) + '\n')
 
-        file.close()
-    except (IOError, OSError):
-        # The home directory probably didn't exist, or wasn't writable. Oh well.
-        pass
-
-def load_data(path=None):
-    path = path or (os.environ['HOME'] + '/statprof.data')
+def load_data(path):
     lines = open(path, 'r').read().splitlines()
 
     state.accumulated_time = float(lines[0])