test-extension
179 lines
| 3.7 KiB
| text/plain
|
TextLexer
/ tests / test-extension
Alexis S. L. Carvalho
|
r4064 | #!/bin/sh | ||
# Test basic extension support | ||||
Mads Kiilerich
|
r7429 | "$TESTDIR/hghave" no-outer-repo || exit 80 | ||
Alexis S. L. Carvalho
|
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
|
r4074 | ui.write("ui %s= repo.ui\\n" % (ui == repo.ui and "=" or "!")) | ||
Alexis S. L. Carvalho
|
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
|
r4569 | mkdir barfoo | ||
cp foobar.py barfoo/__init__.py | ||||
barfoopath=`pwd`/barfoo | ||||
Alexis S. L. Carvalho
|
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
|
r5523 | echo 'foobar = !' >> $HGRCPATH | ||
Brendan Cully
|
r4569 | |||
echo '% module/__init__.py-style' | ||||
echo "barfoo = $barfoopath" >> $HGRCPATH | ||||
cd a | ||||
hg foo | ||||
Alexis S. L. Carvalho
|
r5523 | echo 'barfoo = !' >> $HGRCPATH | ||
Brendan Cully
|
r4738 | |||
Martin Geisler
|
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
|
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
|
r9802 | | grep '^[0-9]) ' # ignores HTML output | ||
Yuya Nishihara
|
r9661 | |||
Martin Geisler
|
r9410 | echo 'foo = !' >> $HGRCPATH | ||
echo 'bar = !' >> $HGRCPATH | ||||
Brendan Cully
|
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
|
r5523 | echo 'empty = !' >> $HGRCPATH | ||
Alexis S. L. Carvalho
|
r4950 | |||
cat > debugextension.py <<EOF | ||||
'''only debugcommands | ||||
''' | ||||
def debugfoobar(ui, repo, *args, **opts): | ||||
"yet another debug command" | ||||
pass | ||||
Dan Villiom Podlaski Christiansen
|
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
|
r4950 | EOF | ||
debugpath=`pwd`/debugextension.py | ||||
echo "debugextension = $debugpath" >> $HGRCPATH | ||||
Dan Villiom Podlaski Christiansen
|
r9128 | echo "% hg help" | ||
Alexis S. L. Carvalho
|
r4950 | hg help debugextension | ||
Dan Villiom Podlaski Christiansen
|
r9128 | echo "% hg help --verbose" | ||
hg --verbose help debugextension | ||||
echo "% hg help --debug" | ||||
Alexis S. L. Carvalho
|
r4950 | hg --debug help debugextension | ||
Alexis S. L. Carvalho
|
r5523 | echo 'debugextension = !' >> $HGRCPATH | ||
Benoit Boissinot
|
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
|
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 | ||||