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
hg init a
cd a
echo a > a
hg ci -Ama -d '1123456789 0'
hg --config server.uncompressed=True serve -p 20059 -d --pid-file=hg.pid
cat hg.pid >> $DAEMON_PIDS
cd ..
("$TESTDIR/tinyproxy.py" 20060 localhost >proxy.log 2>&1 </dev/null &
echo $! > proxy.pid)
cat proxy.pid >> $DAEMON_PIDS
sleep 2
echo %% url for proxy, stream
http_proxy=http://localhost:20060/ hg --config http_proxy.always=True clone --uncompressed http://localhost:20059/ b | \
sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/'
cd b
hg verify
cd ..
echo %% url for proxy, pull
http_proxy=http://localhost:20060/ hg --config http_proxy.always=True clone http://localhost:20059/ b-pull
cd b-pull
hg verify
cd ..
echo %% host:port for proxy
http_proxy=localhost:20060 hg clone --config http_proxy.always=True http://localhost:20059/ c
echo %% proxy url with user name and password
http_proxy=http://user:passwd@localhost:20060 hg clone --config http_proxy.always=True http://localhost:20059/ d
echo %% url with user name and password
http_proxy=http://user:passwd@localhost:20060 hg clone --config http_proxy.always=True http://user:passwd@localhost:20059/ e
echo %% bad host:port for proxy
http_proxy=localhost:20061 hg clone --config http_proxy.always=True http://localhost:20059/ f
exit 0