Display error messages for HTTP 400
Review Request #4340 — Created July 17, 2013 and submitted — Latest diff uploaded
The message, displayed on HTTP 400 errors is not very informative now: ei-grad@ei-grad repos/djblets (master) » post-review --change-description='Exclude "tests" python package from build' -r 4337 Error getting review request 4337: One or more fields had errors (HTTP 400, API Error 105) but in debug output we can see, that server provides a better descrition for error: ei-grad@ei-grad repos/djblets (master) » post-review --change-description='Exclude "tests" python package from build' -r 4337 -d >>> RBTools 0.5.1 >>> Python 2.7.5 (default, May 12 2013, 12:00:47) [GCC 4.8.0 20130502 (prerelease)] >>> Running on Linux-3.9.9-1-ARCH-x86_64-with-glibc2.2.5 >>> Home = /home/ei-grad >>> Current Directory = /home/ei-grad/repos/djblets >>> Checking the repository type. Errors shown below are mostly harmless. DEBUG:root:Checking for a Subversion repository... DEBUG:root:Running: svn info Djblets --non-interactive DEBUG:root:Command exited with rc 1: ['svn', 'info', 'Djblets', '--non-interactive'] svn: E155007: '/home/ei-grad/repos/djblets/Djblets' is not a working copy --- DEBUG:root:Checking for a Git repository... DEBUG:root:Running: git rev-parse --git-dir DEBUG:root:Running: git config core.bare DEBUG:root:Running: git rev-parse --show-toplevel DEBUG:root:Running: git symbolic-ref -q HEAD DEBUG:root:Running: git config --get branch.master.merge DEBUG:root:Running: git config --get branch.master.remote DEBUG:root:Running: git config --get remote.origin.url DEBUG:root:repository info: Path: Djblets, Base path: , Supports changesets: False >>> Finished checking the repository type. >>> HTTP GETting api/info/ DEBUG:root:Running: git merge-base origin/master refs/heads/master DEBUG:root:Running: git diff --no-color --full-index --no-ext-diff --ignore-submodules --no-renames 7b5822c8c3998e357e9db325049d85fc68d392ae..refs/heads/master -M >>> HTTP GETting api/ >>> HTTP GETting http://reviews.reviewboard.org/api/info/ >>> Using the new web API >>> HTTP GETting http://reviews.reviewboard.org/api/review-requests/4337/ >>> Attempting to set field 'branch' to 'master' for review request '4337' >>> HTTP PUTting to http://reviews.reviewboard.org/api/review-requests/4337/draft/: {'branch': 'master'} >>> Attempting to set field 'changedescription' to 'Exclude "tests" python package from build' for review request '4337' >>> HTTP PUTting to http://reviews.reviewboard.org/api/review-requests/4337/draft/: {'changedescription': 'Exclude "tests" python package from build'} >>> Got API Error 105 (HTTP code 400): One or more fields had errors >>> Error data: {u'fields': {u'changedescription': [u'Change descriptions cannot be used for drafts of new review requests']}, u'stat': u'fail', u'draft': {u'last_updated': u'2013-07-17T20:24:55Z', u'description': u'', u'target_people': [], u'changedescription': u'', u'depends_on': [], u'target_groups': [{u'href': u'http://reviews.reviewboard.org/api/groups/djblets/', u'method': u'GET', u'title': u'djblets'}], u'links': {u'self': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/draft/', u'method': u'GET'}, u'update': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/draft/', u'method': u'PUT'}, u'draft_screenshots': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/draft/screenshots/', u'method': u'GET'}, u'draft_file_attachments': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/draft/file-attachments/', u'method': u'GET'}, u'review_request': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/', u'method': u'GET', u'title': u'(no summary)'}, u'delete': {u'href': u'http://reviews.reviewboard.org/api/review-requests/4337/draft/', u'method': u'DELETE'}}, u'bugs_closed': [], u'testing_done': u'', u'branch': u'master', u'id': 4975, u'summary': u'', u'public': False}, u'err': {u'msg': u'One or more fields had errors', u'code': 105}} Error getting review request 4337: One or more fields had errors (HTTP 400, API Error 105) This patch adds a functionality to display error information from 'fields' member of error response, if there are 'fields' member and if the response HTTP code is 400: ei-grad@ei-grad repos/djblets (master) » post-review --change-description='Exclude "tests" python package from build' -r 4337 Error getting review request 4337: One or more fields had errors (HTTP 400, API Error 105) changedescription: Change descriptions cannot be used for drafts of new review requests