From 54fccd71fbdc60adf99b9a9bf4712c121d4312ba Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 24 Jun 2009 07:09:51 -0700 Subject: [PATCH] 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 --- editor.py | 11 +++++++++-- error.py | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/editor.py b/editor.py index 7400ba1..cf0a5ee 100644 --- a/editor.py +++ b/editor.py @@ -76,8 +76,15 @@ least one of these before using this command.""" 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 ManifestInvalidRevisionError(Exception): 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.