|
|
#!/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
|
|
|
|
|
|
# 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 \
|
|
|
| grep '^[0-9]) ' # ignores HTML output
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|