ui: look before you leap on sys.stderr.closed (and look nicer)
f83291e5643e introduced a fix if sys.stdout.closed does not exist.
This change uses a getattr with default instead of hasattr (which just calls
getattr) and accessing the attribute.
Additionally it applies the same fix for sys.stderr.closed as this is not
available in the bpython shell (reported by Roger Gammans).
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
echo "[mq]" >> $HGRCPATH
echo "git=keep" >> $HGRCPATH
echo % init
hg init a
cd a
echo % commit
echo 'base' > base
hg ci -Ambase -d '1 0'
echo % qnew mqbase
hg qnew -mmqbase mqbase
echo % qrefresh
echo 'patched' > base
hg qrefresh
echo % qdiff
hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
echo % qdiff dirname
hg qdiff . | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
echo % qdiff filename
hg qdiff --nodates base
echo % revert
hg revert -a
echo % qpop
hg qpop
echo % qdelete mqbase
hg qdelete mqbase
echo % commit 2
printf '1\n2\n3\n4\nhello world\ngoodbye world\n7\n8\n9\n' > lines
hg ci -Amlines -d '2 0'
echo % qnew 2
hg qnew -mmqbase2 mqbase2
printf '\n\n1\n2\n3\n4\nhello world\n goodbye world\n7\n8\n9\n' > lines
echo % qdiff -U 1
hg qdiff --nodates -U 1
echo % qdiff -b
hg qdiff --nodates -b
echo % qdiff -U 1 -B
hg qdiff --nodates -U 1 -B
echo % qdiff -w
hg qdiff --nodates -w
echo % qdiff --reverse
hg qdiff --nodates --reverse
echo % qdiff preserve existing git flag
hg qrefresh --git
echo a >> lines
hg qdiff