Improve the capabilities of diff parsing, and document the full support.
Review Request #10778 — Created Nov. 3, 2019 and updated
Diff parsing is one of the oldest parts of Review Board, and has shown
its age. It used to be that
DiffParserand its subclasses would
populate a dictionary with keys and values. Eventually, we introduced a
Fileclass (later renamed
ParsedDiffFile) that would hold the
resulting information, but only after the dictionaries were populated.
This approach was error-prone (partly fixed in 4.0 when validation was
added), and made it hard to expand the type of information we collect.
This change improves the capabilities of parsers by giving them direct
access to a
ParsedDiffFileobject, removing the intermediary
dictionary. It also documents each of the methods in detail, discussing
each one's responsibilities and what subclasses may want to do to
Currently, only the base
DiffParseruses the new way of setting
attributes, to ensure that backwards-compatibility works as expected.
Other parsers will be updated shortly.
Unit tests pass in both Review Board and Power Pack.
This doesn't seem right :)