Document any crashes from the user's text editor
Rather than failing with no information, display the child exit
status and the command line we tried to use to edit a text file.
There may be some useful information to help understand the crash.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/editor.py b/editor.py
index 7400ba1..cf0a5ee 100644
--- a/editor.py
+++ b/editor.py
@@ -76,8 +76,15 @@
os.close(fd)
fd = None
- if subprocess.Popen(editor + [path]).wait() != 0:
- raise EditorError()
+ try:
+ rc = subprocess.Popen(editor + [path]).wait()
+ except OSError, e:
+ raise EditorError('editor failed, %s: %s %s'
+ % (str(e), cls._GetEditor(), path))
+ if rc != 0:
+ raise EditorError('editor failed with exit status %d: %s %s'
+ % (rc, cls._GetEditor(), path))
+
fd2 = open(path)
try:
return fd2.read()
diff --git a/error.py b/error.py
index 6b9dff4..cb3b725 100644
--- a/error.py
+++ b/error.py
@@ -24,6 +24,11 @@
class EditorError(Exception):
"""Unspecified error from the user's text editor.
"""
+ def __init__(self, reason):
+ self.reason = reason
+
+ def __str__(self):
+ return self.reason
class GitError(Exception):
"""Unspecified internal error from git.