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
unset HGUSER
EMAIL="My Name <myname@example.com>"
export EMAIL
hg init test
cd test
touch asdf
hg add asdf
hg commit -d '1000000 0' -m commit-1
hg tip
unset EMAIL
echo 1234 > asdf
hg commit -d '1000000 0' -u "foo@bar.com" -m commit-1
hg tip
echo "[ui]" >> .hg/hgrc
echo "username = foobar <foo@bar.com>" >> .hg/hgrc
echo 12 > asdf
hg commit -d '1000000 0' -m commit-1
hg tip
echo 1 > asdf
hg commit -d '1000000 0' -u "foo@bar.com" -m commit-1
hg tip
echo 123 > asdf
echo "[ui]" > .hg/hgrc
echo "username = " >> .hg/hgrc
hg commit -d '1000000 0' -m commit-1
rm .hg/hgrc
hg commit -d '1000000 0' -m commit-1 2>&1 | sed -e "s/'[^']*'/user@host/"