Improve the capabilities of diff parsing, and document the full support.
Review Request #10778 — Created Nov. 3, 2019 and submitted — Latest diff uploaded
Diff parsing is one of the oldest parts of Review Board, and has shown
its age. It used to be thatDiffParser
and its subclasses would
populate a dictionary with keys and values. Eventually, we introduced a
File
class (later renamedParsedDiffFile
) 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 aParsedDiffFile
object, 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
customize behavior.Currently, only the base
DiffParser
uses 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.