mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
559ff1708d
Extensions are now loaded with a call-graph like this: dispatch._dispatch extensions.loadall extensions.load # add foo module to extensions._extensions extensions.load # add bar module to extensions._extensions foo.uisetup(ui) bar.uisetup(ui) foo.extsetup() bar.extsetup() commands.table.update(foo.cmdtable) commands.table.update(bar.cmdtable) hg.repository foo.reposetup(ui, repo) bar.reposetup(ui, repo) The uisetup calls could easily be moved out to dispatch._dispatch, but have been kept in extensions.loadall since at least TortoiseHg calls extensions.loadall and expects it to call uisetup. The extensions.load function called uisetup. It now has an unused ui argument which has been kept for backwards compatibility.
142 lines
2.9 KiB
Bash
Executable File
142 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# Test basic extension support
|
|
|
|
"$TESTDIR/hghave" no-outer-repo || exit 80
|
|
|
|
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))
|
|
ui.write("ui %s= repo.ui\\n" % (ui == repo.ui and "=" or "!"))
|
|
|
|
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
|
|
|
|
mkdir barfoo
|
|
cp foobar.py barfoo/__init__.py
|
|
barfoopath=`pwd`/barfoo
|
|
|
|
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
|
|
echo 'foobar = !' >> $HGRCPATH
|
|
|
|
echo '% module/__init__.py-style'
|
|
echo "barfoo = $barfoopath" >> $HGRCPATH
|
|
cd a
|
|
hg foo
|
|
echo 'barfoo = !' >> $HGRCPATH
|
|
|
|
# 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
|
|
|
|
echo 'foo = !' >> $HGRCPATH
|
|
echo 'bar = !' >> $HGRCPATH
|
|
|
|
cd ..
|
|
cat > empty.py <<EOF
|
|
'''empty cmdtable
|
|
'''
|
|
cmdtable = {}
|
|
EOF
|
|
emptypath=`pwd`/empty.py
|
|
echo "empty = $emptypath" >> $HGRCPATH
|
|
hg help empty
|
|
echo 'empty = !' >> $HGRCPATH
|
|
|
|
cat > debugextension.py <<EOF
|
|
'''only debugcommands
|
|
'''
|
|
def debugfoobar(ui, repo, *args, **opts):
|
|
"yet another debug command"
|
|
pass
|
|
|
|
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")
|
|
}
|
|
EOF
|
|
debugpath=`pwd`/debugextension.py
|
|
echo "debugextension = $debugpath" >> $HGRCPATH
|
|
echo "% hg help"
|
|
hg help debugextension
|
|
echo "% hg help --verbose"
|
|
hg --verbose help debugextension
|
|
echo "% hg help --debug"
|
|
hg --debug help debugextension
|
|
echo 'debugextension = !' >> $HGRCPATH
|
|
|
|
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
|