Don't try to determine interactivity if ui() called with interactive=False.
WSGI applications are not supposed to refer to sys.stdin. In ed6df6b1c29a,
hgweb and hgwebdir were fixed to pass interactive=False to their ui()'s, but
sys.stdin.isatty() was still called by the ui objects. This change makes sure
only the ui.fixconfig() method will call ui.isatty() (by making the
ui._readline() method, which is currently only called from ui.prompt(),
private). ui.fixconfig() is changed to let config files override the initial
interactivity setting, but not check isatty() if interactive=False was
specified in the creation of the ui.
#!/bin/sh
# Test that qpush cleans things up if it doesn't complete
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
hg init repo
cd repo
echo foo > foo
hg ci -Am 'add foo' -d '0 0'
touch untracked-file
echo 'syntax: glob' > .hgignore
echo '.hgignore' >> .hgignore
hg qinit
hg qnew patch1
echo >> foo
hg qrefresh -m 'patch 1'
hg qnew patch2
echo bar > bar
hg add bar
hg qrefresh -m 'patch 2'
hg qnew bad-patch
echo >> foo
hg qrefresh
hg qpop -a
python -c 'print "\xe9"' > message
cat .hg/patches/bad-patch >> message
mv message .hg/patches/bad-patch
hg qpush -a && echo 'qpush succeded?!'
hg parents
echo '% bar should be gone; other unknown/ignored files should still be around'
hg status -A