pager: exit cleanly on SIGPIPE (BC)
Changeset aaa751585325 removes SIGPIPE handling completely. This is wrong,
as it means that Mercurial does not exit when the pager does. Instead, raise
SignalInterrupt when SIGPIPE happens with a pager attached, to trigger the
normal exit path.
This will cause "killed!" to be printed to stderr (hence the BC warning),
but in the normal pager use case (where the pager gets both stderr and
stdout), this message is lost as we only get SIGPIPE when the pager quits.
#require test-repo
$ . "$TESTDIR/helpers-testrepo.sh"
$ cat <<'EOF' > scanhelptopics.py
> from __future__ import absolute_import, print_function
> import re
> import sys
> topics = set()
> topicre = re.compile(r':hg:`help ([a-z0-9\-.]+)`')
> for fname in sys.argv:
> with open(fname) as f:
> topics.update(m.group(1) for m in topicre.finditer(f.read()))
> for s in sorted(topics):
> print(s)
> EOF
$ cd "$TESTDIR"/..
Check if ":hg:`help TOPIC`" is valid:
(use "xargs -n1 -t" to see which help commands are executed)
$ hg files 'glob:{hgext,mercurial}/**/*.py' \
> | xargs python "$TESTTMP/scanhelptopics.py" \
> | xargs -n1 hg help > /dev/null