Fixed a bug that unitTests running script didn't work in Windows

Review Request #1798 — Created Sept. 28, 2010 and submitted

Information

Review Board

Reviewers

Fixed a bug that unitTests running script didn't work in Windows

Because windows's command prompt don't have the 'symlink' command, the
original script will fail on Windows. Fixed it by checking the platform
and running 'copytree' instead on Windows.
Test on my machine (Windows XP). The script ran successfully, but with 17 failures.
The output is as following:
------------------------------------------------
Creating test database 'default'...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_site
Creating table django_session
Creating table siteconfig_siteconfiguration
Creating table accounts_reviewrequestvisit
Creating table accounts_profile_starred_groups
Creating table accounts_profile_starred_review_requests
Creating table accounts_profile
Creating table changedescs_changedescription
Creating table diffviewer_filediff
Creating table diffviewer_diffset
Creating table diffviewer_diffsethistory
Creating table reviews_group_users
Creating table reviews_group
Creating table reviews_defaultreviewer_repository
Creating table reviews_defaultreviewer_people
Creating table reviews_defaultreviewer_groups
Creating table reviews_defaultreviewer
Creating table reviews_screenshot
Creating table reviews_reviewrequest_changedescs
Creating table reviews_reviewrequest_target_people
Creating table reviews_reviewrequest_inactive_screenshots
Creating table reviews_reviewrequest_screenshots
Creating table reviews_reviewrequest_target_groups
Creating table reviews_reviewrequest
Creating table reviews_reviewrequestdraft_target_people
Creating table reviews_reviewrequestdraft_inactive_screenshots
Creating table reviews_reviewrequestdraft_screenshots
Creating table reviews_reviewrequestdraft_target_groups
Creating table reviews_reviewrequestdraft
Creating table reviews_comment
Creating table reviews_screenshotcomment
Creating table reviews_review_comments
Creating table reviews_review_screenshot_comments
Creating table reviews_review
Creating table scmtools_tool
Creating table scmtools_repository
Creating table django_project_version
Creating table django_evolution
Installing baseline version
Evolutions in diffviewer baseline: add_parent_diffs, filediff_filenames_1024_chars, diffset_basedir, filediff_status
Evolutions in reviews baseline: change_descriptions, last_review_timestamp, shipit_count, default_reviewer_repositories, null_repository
Evolutions in scmtools baseline: bugzilla_url_charfield, repository_raw_file_url, repository_visible, repository_path_length_255
Installing custom SQL for accounts.Profile model
Installing custom SQL for reviews.Group model
Installing custom SQL for reviews.ReviewRequest model
Installing index for admin.LogEntry model
Installing index for auth.Permission model
Installing index for auth.Group_permissions model
Installing index for auth.User_user_permissions model
Installing index for auth.User_groups model
Installing index for auth.Message model
Installing index for siteconfig.SiteConfiguration model
Installing index for accounts.ReviewRequestVisit model
Installing index for accounts.Profile_starred_groups model
Installing index for accounts.Profile_starred_review_requests model
Installing index for diffviewer.FileDiff model
Installing index for diffviewer.DiffSet model
Installing index for reviews.Group_users model
Installing index for reviews.DefaultReviewer_repository model
Installing index for reviews.DefaultReviewer_people model
Installing index for reviews.DefaultReviewer_groups model
Installing index for reviews.ReviewRequest_changedescs model
Installing index for reviews.ReviewRequest_target_people model
Installing index for reviews.ReviewRequest_inactive_screenshots model
Installing index for reviews.ReviewRequest_screenshots model
Installing index for reviews.ReviewRequest_target_groups model
Installing index for reviews.ReviewRequest model
Installing index for reviews.ReviewRequestDraft_target_people model
Installing index for reviews.ReviewRequestDraft_inactive_screenshots model
Installing index for reviews.ReviewRequestDraft_screenshots model
Installing index for reviews.ReviewRequestDraft_target_groups model
Installing index for reviews.ReviewRequestDraft model
Installing index for reviews.Comment model
Installing index for reviews.ScreenshRunning dependency checks (set DEBUG=False to turn this off)...
Warning: pysvn not found.  SVN integration will not work.
Warning: p4python (>=07.3) not found.  Perforce integration will not work.
Warning: hg not found.  Mercurial integration will not work.
Warning: bzrlib not found.  Bazaar integration will not work.
Warning: PyLucene (with JCC) is required to enable search. See the documentation for instructions.
Warning: cvs binary not found.  CVS integration will not work.
Warning: mtn binary not found.  Monotone integration will not work.

Please see http://www.reviewboard.org/docs/manual/dev/admin/
for help setting up Review Board.


nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module
C:\Python25\lib\site-packages\Crypto\Util\randpool.py:40: RandomPool_DeprecationWarning: This application uses RandomPool, which is BROKEN in older releases.  See http://www.pycrypto.org/randpool-broken
  RandomPool_DeprecationWarning)
Testing check_updates_required with valid configuration ... ok
Testing check_updates_required with a bad upload directory ... ok
Testing record_field_change with a list value ... ok
Testing record_field_change with mismatched types ... ok
Testing record_field_change with an object list (using name_field) ... ok
Testing record_field_change with a string value ... ok
Testing using long filenames (1024 characters) in FileDiff. ... ok
Testing parse on a context diff ... ok
Testing patching with an empty diff ... ok
Testing inter-line diffs ... ok
Testing move detection ... ok
Testing patching ... ok
Testing patching a CR file with a CRLF diff ... ok
Testing patching a CRLF file with a CR diff ... ok
Testing patching a CRLF file with a CRLF diff ... ok
Testing patching a file indicating no newline with a trailing \r ... ok
Testing parse on a unified diff ... ok
Testing highlightregion ... ok
Testing interesting lines scanner with a C# file ... ok
Testing interesting lines scanner with a Java file ... ok
Testing interesting lines scanner with a JavaScript file ... ok
Testing interesting lines scanner with an Objective C file ... ok
Testing interesting lines scanner with a PHP file ... ok
Testing interesting lines scanner with a Perl file ... ok
Testing interesting lines scanner with a Python file ... ok
Testing interesting lines scanner with a Ruby file ... ok
Testing myers differ ... ok
Testing sending an e-mail when creating a new review request ... ok
Testing sending an e-mail when replying to a review request ... ok
Testing sending an e-mail when replying to a review ... ok
Testing sending an e-mail when updating a review request ... ok
Testing report_list ... ok
Testing review report ... ok
Testing review_request report ... ok
Testing status_report ... ok
Testing consolidation of duplicate reviews ... ok
Testing get_all_review_requests ... ok
Testing get_review_requests_from_user ... ok
Testing get_review_requests_to_group ... ok
Testing get_review_requests_to_user ... ok
Testing get_review_requests_to_user_directly ... ok
Testing get_review_requests_to_user_groups ... ok
Testing DefaultReviewer.objects.for_repository ... ok
Testing recording of draft changes. ... ok
Testing review requests with very long bug numbers ... ok
Testing review requests with no summary ... ok
Testing the ifneatnumber tag with milestone numbers ... ok
Testing the ifneatnumber tag with palindrome numbers ... ok
Testing dashboard view (incoming) ... ok
Testing dashboard view (outgoing) ... ok
Testing dashboard view (to-me) ... ok
Testing dashboard view (to-group devgroup) ... ok
Testing dashboard view (mine) ... ok
Testing dashboard view (to-group devgroup) ... ok
Testing group_list view ... ok
Testing group_list view with site-wide login enabled ... ok
Testing the diff viewer with interdiffs ... ERROR
Testing the diff viewer with interdiffs containing new files ... ERROR
Testing new_review_request view (basic responses) ... ok
Testing new_review_request view (uploading diffs) ... ERROR
Testing review_detail redirect ... ok
Testing review_detail view (1) ... ERROR
Testing review_detail view (3) ... ERROR
Testing review_detail view with site-wide login enabled ... ok
Testing all_review_requests view ... ok
Testing all_review_requests view with site-wide login enabled ... ok
Testing submitter_list view ... ok
Testing the submitter list with various characters in the username ... ok
Testing submitter_list view with site-wide login enabled ... ok
Testing parsing CVS diff with bad info ... SKIP: cvs binary not found
Testing parsing CVS bad diff with new file ... SKIP: cvs binary not found
Testing a bad CVSROOT ... SKIP: cvs binary not found
Testing CVSTool.get_file ... SKIP: cvs binary not found
Testing parsing CVS inter-revision diff ... SKIP: cvs binary not found
Testing basic CVSTool API ... SKIP: cvs binary not found
Testing parsing CVS diff with new file ... SKIP: cvs binary not found
Testing parsing a CVSROOT with a port ... SKIP: cvs binary not found
Testing parsing a CVSROOT without a port ... SKIP: cvs binary not found
Testing revision number parsing ... SKIP: cvs binary not found
Testing parsing CVS simple diff ... SKIP: cvs binary not found
Testing basic scmtools.core API ... ok
Testing parsing Git diff with binary ... ok
Testing parsing Git diff with existing and new files ... ok
Testing parsing Git diff with deleted file ... ok
Testing GitTool.file_exists ... ERROR
Testing parsing filemode changes Git diff ... ok
Testing parsing filemode changes with following Git diff ... ok
Testing GitTool.get_file ... ERROR
Testing GitTool.get_file with remote files and short SHA1 error ... ok
Testing parsing Git diff with new file ... ok
Testing parsing Git diff new file, no content ... ok
Testing parsing Git diff new file, no content, with following ... ok
Testing Git revision number parsing ... ok
Testing GitTool.parse_diff_revision with remote files and short SHA1 error ... ok
Testing parsing simple Git diff ... ok
Testing HgDiffParser with a diff between committed revisions ... SKIP: Hg is not installed
Testing HgDiffParser with a diff that creates a new file ... SKIP: Hg is not installed
Testing HgDiffParser with a diff with an uncommitted change ... SKIP: Hg is not installed
Testing HgDiffParser with a diff that contains non-diff junk test as a preamble ... SKIP: Hg is not installed
Testing HgTool.get_file ... SKIP: Hg is not installed
Testing basic HgTool API ... SKIP: Hg is not installed
Testing HgTool with a patch that creates a new file ... SKIP: Hg is not installed
Testing HgDiffParser revision number parsing ... SKIP: Hg is not installed
Testing Perforce binary diff parsing ... SKIP: perforce/p4python is not installed
Testing PerforceTool.get_changeset ... SKIP: perforce/p4python is not installed
Testing Perforce empty and normal diff parsing ... SKIP: perforce/p4python is not installed
Testing Perforce empty diff parsing ... SKIP: perforce/p4python is not installed
Testing PerforceTool.get_file ... SKIP: perforce/p4python is not installed
Testing parsing SVN diff with binary file ... SKIP: pysvn is not installed
Testing SVNTool.get_file ... SKIP: pysvn is not installed
Testing basic SVNTool API ... SKIP: pysvn is not installed
Testing parsing SVN diff with keywords ... SKIP: pysvn is not installed
Testing revision number parsing ... SKIP: pysvn is not installed
Testing parsing SVN diff with unterminated keywords ... SKIP: pysvn is not installed
Testing the deprecated reviewrequests/diff/file/line/comments delete API ... ok
Testing the deprecated reviewrequests/diff/file/line/comments list API ... ok
Testing the deprecated reviewrequests/diff/file/line/comments set API ... ok
Testing the deprecated groups API ... ok
Testing the deprecated groups API with custom query ... ok
Testing the deprecated groups/star API ... ok
Testing the deprecated groups/star API with Does Not Exist error ... ok
Testing the deprecated groups/unstar API ... ok
Testing the deprecated groups/unstar API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/diff/file/line/comments interdiff delete API ... ERROR
Testing the deprecated reviewrequests/diff/file/line/comments interdiff list API ... ERROR
Testing the deprecated reviewrequests/diff/file/line/comments interdiff set API ... ERROR
Testing the deprecated reviewrequests/diff/new API ... ERROR
Testing the deprecated reviewrequests/diff/new API with Invalid Form Data ... ERROR
Testing the deprecated reviewrequests/new API ... ok
Testing the deprecated reviewrequests/new API with submit_as ... ok
Testing the deprecated reviewrequests/new API with submit_as and Permission Denied error ... ok
Testing the deprecated reviewrequests/new API with Invalid Repository error ... ok
Testing the deprecated reviewrequests/screenshot/new API ... FAIL
Testing the deprecated reviewrequests/screenshot/new API with Permission Denied error ... ok
Testing the deprecated reviewrequests/reviews/replies API ... ok
Testing the deprecated reviewrequests/reviews/replies/count API ... ok
Testing the deprecated reviewrequests/reviews/replies/draft API with body_bottom ... ok
Testing the deprecated reviewrequests/reviews/replies/draft API with body_top ... ok
Testing the deprecated reviewrequests/reviews/replies/draft API with comment ... ok
Testing the deprecated reviewrequests/reviews/replies/draft/discard API ... ok
Testing the deprecated reviewrequests/reviews/replies/draft/save API ... ok
Testing the deprecated reviewrequests/reviews/replies/draft API with screenshot_comment ... FAIL
Testing the deprecated repositories API ... ok
Testing the deprecated reviewrequests/reviews/comments/count API ... ok
Testing the deprecated reviewrequests/reviews/comments API ... ok
Testing the deprecated reviewrequests/reviews/draft/comments API ... FAIL
Testing the deprecated reviewrequests/reviews/draft/delete API ... ok
Testing the deprecated reviewrequests/reviews/draft/delete API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/reviews/draft/publish API ... ok
Testing the deprecated reviewrequests/reviews/draft/save API ... ok
Testing the deprecated reviewrequests/<id> API ... ok
Testing the deprecated reviewrequests/repository/changenum API ... ok
Testing the deprecated reviewrequests/delete API ... ok
Testing the deprecated reviewrequests/delete API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/delete API with Permission Denied error ... ok
Testing the deprecated reviewrequests/diffsets API ... ok
Testing the deprecated reviewrequests/draft/discard API ... ok
Testing the deprecated reviewrequests/draft/publish API ... ok
Testing the deprecated reviewrequests/draft/publish API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/draft/save API ... ok
Testing the deprecated reviewrequests/draft/save API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/draft/set API ... ok
Testing the deprecated reviewrequests/draft/set/<field> API ... ok
Testing the deprecated reviewrequests/draft/set/<field> API with invalid name ... ok
Testing the deprecated reviewrequests/draft/set/<field> API without valid permissions ... ok
Testing the deprecated reviewrequests/all API ... ok
Testing the deprecated reviewrequests/all/count API ... ok
Testing the deprecated reviewrequests/all API with custom status ... ok
Testing the deprecated reviewrequests/<id> API with Permission Denied error ... ok
Testing the deprecated reviewrequests/publish API ... ok
Testing the deprecated reviewrequests/star API ... ok
Testing the deprecated reviewrequests/star API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/unstar API ... ok
Testing the deprecated reviewrequests/unstar API with Does Not Exist error ... ok
Testing the deprecated reviewrequests/from/user API ... ok
Testing the deprecated reviewrequests/from/user/count API ... ok
Testing the deprecated reviewrequests/from/user API with custom status ... ok
Testing the deprecated reviewrequests/to/group API ... ok
Testing the deprecated reviewrequests/to/group/count API ... ok
Testing the deprecated reviewrequests/to/group API with custom status ... ok
Testing the deprecated reviewrequests/to/user API ... ok
Testing the deprecated reviewrequests/to/user/count API ... ok
Testing the deprecated reviewrequests/to/user/directly API ... ok
Testing the deprecated reviewrequests/to/user/directly/count API ... ok
Testing the deprecated reviewrequests/to/user/directly API with custom status ... ok
Testing the deprecated reviewrequests/to/user API with custom status ... ok
Testing the deprecated reviewrequests/reviews API ... ok
Testing the deprecated reviewrequests/reviews/count API ... ok
Testing the deprecated reviewrequests/s/comments delete API ... FAIL
Testing the deprecated reviewrequests/s/comments delete API with non-existant comment ... FAIL
Testing the deprecated reviewrequests/s/comments list API ... FAIL
Testing the deprecated reviewrequests/s/comments set API ... FAIL
Testing the deprecated users API ... ok
Testing the deprecated users API with custom query ... ok
Testing the GET review-requests/<id>/diffs/<revision>/files/<id>/diff-comments/ API ... ok
Testing the GET review-requests/<id>/diffs/<revision>/files/<id>/diff-comments/?line= API ... ok
Testing the GET review-requests/<id>/diffs/<revision>/ API ... ok
Testing the GET review-requests/<id>/diffs/ API ... ok
Testing the POST review-requests/<id>/diffs/ API ... ERROR
Testing the POST review-requests/<id>/diffs/ API with Invalid Form Data ... ERROR
Testing the GET repositories/ API ... ok
Testing the GET repositories/<id>/info API ... FAIL
Testing the DELETE review-requests/<id>/reviews/<id>/diff-comments/<id>/ API ... ERROR
Testing the GET review-requests/<id>/reviews/<id>/diff-comments API ... ok
Testing the GET review-requests/<id>/reviews/<id>/diff-comments/?counts-only=1 API ... ok
Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API with interdiff ... ERROR
Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API ... ERROR
Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API with interdiff ... ERROR
Testing the GET groups/ API ... ok
Testing the GET groups/?q= API ... ok
Testing the POST review-requests/<id>/reviews/<id>/replies/<id>/diff-comments/ API ... ok
Testing the PUT review-requests/<id>/reviews/<id>/replies/<id>/diff-comments/ API ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/replies/<id>/ API ... ok
Testing the GET review-requests/<id>/reviews/<id>/replies API ... ok
Testing the GET review-requests/<id>/reviews/<id>/replies/?counts-only=1 API ... ok
Testing the POST review-requests/<id>/reviews/<id>/replies/ API ... ok
Testing the POST review-requests/<id>/reviews/<id>/replies/ API with body_bottom ... ok
Testing the POST review-requests/<id>/reviews/<id>/replies/ API with body_top ... ok
Testing the PUT review-requests/<id>/reviews/<id>/replies/<id> API ... ok
Testing the PUT review-requests/<id>/reviews/<id>/replies/<id>/?public=1 API ... ok
Testing the POST review-requests/<id>/reviews/<id>/replies/<id>/screenshot-comments/ API ... FAIL
Testing the DELETE review-requests/<id>/draft/ API ... ok
Testing the POST review-requests/<id>/draft/ API ... ok
Testing the PUT review-requests/<id>/draft/ API ... ok
Testing the PUT review-requests/<id>/draft/?public=1 API ... ok
Testing the PUT review-requests/<id>/draft/?public=1 API with a new review request ... ok
Testing the PUT review-requests/<id>/draft/ API with a change description ... ok
Testing the PUT review-requests/<id>/draft/ API with Invalid Form Data error ... ok
Testing the PUT review-requests/<id>/draft/ API with Permission Denied error ... ok
Testing the DELETE review-requests/<id>/ API ... ok
Testing the DELETE review-requests/<id>/ API with Does Not Exist error ... ok
Testing the DELETE review-requests/<id>/ API with Permission Denied error ... ok
Testing the GET review-requests/<id>/ API ... ok
Testing the GET review-requests/<id>/ API with Permission Denied error ... ok
Testing the GET review-requests/?repository=&changenum= API ... ok
Testing the GET review-requests/ API ... ok
Testing the GET review-requests/?counts-only=1 API ... ok
Testing the GET review-requests/?from-user= API ... ok
Testing the GET review-requests/?from-user=&counts-only=1 API ... ok
Testing the GET review-requests/?from-user=&status= API ... ok
Testing the GET review-requests/?last-updated-from= API ... ok
Testing the GET review-requests/?last-updated-to= API ... ok
Testing the GET review-requests/?status= API ... ok
Testing the GET review-requests/?time-added-from= API ... ok
Testing the GET review-requests/?time-added-to= API ... ok
Testing the GET review-requests/?to-groups= API ... ok
Testing the GET review-requests/?to-groups=&counts-only=1 API ... ok
Testing the GET review-requests/?to-groups=&status= API ... ok
Testing the GET review-requests/?to-users= API ... ok
Testing the GET review-requests/?to-users=&counts-only=1 API ... ok
Testing the GET review-requests/?to-users=&status= API ... ok
Testing the GET review-requests/?to-users-directly= API ... ok
Testing the GET review-requests/?to-users-directly=&counts-only=1 API ... ok
Testing the GET review-requests/?to-users-directly=&status= API ... ok
Testing the POST review-requests/ API ... ok
Testing the POST review-requests/ API with Invalid Repository error ... ok
Testing the POST review-requests/?submit_as= API ... ok
Testing the POST review-requests/?submit_as= API with Permission Denied error ... ok
Testing the PUT review-requests/<id>/?status=discarded API ... ok
Testing the PUT review-requests/<id>/?status=pending API ... ok
Testing the PUT review-requests/<id>/?status=submitted API ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/ API ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/ API with Does Not Exist error ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/ API with Permission Denied error ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/ API with pre-published review ... ok
Testing the GET review-requests/<id>/reviews/ API ... ok
Testing the GET review-requests/<id>/reviews/?counts-only=1 API ... ok
Testing the POST review-requests/<id>/reviews/ API ... ok
Testing the PUT review-requests/<id>/reviews/<id>/ API ... ok
Testing the PUT review-requests/<id>/reviews/<id>/?public=1 API ... ok
Testing the PUT review-requests/<id>/reviews/<id>/ API with pre-published review ... ok
Testing the DELETE review-requests/<id>/reviews/<id>/screenshot-comments/<id>/ API ... FAIL
Testing the DELETE review-requests/<id>/reviews/<id>/screenshot-comments/<id>/ API with Does Not Exist error ... FAIL
Testing the POST review-requests/<id>/reviews/<id>/screenshot-comments/ API ... FAIL
Testing the GET review-requests/<id>/reviews/draft/screenshot-comments API ... FAIL
Testing the GET review-requests/<id>/screenshos/<id>/comments/ API ... FAIL
Testing the POST review-requests/<id>/draft/screenshots/ API ... FAIL
Testing the POST review-requests/<id>/draft/screenshots/ API with Permission Denied error ... ok
Testing the PUT review-requests/<id>/draft/screenshots/<id>/ API ... FAIL
Testing the POST review-requests/<id>/screenshots/ API ... FAIL
Testing the POST review-requests/<id>/screenshots/ API with Permission Denied error ... ok
Testing the GET info/ API ... ok
Testing the GET session/ API with anonymous user ... ok
Testing the GET session/ API with logged in user ... ok
Testing the GET users/ API ... ok
Testing the GET users/?q= API ... ok
Testing the DELETE users/<username>/watched/review-groups/<id>/ API ... ok
Testing the DELETE users/<username>/watched/review-groups/<id>/ API with Does Not Exist error ... ok
Testing the POST users/<username>/watched/review-groups/ API ... ok
Testing the POST users/<username>/watched/review-groups/ API with Does Not Exist error ... ok
Testing the DELETE users/<username>/watched/review_request/ API ... ok
Testing the DELETE users/<username>/watched/review_request/ API with Does Not Exist error ... ok
Testing the POST users/<username>/watched/review_request/ API ... ok
Testing the POST users/<username>/watched/review_request/ with Does Not Exist error ... ok

======================================================================
ERROR: Testing the diff viewer with interdiffs
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\tests.py", line 463, in testInterdiff
    response = self.client.get('/r/8/diff/1-2/')
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 298, in get
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 465, in diff
    interdiff_revision is not None,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user AnonymousUser at http://testserver/r/8/diff/1-2/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 465, in diff
    interdiff_revision is not None,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the diff viewer with interdiffs containing new files
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\tests.py", line 491, in testInterdiffNewFile
    response = self.client.get('/r/8/diff/2-3/')
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 298, in get
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 465, in diff
    interdiff_revision is not None,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user AnonymousUser at http://testserver/r/8/diff/2-3/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 465, in diff
    interdiff_revision is not None,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing new_review_request view (uploading diffs)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\tests.py", line 280, in testNewReviewRequest1
    'basedir': '/trunk',
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\djblets\djblets\auth\util.py", line 46, in _checklogin
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 68, in new_review_request
    parent_diff_file=request.FILES.get('parent_diff_path'))
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 185, in create
    'parent_diff_path': parent_diff_file,
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured logging << --------------------
root: ERROR: Error loading SCMTool for repository Navi SVN (ID 2): No module named pysvn
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 109, in __init__
    self.field_mapping[repo.id] = repo.get_scmtool().get_fields()
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
root: ERROR: Error loading SCMTool for repository Review Board SVN (ID 1): No module named pysvn
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 109, in __init__
    self.field_mapping[repo.id] = repo.get_scmtool().get_fields()
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
root: ERROR: Error loading SCMTool for repository Navi SVN (ID 2): No module named pysvn
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 109, in __init__
    self.field_mapping[repo.id] = repo.get_scmtool().get_fields()
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
root: ERROR: Error loading SCMTool for repository Review Board SVN (ID 1): No module named pysvn
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 109, in __init__
    self.field_mapping[repo.id] = repo.get_scmtool().get_fields()
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
root: ERROR: Error loading SCMTool for repository Subversion SVN (ID 3): No module named pysvn
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 109, in __init__
    self.field_mapping[repo.id] = repo.get_scmtool().get_fields()
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
root: ERROR: Exception thrown for user grumpy at http://testserver/r/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\djblets\djblets\auth\util.py", line 46, in _checklogin
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 68, in new_review_request
    parent_diff_file=request.FILES.get('parent_diff_path'))
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 185, in create
    'parent_diff_path': parent_diff_file,
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing review_detail view (1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\tests.py", line 186, in testReviewDetail1
    response = self.client.get('/r/1/')
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 298, in get
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 46, in _check_valid_prefs
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 251, in review_detail
    'PRE_CREATION': PRE_CREATION,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user AnonymousUser at http://testserver/r/1/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 46, in _check_valid_prefs
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 251, in review_detail
    'PRE_CREATION': PRE_CREATION,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing review_detail view (3)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\reviews\tests.py", line 209, in testReviewDetail2
    response = self.client.get('/r/3/')
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 298, in get
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 46, in _check_valid_prefs
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 251, in review_detail
    'PRE_CREATION': PRE_CREATION,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user admin at http://testserver/r/3/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 27, in _check
    return view_func(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\accounts\decorators.py", line 46, in _check_valid_prefs
    return view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 251, in review_detail
    'PRE_CREATION': PRE_CREATION,
  File "C:\src\reviewboard\reviewboard\reviews\views.py", line 91, in make_review_request_context
    upload_diff_form = UploadDiffForm(review_request)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing GitTool.file_exists
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\scmtools\tests.py", line 878, in testFileExists
    self.assert_(self.tool.file_exists("readme", "e965047"))
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 72, in file_exists
    return self.client.get_file_exists(path, revision)
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 343, in get_file_exists
    contents = self._cat_file(path, revision, "-t")
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 384, in _cat_file
    raise SCMError(errmsg)
SCMError: fatal: Not a git repository: 'None'


======================================================================
ERROR: Testing GitTool.get_file
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\scmtools\tests.py", line 893, in testGetFile
    self.assertEqual(self.tool.get_file("readme", "e965047"), 'Hello\n')
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 65, in get_file
    return self.client.get_file(path, revision)
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 324, in get_file
    return self._cat_file(path, revision, "blob")
  File "C:\src\reviewboard\reviewboard\scmtools\git.py", line 384, in _cat_file
    raise SCMError(errmsg)
SCMError: fatal: Not a git repository: 'None'


======================================================================
ERROR: Testing the deprecated reviewrequests/diff/file/line/comments interdiff delete API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3025, in testInterDiffCommentsDelete
    self.testInterDiffCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2987, in testInterDiffCommentsSet
    diffset_id = self.testNewDiff(review_request).id
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2847, in testNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2036, in apiPost
    response = self.client.post("/api/json/%s/" % path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:38", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:38", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:38', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:38', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/diff/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02414650>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/json/reviewrequests/9/diff/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the deprecated reviewrequests/diff/file/line/comments interdiff list API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3043, in testInterDiffCommentsList
    self.testInterDiffCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2987, in testInterDiffCommentsSet
    diffset_id = self.testNewDiff(review_request).id
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2847, in testNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2036, in apiPost
    response = self.client.post("/api/json/%s/" % path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:40", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:40", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:40', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:40', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/diff/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02414530>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/json/reviewrequests/9/diff/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the deprecated reviewrequests/diff/file/line/comments interdiff set API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2987, in testInterDiffCommentsSet
    diffset_id = self.testNewDiff(review_request).id
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2847, in testNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2036, in apiPost
    response = self.client.post("/api/json/%s/" % path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:42", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:42", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:42', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:42', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/diff/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02414A88>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/json/reviewrequests/9/diff/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the deprecated reviewrequests/diff/new API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2847, in testNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2036, in apiPost
    response = self.client.post("/api/json/%s/" % path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:44", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:44", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:44', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:44', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/diff/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x024145C0>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/json/reviewrequests/9/diff/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the deprecated reviewrequests/diff/new API with Invalid Form Data
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2860, in testNewDiffInvalidFormData
    rsp = self.apiPost("reviewrequests/%s/diff/new" % review_request.id)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2036, in apiPost
    response = self.client.post("/api/json/%s/" % path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:47", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:47", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:47', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:47', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/diff/new/
Post data: {}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/json/reviewrequests/9/diff/new/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\decorators.py", line 57, in _view
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\http.py", line 37, in inner
    return func(request, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\json.py", line 1162, in new_diff
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the POST review-requests/<id>/diffs/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1632, in test_post_diffs
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:29", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:29", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:29', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:29', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02211920>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/9/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the POST review-requests/<id>/diffs/ API with Invalid Form Data
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1664, in test_post_diffs_with_missing_data
    }, expected_status=400)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:32", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:32", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:32', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:32', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {}
Raw response: {"fields": {"path": ["This field is required"]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}
Response: {'fields': {'path': ['This field is required']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}}
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:32", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/10/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/10/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/10/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/10/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/10/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/10/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/10/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/10/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 10, "time_added": "2010-09-28 18:15:32", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:32', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/10/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/10/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/10/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/10/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/10/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/10/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/10/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/10/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:32', 'summary': '', 'id': 10}}
POSTing to /api/review-requests/10/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02546458>}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/10/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the DELETE review-requests/<id>/reviews/<id>/diff-comments/<id>/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1298, in test_delete_diff_comment_with_interdiff
    self._common_post_interdiff_comments(comment_text)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1315, in _common_post_interdiff_comments
    rsp = self._postNewDiff(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 243, in _postNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:39", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:39", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:39', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:39', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02546530>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/9/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API with interdiff
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1282, in test_get_diff_comments_with_interdiff
    self._common_post_interdiff_comments(comment_text)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1315, in _common_post_interdiff_comments
    rsp = self._postNewDiff(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 243, in _postNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:45", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:45", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:45', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:45', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02546848>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/9/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1243, in test_post_diff_comments
    rsp = self._postNewDiff(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 243, in _postNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:48", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:48", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:48', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:48', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02546848>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/9/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
ERROR: Testing the POST review-requests/<id>/reviews/<id>/diff-comments/ API with interdiff
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1268, in test_post_diff_comments_with_interdiff
    self._common_post_interdiff_comments(comment_text)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1315, in _common_post_interdiff_comments
    rsp = self._postNewDiff(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 243, in _postNewDiff
    'basedir': "/trunk",
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 90, in api_post_with_response
    response = self.client.post(path, query)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\test\client.py", line 330, in post
    response = self.request(**r)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:15:50", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:15:50", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:50', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:15:50', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/diffs/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\scmtools\testdata\svn_makefile.diff', mode 'r' at 0x02546458>, 'basedir': '/trunk'}

--------------------- >> end captured stdout << ----------------------
-------------------- >> begin captured logging << --------------------
root: ERROR: Exception thrown for user grumpy at http://testserver/api/review-requests/9/diffs/

No module named pysvn
Traceback (most recent call last):
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\core\handlers\base.py", line 100, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\cache.py", line 69, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "c:\python25\lib\site-packages\django-1.2.3-py2.5.egg\django\views\decorators\vary.py", line 22, in inner_func
    response = func(*args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 284, in __call__
    result = view(request, api_format=api_format, *args, **kwargs)
  File "c:\src\djblets\djblets\webapi\resources.py", line 392, in post
    return self.create(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 95, in _checklogin
    response = view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 62, in _call
    return view_func(*args, **kwargs)
  File "C:\src\djblets\djblets\webapi\decorators.py", line 233, in _validate
    return view_func(*args, **new_kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\resources.py", line 1093, in create
    form = UploadDiffForm(review_request, form_data, request.FILES)
  File "C:\src\reviewboard\reviewboard\reviews\forms.py", line 229, in __init__
    data, *args, **kwargs)
  File "C:\src\reviewboard\reviewboard\diffviewer\forms.py", line 44, in __init__
    if self.repository.get_scmtool().get_diffs_use_absolute_paths():
  File "C:\src\reviewboard\reviewboard\scmtools\models.py", line 52, in get_scmtool
    return cls(self)
  File "C:\src\reviewboard\reviewboard\scmtools\svn.py", line 77, in __init__
    import pysvn
ImportError: No module named pysvn
--------------------- >> end captured logging << ---------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/screenshot/new API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:12:58", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:12:58", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:12:58', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:12:58', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02435920>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/reviews/replies/draft API with screenshot_comment
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2711, in testReplyDraftScreenshotComment
    comment = self.testScreenshotCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3079, in testScreenshotCommentsSet
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:13:20", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:13:20", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:13:20', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:13:20', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02435F08>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/reviews/draft/comments API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2636, in testReviewDraftComments
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:13:29", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:13:29", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:13:29', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:13:29', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02435BA8>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/s/comments delete API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3097, in testScreenshotCommentsDelete
    comment = self.testScreenshotCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3079, in testScreenshotCommentsSet
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:15:06", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:15:06", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:06', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:15:06', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02211E30>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/s/comments delete API with non-existant comment
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3115, in testScreenshotCommentsDeleteNonExistant
    comment = self.testScreenshotCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3079, in testScreenshotCommentsSet
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:15:09", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:15:09", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:09', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:15:09', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02211D10>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/s/comments list API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3132, in testScreenshotCommentsList
    comment = self.testScreenshotCommentsSet()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3079, in testScreenshotCommentsSet
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:15:11", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:15:11", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:11', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:15:11', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02211B60>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the deprecated reviewrequests/s/comments set API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 3079, in testScreenshotCommentsSet
    screenshot = self.testNewScreenshot()
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 2878, in testNewScreenshot
    self.assertEqual(rsp['stat'], 'ok')
AssertionError: 'fail' != 'ok'
-------------------- >> begin captured stdout << ---------------------
Posting to /api/json/reviewrequests/new/
Post data: {'repository_path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "bugs_closed": "", "last_updated": "2010-09-28 18:15:13", "description": "", "repository": {"path": "file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo", "tool": "Subversion", "id": 3, "name": "Subversion SVN"}, "target_groups": [], "public": false, "changenum": null, "target_people": [], "testing_done": "", "branch": "", "submitter": {"username": "grumpy", "first_name": "Grumpy", "last_name": "Dwarf", "url": "/users/grumpy/", "email": "grumpy@example.com", "fullname": "Grumpy Dwarf", "id": 4}, "time_added": "2010-09-28 18:15:13", "summary": "", "id": 9}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:15:13', 'description': '', 'repository': {'path': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo', 'tool': 'Subversion', 'id': 3, 'name': 'Subversion SVN'}, 'id': 9, 'target_groups': [], 'bugs_closed': '', 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'submitter': {'username': 'grumpy', 'first_name': 'Grumpy', 'last_name': 'Dwarf', 'url': '/users/grumpy/', 'id': 4, 'fullname': 'Grumpy Dwarf', 'email': 'grumpy@example.com'}, 'time_added': '2010-09-28 18:15:13', 'summary': '', 'public': False}}
Posting to /api/json/reviewrequests/9/screenshot/new/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x02211DA0>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}, "deprecated": {"in_version": "1.5"}}
Response: {'fields': {'path': ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.']}, 'stat': 'fail', 'err': {'msg': 'One or more fields had errors', 'code': 105}, 'deprecated': {'in_version': '1.5'}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the GET repositories/<id>/info API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 298, in test_get_repository_info
    rsp = self.apiGet("repositories/%d/info" % self.repository.pk)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 76, in apiGet
    expected_redirects)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 55, in api_func_wrapper
    self.assertEqual(response.status_code, expected_status)
AssertionError: 500 != 200
-------------------- >> begin captured stdout << ---------------------
GETing /api/repositories/3/info/
Query data: {}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the POST review-requests/<id>/reviews/<id>/replies/<id>/screenshot-comments/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1576, in test_post_reply_with_screenshot_comment
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:16:21", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:16:21", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:16:21', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:16:21', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025468D8>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the DELETE review-requests/<id>/reviews/<id>/screenshot-comments/<id>/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1949, in test_delete_screenshot_comment
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:19", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:19", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:19', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:19', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA140>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the DELETE review-requests/<id>/reviews/<id>/screenshot-comments/<id>/ API with Does Not Exist error
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1983, in test_delete_screenshot_comment_with_does_not_exist_error
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:21", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:21", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:21', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:21', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA068>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the POST review-requests/<id>/reviews/<id>/screenshot-comments/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1918, in test_post_screenshot_comments
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:23", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:23", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:23', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:23', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA0F8>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the GET review-requests/<id>/reviews/draft/screenshot-comments API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1352, in test_get_review_screenshot_comments
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:26", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:26", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:26', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:26', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA380>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the GET review-requests/<id>/screenshos/<id>/comments/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1873, in test_get_screenshot_comments
    rsp = self._postNewScreenshot(review_request)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 226, in _postNewScreenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:28", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:28", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:28', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:28', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA2A8>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the POST review-requests/<id>/draft/screenshots/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1699, in test_post_screenshots
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:30", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:30", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:30', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:30', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA6E0>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the PUT review-requests/<id>/draft/screenshots/<id>/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1736, in test_put_screenshot
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:35", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:35", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:35', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:35', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/draft/screenshots/
Post data: {'caption': 'Trophy', 'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA578>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

======================================================================
FAIL: Testing the POST review-requests/<id>/screenshots/ API
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 1771, in test_post_screenshots
    'path': f,
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 97, in apiPost
    rsp, result = self.api_post_with_response(*args, **kwargs)
  File "C:\src\reviewboard\reviewboard\webapi\tests.py", line 92, in api_post_with_response
    self.assertEqual(response.status_code, expected_status)
AssertionError: 400 != 201
-------------------- >> begin captured stdout << ---------------------
POSTing to /api/review-requests/
Post data: {'repository': 'file://C:\\src\\reviewboard\\reviewboard\\webapi\\../scmtools/testdata/svn_repo'}
Raw response: {"stat": "ok", "review_request": {"status": "pending", "last_updated": "2010-09-28 18:18:37", "description": "", "links": {"diffs": {"href": "http://testserver/api/review-requests/9/diffs/", "method": "GET"}, "repository": {"href": "http://testserver/api/repositories/3/", "method": "GET", "title": "Subversion SVN"}, "self": {"href": "http://testserver/api/review-requests/9/", "method": "GET"}, "update": {"href": "http://testserver/api/review-requests/9/", "method": "PUT"}, "last_update": {"href": "http://testserver/api/review-requests/9/last-update/", "method": "GET"}, "reviews": {"href": "http://testserver/api/review-requests/9/reviews/", "method": "GET"}, "draft": {"href": "http://testserver/api/review-requests/9/draft/", "method": "GET"}, "submitter": {"href": "http://testserver/api/users/grumpy/", "method": "GET", "title": "grumpy"}, "screenshots": {"href": "http://testserver/api/review-requests/9/screenshots/", "method": "GET"}, "delete": {"href": "http://testserver/api/review-requests/9/", "method": "DELETE"}}, "target_groups": [], "bugs_closed": [], "changenum": null, "target_people": [], "testing_done": "", "branch": "", "id": 9, "time_added": "2010-09-28 18:18:37", "summary": "", "public": false}}
Response: {'stat': 'ok', 'review_request': {'status': 'pending', 'last_updated': '2010-09-28 18:18:37', 'description': '', 'links': {'diffs': {'href': 'http://testserver/api/review-requests/9/diffs/', 'method': 'GET'}, 'repository': {'href': 'http://testserver/api/repositories/3/', 'method': 'GET', 'title': 'Subversion SVN'}, 'self': {'href': 'http://testserver/api/review-requests/9/', 'method': 'GET'}, 'update': {'href': 'http://testserver/api/review-requests/9/', 'method': 'PUT'}, 'last_update': {'href': 'http://testserver/api/review-requests/9/last-update/', 'method': 'GET'}, 'reviews': {'href': 'http://testserver/api/review-requests/9/reviews/', 'method': 'GET'}, 'draft': {'href': 'http://testserver/api/review-requests/9/draft/', 'method': 'GET'}, 'submitter': {'href': 'http://testserver/api/users/grumpy/', 'method': 'GET', 'title': 'grumpy'}, 'screenshots': {'href': 'http://testserver/api/review-requests/9/screenshots/', 'method': 'GET'}, 'delete': {'href': 'http://testserver/api/review-requests/9/', 'method': 'DELETE'}}, 'public': False, 'target_groups': [], 'bugs_closed': [], 'changenum': None, 'target_people': [], 'testing_done': '', 'branch': '', 'time_added': '2010-09-28 18:18:37', 'summary': '', 'id': 9}}
POSTing to /api/review-requests/9/screenshots/
Post data: {'path': <open file 'C:\src\reviewboard\reviewboard\htdocs\media\rb\images\trophy.png', mode 'r' at 0x025FA6E0>}
Raw response: {"fields": {"path": ["Upload a valid image. The file you uploaded was either not an image or a corrupted image."]}, "stat": "fail", "err": {"msg": "One or more fields had errors", "code": 105}}

--------------------- >> end captured stdout << ----------------------

----------------------------------------------------------------------
Ran 294 tests in 504.063s

FAILED (SKIP=30, errors=18, failures=17)
otComment model
Installing index for reviews.Review_comments model
Installing index for reviews.Review_screenshot_comments model
Installing index for reviews.Review model
Installing index for scmtools.Repository model
Installing index for django_evolution.Evolution model
No fixtures found.
No fixtures found.
david
  1. Looks good. Committed as 9f1c2fd.
    
    You can fix many of those test failures by installing pysvn.
  2.