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
echo '% Show all commands except debug commands'
hg debugcomplete
echo
echo '% Show all commands that start with "a"'
hg debugcomplete a
echo
echo '% Do not show debug commands if there are other candidates'
hg debugcomplete d
echo
echo '% Show debug commands if there are no other candidates'
hg debugcomplete debug
echo
echo '% Do not show the alias of a debug command if there are other candidates'
echo '% (this should hide rawcommit)'
hg debugcomplete r
echo
echo '% Show the alias of a debug command if there are no other candidates'
hg debugcomplete rawc
echo
echo '% Show the global options'
hg debugcomplete --options | sort
echo
echo '% Show the options for the "serve" command'
hg debugcomplete --options serve | sort
echo
echo '% Show an error if we use --options with an ambiguous abbreviation'
hg debugcomplete --options s
exit 0