Diff Doctor
Review Request #6993 — Created Feb. 27, 2015 and discarded — Latest diff uploaded
This project attempts to provide a more helpful user interface when a patch fails.
A patch fails when either components: the patch file, or the to-be-patched file is corrupt. Less likely, linux patch can also fail.
The first step of this project is to catch the error in patch() as a PatchError, and provide the user a download link to the reject files as a ZIP file. This link will be implemented as a Django view.
The second step of this project involves displaying the reject files (original, diff and .rej files), rendered as in-line HTML with Pygments, in place of the error traceback.
Manual testing has been done, for:
- Normal review requests (no diff error), returns a 404
- Review request containing a failed patch, with failure due to faulty original-file (corrupted endpoints in 3rd party services with their own repositories, like gitweb, or cgit). These will return a 404 page
- Review request containing a failed patch, with failure due to patch() itself. I have only managed to replicate this by manually uploading a corrupted diff file, but am unaware of how this could happen in a real use case. The in-line reject files show up as expected in the traceback box, and the .zip download is functional
Diff Revision 12
This is not the most recent revision of the diff. The latest diff is revision 18. See what's changed.
reviewboard/diffviewer/diffutils.py |
---|
reviewboard/diffviewer/errors.py |
---|
reviewboard/diffviewer/views.py |
---|
reviewboard/reviews/urls.py |
---|
reviewboard/reviews/views.py |
---|
reviewboard/templates/diffviewer/diff_fragment_error.html |
---|
reviewboard/templates/diffviewer/patch_error.html |
---|