tests: don't allow reodering of glob/re lines across non-glob/re lines
As shown in the test case added in the previous patch, it can be
really hard to interpret diffs from the test runner if there are
multiple lines that would match a given glob or regular expression. It
looks like this has been the case since
1ad0ddf8cccc (run-tests: teach
_processoutput to handle multiple lines of churn, 2016-03-17). It
seems like the point of that was to preserve the "(glob)" annotation
on lines even if they got moved. This patch tries to preserve that but
only allows the lines to be moved past other glob/re lines.
Differential Revision: https://phab.mercurial-scm.org/D3881
tests: add test showing puzzling test output with (glob) lines
When using multiple (glob) lines, the test runner often moves the
lines around in the output on failure. I have run into this problem
many times. The added test shows one example of this. Note that it
doesn't show the mismatching lines and instead shows diff hunks that
appear to replace a literal by a glob, and other hunks that should
clearly match.
Differential Revision: https://phab.mercurial-scm.org/D3880
tests: move handling of None "el" out of linematch()
It just seems odd for linematch() to know what None means.
Differential Revision: https://phab.mercurial-scm.org/D3879