• 
      

    Fix up a variety of unicode/bytes issues with SVN.

    Review Request #9627 — Created Feb. 12, 2018 and submitted

    Information

    RBTools
    master
    4f91bf4...

    Reviewers

    The SVN client was handling a variety of things using the wrong string
    types, most notably filenames. In Python 3, filenames are expected to be
    treated as str internally, and then serialized/deserialized using the
    filesystem encoding (theoretically this is also the case in Python 2,
    but the implicit casting makes it easy to be sloppy). This change fixes
    those up so that we're at least sucessfully running the tests.

    This also incidentally fixes bug 4547, which involves using
    Popen.communicate() instead of Popen.wait().

    Ran unit tests on Python 2.7 and 3.6.

    Description From Last Updated

    Maybe worth doing this at the module level, sicne we need it a few times?

    chipx86chipx86

    Feels like this might be more readable as: return (diff_line.split(b'\n')[0].decode(fs_encoding), b'\n')

    chipx86chipx86

    For Python, object is probably fine, but if we don't have an explicit type in a Returns, we can leave …

    chipx86chipx86

    Can be six.PY3.

    chipx86chipx86

    E501 line too long (80 > 79 characters)

    reviewbotreviewbot
    chipx86
    1. 
        
    2. rbtools/clients/svn.py (Diff revision 1)
       
       

      I'm confused about this, and feel like it's something I'm likely going to hit. What's the reason for the explicit ending index?

      1. Pulling a single index out of bytes returns an int, not a bytes.

    3. rbtools/clients/svn.py (Diff revision 1)
       
       
      Show all issues

      Maybe worth doing this at the module level, sicne we need it a few times?

    4. rbtools/clients/svn.py (Diff revision 1)
       
       
       
      Show all issues

      Feels like this might be more readable as:

      return (diff_line.split(b'\n')[0].decode(fs_encoding),
              b'\n')
      
    5. rbtools/utils/process.py (Diff revision 1)
       
       
       
       
       
       
       
       
       
       

      Oh man thank you.

    6. rbtools/utils/process.py (Diff revision 1)
       
       
       
      Show all issues

      For Python, object is probably fine, but if we don't have an explicit type in a Returns, we can leave off the type. That will leave off the type portion of the docs in the field, showing only the description.

    7. rbtools/utils/process.py (Diff revision 1)
       
       
      Show all issues

      Can be six.PY3.

    8. 
        
    david
    Review request changed
    Commit:
    415850f7b386c1b3ca1b8b47a42c0351d20be2c2
    dbddf3a8856e08cc718a1e233b201559d47da9a0

    Checks run (1 failed, 1 succeeded)

    flake8 failed.
    JSHint passed.

    flake8

    david
    chipx86
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (f158f41)