Defaulting rb_version attribute

Review Request #3209 — Created July 12, 2012 and submitted

Information

RBTools

Reviewers

A ReviewBoardServer's rb_version attribute is set via its check_api_version()
method. This is fine, but our __init__ didn't set a default (dangerous) and if
the check_api_version() lookup failed then the attribute simply didn't exist
(broken). This caused stacktraces when the lookup fails, a user reports that
this happens when his clock is out of sync causing authentication issues...

Traceback (most recent call last):
File "/share/rbtools/rbtools/postreview.py", line 4114, in <module>
  main()
File "/share/rbtools/rbtools/postreview.py", line 4081, in main
  if (parse_version(server.rb_version) >= parse_version('1.5.2') and
AttributeError: 'ReviewBoardServer' object has no attribute 'rb_version'

Adding a default parameter so check_api_version() failures will simply result
in version checks reporting that we're ancient. Also fixed a version check
which was doing string comparison rather than comparing versions.

This is available in the following branch of my repo...
https://github.com/atagar/rbtools/tree/attr_defaulting
Tested by disabling my authentication credentials and running post-review for a
perforce repository.

We've been using this change against RBTools 0.3. I've adapted the change for
the current master but this copy of it hasn't been exercised.
AT
david
  1. Ship It!
  2. 
      
AT
Review request changed
Status:
Completed
Change Summary:
Pushed to master (e25c695). Thanks!