By hashing the output, the test updater won't trigger for failures
unrelated to the test file being outdated. That is, if the generated
test output hasn't changed, then regenerating the test surely won't fix
it. This serves two purposes:
- it allows someone to make edits to the output (e.g. add comments) and
not have them overwritten all the time
- only one test updater is allowed to make updates each test failure,
so if the generated file hasn't changed, it shouldn't prevent other
test updaters from executing
This adds an automatic test updater that checks for GENERATED-BY:
comments containing a command whose stdout is used to populate a file,
or a split-file slice in a file.
The test updater applies the same lit substitutions as would be applied
in a RUN: line, allowing Swift tool usage in the run line.