• 
      

    Fix a variety of bad bugs with diff comments and commit ranges.

    Review Request #13547 — Created Feb. 16, 2024 and submitted — Latest diff uploaded

    Information

    Review Board
    master

    Reviewers

    When making comments on diffs for review requests that have multiple
    commits, there were a handful of bugs of varying severity. These all
    occurred when adding comments to subsets of the commit range, rather
    than the cumulative diff.

    • Medium bad: The link URL for comments added to commit ranges went to
      the regular diff page without including any commit info in the query
      string. We therefore wouldn't load the correct view.
    • Bad: When looking at commit ranges, we'd add comment flags to the diff
      view for all comments where the tip filediff matched. This would end
      up showing comment flags even if the base commit didn't match.
    • Very bad: The diff fragment shown for comments on commit ranges wasn't
      taking the base commit into account, instead always showing the diff
      between the base of the entire change and the selected tip commit. In
      most cases this wouldn't matter but if there are repeated changes to
      the same file across many commits, the shown diff fragment would be
      completely wrong.

    These bugs all more or less come down to the same underlying problem:
    not plumbing through the right commit information. We thankfully are
    correctly storing the "base filediff" in the comment extra_data, which
    is the ID of the filediff for the given file in the selected base commit
    of the range. We therefore need to plumb that through so that we're
    always getting the correct things from get_diff_files and other
    diffutils methods.

    In order to make this testable, I've pulled some commit-specific test
    infrastructure out of test_diffutils.py and made it available from
    our main testcase file.

    • Ran unit tests.
    • Posted a review request with a number of commits that all changed the
      same file. Added comments across various ranges of those commits. Saw
      the following:

    • In the review box, the link for comments always went to the correct
      commit range for the comment.
    • In the review box, the diff fragment for the comment was the same as
      what was selected when making the comment.
    • When viewing commit ranges in the diff viewer, I only saw comments
      that matched the currently visible commit range.

    Commits

    Files