• 
      

    Defaulting rb_version attribute

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

    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.