Add hiding min files by default

Review Request #10715 — Created Sept. 15, 2019 and updated

Information

Review Board
master

Reviewers

When adding minified files for review the entire file is displayed in
the diff veiwer. Since min files are just one long line this does not
make sense to display as they are generally ignored in the review
process. With this change files matching the search .min. are hidden
by default with the option to display them if the reviewer clicks
"Show content". This is similar to how deleted files are handled in the
diff viewer. Since deleted and hidden files are very similar in
functionality I merged the fields into one hidden field with an
optional hidden_context if there is need to know the reason for a file
being hidden.

Included tests for these changes.

Summary ID
Address Barret's comments.
5773f493e25a882435a9b80385d25c4cd3bfa25c
Address David's comments.
276cef5046ec8eca751fb4ddfe876f6a47320744
re-add debug statement
4ff5f0819b4b6ffa1e61b3a5c66c3173d5d97caa
rebase master
4c9aef2a23627d1bbf44bcd0cefa63fdd33c8d21

Description From Last Updated

Can you flesh out your description and testing done? See https://www.notion.so/reviewboard/Writing-Good-Change-Descriptions-10529e7c207743fa8ca90153d4b21fea#writinggoodchangedescriptions

daviddavid

We should probably explain why it is hidden instead of just stating that it is. e.g., This file was hidden …

brenniebrennie

E122 continuation line missing indentation or outdented

reviewbotreviewbot

E226 missing whitespace around arithmetic operator

reviewbotreviewbot

Single quotes for strings.

brenniebrennie

It is more Pythonic to do elif '.min.' in depot_filename: (and also more readable).

brenniebrennie

nit: blank line between these.

brenniebrennie

This only tests the cumulative diff (ie the squashed version of all the commits) case. Can you add a a …

brenniebrennie

nit: blank line between these.

brenniebrennie

nit: we do django template indentation a little differently: the indentation occurs inside the block tags. Additionally, HTML is indented …

brenniebrennie

Let's expand this comment just a little bit. How about: # Choose the most important information to show for why …

daviddavid

I know it's not part of your change per se, but this is leftover debug output and can be removed.

daviddavid

Can we move these new tests to be at the end of this suite? Right now they break up a …

daviddavid

How about "Testing get_diff_files hiding of deleted/minified files for a diffset with history"? That line can wrap as needed.

daviddavid

Please change out the " quotes for ' quotes.

daviddavid

How about "Testing get_diff_files hiding of deleted/minified files for an individual commit"? That line can wrap as needed.

daviddavid

Please change out the " quotes for ' quotes.

daviddavid

This needs to use an exact equality comparison operator (===)

daviddavid

The way this is laid out is a little bit error-prone (we're kind of interleaving the if/else clauses and HTML …

daviddavid

This doesn't really make sense. Either a file is empty (no content) or minified (lots of content all squished together). …

daviddavid

Please undo. This is here for debugging test failures.

brenniebrennie
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.

flake8

david
  1. 
      
  2. Show all issues

    Can you flesh out your description and testing done? See https://www.notion.so/reviewboard/Writing-Good-Change-Descriptions-10529e7c207743fa8ca90153d4b21fea#writinggoodchangedescriptions

    1. For testing are you looking for more frontend, backend, or both. As it stands I have the one test for the backend the verifies that deletion and hidding are set correctly and that precedence is maintained. I.e. a min file deleted should show the deleted context not just that is was hidden.

  3. 
      
PE
PE
brennie
  1. 
      
  2. Show all issues

    We should probably explain why it is hidden instead of just stating that it is. e.g.,

    This file was hidden because it is likely minified. Show content.
    
  3. reviewboard/diffviewer/diffutils.py (Diff revision 2)
     
     
    Show all issues

    Single quotes for strings.

  4. reviewboard/diffviewer/diffutils.py (Diff revision 2)
     
     
    Show all issues

    It is more Pythonic to do elif '.min.' in depot_filename: (and also more readable).

  5. Show all issues

    nit: blank line between these.

  6. reviewboard/diffviewer/tests/test_diffutils.py (Diff revision 2)
     
     
     
     
     
     
     
    Show all issues

    This only tests the cumulative diff (ie the squashed version of all the commits) case.

    Can you add a a test to make sure it works for the individual commits as well?

  7. Show all issues

    nit: blank line between these.

  8. reviewboard/templates/diffviewer/diff_file_fragment.html (Diff revision 2)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    nit: we do django template indentation a little differently: the indentation occurs inside the block tags. Additionally, HTML is indented one space (irrespective of the django tag indentation), e.g.:

    {% elif file.hide and not show_deleted %}
    {%  if file.hide_context == 'deleted' %}
     <tbody>
      <tr>
       <td colspan="4">
    {%   if file.num_changes == 0 %}
    {%    trans "..." %}
    
  9. 
      
PE
PE
PE
david
  1. 
      
  2. reviewboard/diffviewer/diffutils.py (Diff revision 5)
     
     
     
    Show all issues

    Let's expand this comment just a little bit. How about:

    # Choose the most important information to show for why a
    # file is hidden. If a minified file is deleted, prefer to
    # show it as deleted.
    
  3. Show all issues

    I know it's not part of your change per se, but this is leftover debug output and can be removed.

  4. Show all issues

    Can we move these new tests to be at the end of this suite? Right now they break up a bunch of other more related tests.

  5. Show all issues

    How about "Testing get_diff_files hiding of deleted/minified files for a diffset with history"?

    That line can wrap as needed.

  6. reviewboard/diffviewer/tests/test_diffutils.py (Diff revision 5)
     
     
     
     
    Show all issues

    Please change out the " quotes for ' quotes.

  7. Show all issues

    How about "Testing get_diff_files hiding of deleted/minified files for an individual commit"?

    That line can wrap as needed.

  8. Show all issues

    Please change out the " quotes for ' quotes.

  9. Show all issues

    This needs to use an exact equality comparison operator (===)

  10. reviewboard/templates/diffviewer/diff_file_fragment.html (Diff revision 5)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    The way this is laid out is a little bit error-prone (we're kind of interleaving the if/else clauses and HTML tags). We can simplify it a lot by pulling the tbody class name out into a variable:

    {% definevar "tbody_class" %}{% spaceless %}
    {%  if file.hide_context == "deleted" %}
    deleted
    {%  else %}
    hidden
    {%  endif %}
    {% endspaceless %}{% enddefinevar %}
    
    <tbody class="{{tbody_class}}">
     <tr>
      <td colspan="4">
    {% if file.hide_context == "deleted" %}
        ...
    {% endif %}
      </td>
     </tr>
    </tbody>
    
  11. Show all issues

    This doesn't really make sense. Either a file is empty (no content) or minified (lots of content all squished together).

    I think if a file is empty we should always show the "This is an empty file" line.

  12. 
      
PE
brennie
  1. 
      
  2. reviewboard/diffviewer/tests/test_diffutils.py (Diff revision 6)
     
     
     
     
    Show all issues

    Please undo. This is here for debugging test failures.

  3. 
      
PE
PE
Review request changed
Commits:
Summary ID
Address Barret's comments.
b3aaae4aa8b78e5ac30c2d8800c469be10d41057
Address David's comments.
c8697a78c5e4c5bd1f68324f4a131ff91c871cf6
Address Barret's comments.
5773f493e25a882435a9b80385d25c4cd3bfa25c
Address David's comments.
276cef5046ec8eca751fb4ddfe876f6a47320744
re-add debug statement
4ff5f0819b4b6ffa1e61b3a5c66c3173d5d97caa
rebase master
4c9aef2a23627d1bbf44bcd0cefa63fdd33c8d21

Checks run (2 succeeded)

flake8 passed.
JSHint passed.