##// END OF EJS Templates
dispatch: provide help for disabled extensions and commands...
dispatch: provide help for disabled extensions and commands Before a command is declared unknown, each extension in hgext is searched, starting with hgext.<cmdname>. If there's a matching command, a help message suggests the appropriate extension and how to enable it. Every extension could potentially be imported, but for cases like rebase, relink, etc. only one extension is imported. For the case of "hg help disabledext", if the extension is in hgext, the extension description is read and a similar help suggestion is printed. No extension import occurs.

File last commit:

r10364:de1e7099 default
r10364:de1e7099 default
Show More
test-extension
179 lines | 3.7 KiB | text/plain | TextLexer
Alexis S. L. Carvalho
install reposetup hook right after loading the extension
r4064 #!/bin/sh
# Test basic extension support
Mads Kiilerich
tests: Skip tests if they will fail because of outer repo...
r7429 "$TESTDIR/hghave" no-outer-repo || exit 80
Alexis S. L. Carvalho
install reposetup hook right after loading the extension
r4064 cat > foobar.py <<EOF
import os
from mercurial import commands
def uisetup(ui):
ui.write("uisetup called\\n")
def reposetup(ui, repo):
ui.write("reposetup called for %s\\n" % os.path.basename(repo.root))
Alexis S. L. Carvalho
Try to pass repo.ui to reposetup hooks...
r4074 ui.write("ui %s= repo.ui\\n" % (ui == repo.ui and "=" or "!"))
Alexis S. L. Carvalho
install reposetup hook right after loading the extension
r4064
def foo(ui, *args, **kwargs):
ui.write("Foo\\n")
def bar(ui, *args, **kwargs):
ui.write("Bar\\n")
cmdtable = {
"foo": (foo, [], "hg foo"),
"bar": (bar, [], "hg bar"),
}
commands.norepo += ' bar'
EOF
abspath=`pwd`/foobar.py
Brendan Cully
extensions: load modules in module/__init__.py form....
r4569 mkdir barfoo
cp foobar.py barfoo/__init__.py
barfoopath=`pwd`/barfoo
Alexis S. L. Carvalho
install reposetup hook right after loading the extension
r4064 hg init a
cd a
echo foo > file
hg add file
hg commit -m 'add file'
echo '[extensions]' >> $HGRCPATH
echo "foobar = $abspath" >> $HGRCPATH
hg foo
cd ..
hg clone a b
hg bar
Alexis S. L. Carvalho
tests/*: avoid losing the original settings from $HGRCPATH
r5523 echo 'foobar = !' >> $HGRCPATH
Brendan Cully
extensions: load modules in module/__init__.py form....
r4569
echo '% module/__init__.py-style'
echo "barfoo = $barfoopath" >> $HGRCPATH
cd a
hg foo
Alexis S. L. Carvalho
tests/*: avoid losing the original settings from $HGRCPATH
r5523 echo 'barfoo = !' >> $HGRCPATH
Brendan Cully
Handle extensions with defined but empty cmdtable
r4738
Martin Geisler
extensions: load and configure extensions in well-defined phases...
r9410 # check that extensions are loaded in phases
cat > foo.py <<EOF
import os
name = os.path.basename(__file__).rsplit('.', 1)[0]
print "1) %s imported" % name
def uisetup(ui):
print "2) %s uisetup" % name
def extsetup():
print "3) %s extsetup" % name
def reposetup(ui, repo):
print "4) %s reposetup" % name
EOF
cp foo.py bar.py
echo 'foo = foo.py' >> $HGRCPATH
echo 'bar = bar.py' >> $HGRCPATH
# command with no output, we just want to see the extensions loaded
hg paths
Yuya Nishihara
hgweb: added test case for extension loading phases (issue1824)...
r9661 # check hgweb's load order
echo '% hgweb.cgi'
cat > hgweb.cgi <<EOF
#!/usr/bin/env python
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb
from mercurial.hgweb import wsgicgi
application = hgweb('.', 'test repo')
wsgicgi.launch(application)
EOF
SCRIPT_NAME='/' SERVER_PORT='80' SERVER_NAME='localhost' python hgweb.cgi \
Mads Kiilerich
test-extension: Solaris grep don't know [[:digit:]]
r9802 | grep '^[0-9]) ' # ignores HTML output
Yuya Nishihara
hgweb: added test case for extension loading phases (issue1824)...
r9661
Martin Geisler
extensions: load and configure extensions in well-defined phases...
r9410 echo 'foo = !' >> $HGRCPATH
echo 'bar = !' >> $HGRCPATH
Brendan Cully
Handle extensions with defined but empty cmdtable
r4738 cd ..
cat > empty.py <<EOF
'''empty cmdtable
'''
cmdtable = {}
EOF
emptypath=`pwd`/empty.py
echo "empty = $emptypath" >> $HGRCPATH
hg help empty
Alexis S. L. Carvalho
tests/*: avoid losing the original settings from $HGRCPATH
r5523 echo 'empty = !' >> $HGRCPATH
Alexis S. L. Carvalho
help: avoid traceback if an extension has only debug commands
r4950
cat > debugextension.py <<EOF
'''only debugcommands
'''
def debugfoobar(ui, repo, *args, **opts):
"yet another debug command"
pass
Dan Villiom Podlaski Christiansen
commands: hide deprecated commands....
r9128 def foo(ui, repo, *args, **opts):
"""yet another foo command
This command has been DEPRECATED since forever.
"""
pass
cmdtable = {
"debugfoobar": (debugfoobar, (), "hg debugfoobar"),
"foo": (foo, (), "hg foo")
}
Alexis S. L. Carvalho
help: avoid traceback if an extension has only debug commands
r4950 EOF
debugpath=`pwd`/debugextension.py
echo "debugextension = $debugpath" >> $HGRCPATH
Dan Villiom Podlaski Christiansen
commands: hide deprecated commands....
r9128 echo "% hg help"
Alexis S. L. Carvalho
help: avoid traceback if an extension has only debug commands
r4950 hg help debugextension
Dan Villiom Podlaski Christiansen
commands: hide deprecated commands....
r9128 echo "% hg help --verbose"
hg --verbose help debugextension
echo "% hg help --debug"
Alexis S. L. Carvalho
help: avoid traceback if an extension has only debug commands
r4950 hg --debug help debugextension
Alexis S. L. Carvalho
tests/*: avoid losing the original settings from $HGRCPATH
r5523 echo 'debugextension = !' >> $HGRCPATH
Benoit Boissinot
Do not try to load extensions twice (issue811)
r7011
echo % issue811
debugpath=`pwd`/debugissue811.py
cat > debugissue811.py <<EOF
'''show all loaded extensions
'''
from mercurial import extensions, commands
def debugextensions(ui):
"yet another debug command"
ui.write("%s\n" % '\n'.join([x for x, y in extensions.extensions()]))
cmdtable = {"debugextensions": (debugextensions, (), "hg debugextensions")}
commands.norepo += " debugextensions"
EOF
echo "debugissue811 = $debugpath" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
echo "hgext.mq=" >> $HGRCPATH
echo "hgext/mq=" >> $HGRCPATH
echo % show extensions
hg debugextensions
Brodie Rao
dispatch: provide help for disabled extensions and commands...
r10364
echo '% disabled extension commands'
HGRCPATH=
hg help email
hg qdel
hg churn
echo '% disabled extensions'
hg help churn
hg help patchbomb
echo '% broken disabled extension and command'
mkdir hgext
echo > hgext/__init__.py
cat > hgext/broken.py <<EOF
"broken extension'
EOF
TMPPYTHONPATH="$PYTHONPATH"
PYTHONPATH="`pwd`:$PYTHONPATH"
export PYTHONPATH
hg help broken
hg help foo > /dev/null
PYTHONPATH="$TMPPYTHONPATH"
export PYTHONPATH
exit 0