--- a/tests/test-extension Fri Sep 03 09:46:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-#!/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=
-export 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
-cat > path.py <<EOF
-import os, sys
-sys.path.insert(0, os.environ['HGEXTPATH'])
-EOF
-HGEXTPATH=`pwd`
-export HGEXTPATH
-hg --config extensions.path=./path.py help broken
-hg --config extensions.path=./path.py help foo > /dev/null
-
-exit 0
--- a/tests/test-extension.out Fri Sep 03 09:46:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-uisetup called
-reposetup called for a
-ui == repo.ui
-Foo
-uisetup called
-reposetup called for a
-ui == repo.ui
-reposetup called for b
-ui == repo.ui
-updating to branch default
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-uisetup called
-Bar
-% module/__init__.py-style
-uisetup called
-reposetup called for a
-ui == repo.ui
-Foo
-1) foo imported
-1) bar imported
-2) foo uisetup
-2) bar uisetup
-3) foo extsetup
-3) bar extsetup
-4) foo reposetup
-4) bar reposetup
-% hgweb.cgi
-1) foo imported
-1) bar imported
-2) foo uisetup
-2) bar uisetup
-3) foo extsetup
-3) bar extsetup
-4) foo reposetup
-4) bar reposetup
-4) foo reposetup
-4) bar reposetup
-empty extension - empty cmdtable
-
-no commands defined
-% hg help
-debugextension extension - only debugcommands
-
-no commands defined
-% hg help --verbose
-debugextension extension - only debugcommands
-
-list of commands:
-
- foo:
- yet another foo command
-
-global options:
- -R --repository REPO repository root directory or name of overlay bundle
- file
- --cwd DIR change working directory
- -y --noninteractive do not prompt, assume 'yes' for any required answers
- -q --quiet suppress output
- -v --verbose enable additional output
- --config CONFIG [+] set/override config option (use 'section.name=value')
- --debug enable debugging output
- --debugger start debugger
- --encoding ENCODE set the charset encoding (default: ascii)
- --encodingmode MODE set the charset encoding mode (default: strict)
- --traceback always print a traceback on exception
- --time time how long the command takes
- --profile print command execution profile
- --version output version information and exit
- -h --help display help and exit
-
-[+] marked option can be specified multiple times
-% hg help --debug
-debugextension extension - only debugcommands
-
-list of commands:
-
- debugfoobar:
- yet another debug command
- foo:
- yet another foo command
-
-global options:
- -R --repository REPO repository root directory or name of overlay bundle
- file
- --cwd DIR change working directory
- -y --noninteractive do not prompt, assume 'yes' for any required answers
- -q --quiet suppress output
- -v --verbose enable additional output
- --config CONFIG [+] set/override config option (use 'section.name=value')
- --debug enable debugging output
- --debugger start debugger
- --encoding ENCODE set the charset encoding (default: ascii)
- --encodingmode MODE set the charset encoding mode (default: strict)
- --traceback always print a traceback on exception
- --time time how long the command takes
- --profile print command execution profile
- --version output version information and exit
- -h --help display help and exit
-
-[+] marked option can be specified multiple times
-% issue811
-% show extensions
-debugissue811
-mq
-% disabled extension commands
-'email' is provided by the following extension:
-
- patchbomb command to send changesets as (a series of) patch emails
-
-use "hg help extensions" for information on enabling extensions
-hg: unknown command 'qdel'
-'qdelete' is provided by the following extension:
-
- mq manage a stack of patches
-
-use "hg help extensions" for information on enabling extensions
-hg: unknown command 'churn'
-'churn' is provided by the following extension:
-
- churn command to display statistics about repository history
-
-use "hg help extensions" for information on enabling extensions
-% disabled extensions
-churn extension - command to display statistics about repository history
-
-use "hg help extensions" for information on enabling extensions
-patchbomb extension - command to send changesets as (a series of) patch emails
-
-use "hg help extensions" for information on enabling extensions
-% broken disabled extension and command
-broken extension - (no help text available)
-
-use "hg help extensions" for information on enabling extensions
-hg: unknown command 'foo'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-extension.t Fri Sep 03 11:19:50 2010 +0200
@@ -0,0 +1,320 @@
+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
+ uisetup called
+ reposetup called for a
+ ui == repo.ui
+ Foo
+
+ $ cd ..
+ $ hg clone a b
+ uisetup called
+ reposetup called for a
+ ui == repo.ui
+ reposetup called for b
+ ui == repo.ui
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+ $ hg bar
+ uisetup called
+ Bar
+ $ echo 'foobar = !' >> $HGRCPATH
+
+module/__init__.py-style
+
+ $ echo "barfoo = $barfoopath" >> $HGRCPATH
+ $ cd a
+ $ hg foo
+ uisetup called
+ reposetup called for a
+ ui == repo.ui
+ 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
+ 1) foo imported
+ 1) bar imported
+ 2) foo uisetup
+ 2) bar uisetup
+ 3) foo extsetup
+ 3) bar extsetup
+ 4) foo reposetup
+ 4) bar reposetup
+
+Check hgweb's load order:
+
+ $ 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
+ 1) foo imported
+ 1) bar imported
+ 2) foo uisetup
+ 2) bar uisetup
+ 3) foo extsetup
+ 3) bar extsetup
+ 4) foo reposetup
+ 4) bar reposetup
+ 4) foo reposetup
+ 4) bar reposetup
+
+ $ 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
+ empty extension - empty cmdtable
+
+ no commands defined
+
+ $ 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
+
+ $ hg help debugextension
+ debugextension extension - only debugcommands
+
+ no commands defined
+
+ $ hg --verbose help debugextension
+ debugextension extension - only debugcommands
+
+ list of commands:
+
+ foo:
+ yet another foo command
+
+ global options:
+ -R --repository REPO repository root directory or name of overlay bundle
+ file
+ --cwd DIR change working directory
+ -y --noninteractive do not prompt, assume 'yes' for any required answers
+ -q --quiet suppress output
+ -v --verbose enable additional output
+ --config CONFIG [+] set/override config option (use 'section.name=value')
+ --debug enable debugging output
+ --debugger start debugger
+ --encoding ENCODE set the charset encoding (default: ascii)
+ --encodingmode MODE set the charset encoding mode (default: strict)
+ --traceback always print a traceback on exception
+ --time time how long the command takes
+ --profile print command execution profile
+ --version output version information and exit
+ -h --help display help and exit
+
+ [+] marked option can be specified multiple times
+
+ $ hg --debug help debugextension
+ debugextension extension - only debugcommands
+
+ list of commands:
+
+ debugfoobar:
+ yet another debug command
+ foo:
+ yet another foo command
+
+ global options:
+ -R --repository REPO repository root directory or name of overlay bundle
+ file
+ --cwd DIR change working directory
+ -y --noninteractive do not prompt, assume 'yes' for any required answers
+ -q --quiet suppress output
+ -v --verbose enable additional output
+ --config CONFIG [+] set/override config option (use 'section.name=value')
+ --debug enable debugging output
+ --debugger start debugger
+ --encoding ENCODE set the charset encoding (default: ascii)
+ --encodingmode MODE set the charset encoding mode (default: strict)
+ --traceback always print a traceback on exception
+ --time time how long the command takes
+ --profile print command execution profile
+ --version output version information and exit
+ -h --help display help and exit
+
+ [+] marked option can be specified multiple times
+ $ echo 'debugextension = !' >> $HGRCPATH
+
+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
+
+Show extensions:
+
+ $ hg debugextensions
+ debugissue811
+ mq
+
+Disabled extension commands:
+
+ $ HGRCPATH=
+ $ export HGRCPATH
+ $ hg help email
+ 'email' is provided by the following extension:
+
+ patchbomb command to send changesets as (a series of) patch emails
+
+ use "hg help extensions" for information on enabling extensions
+ $ hg qdel
+ hg: unknown command 'qdel'
+ 'qdelete' is provided by the following extension:
+
+ mq manage a stack of patches
+
+ use "hg help extensions" for information on enabling extensions
+ $ hg churn
+ hg: unknown command 'churn'
+ 'churn' is provided by the following extension:
+
+ churn command to display statistics about repository history
+
+ use "hg help extensions" for information on enabling extensions
+
+Disabled extensions:
+
+ $ hg help churn
+ churn extension - command to display statistics about repository history
+
+ use "hg help extensions" for information on enabling extensions
+ $ hg help patchbomb
+ patchbomb extension - command to send changesets as (a series of) patch emails
+
+ use "hg help extensions" for information on enabling extensions
+
+Broken disabled extension and command:
+
+ $ mkdir hgext
+ $ echo > hgext/__init__.py
+ $ cat > hgext/broken.py <<EOF
+ > "broken extension'
+ > EOF
+ $ cat > path.py <<EOF
+ > import os, sys
+ > sys.path.insert(0, os.environ['HGEXTPATH'])
+ > EOF
+ $ HGEXTPATH=`pwd`
+ $ export HGEXTPATH
+
+ $ hg --config extensions.path=./path.py help broken
+ broken extension - (no help text available)
+
+ use "hg help extensions" for information on enabling extensions
+
+ $ hg --config extensions.path=./path.py help foo > /dev/null
+ hg: unknown command 'foo'
+
+ $ exit 0
+