[PATCH 13 of 35] tests: declare commands using decorator
Gregory Szorc
gregory.szorc at gmail.com
Mon May 5 00:51:18 CDT 2014
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1399268887 25200
# Sun May 04 22:48:07 2014 -0700
# Branch stable
# Node ID c2cc0594c04637822287e69274ff6512256978b0
# Parent 0765ac8ba948a2fa1dfd7c3e4f0229dfa26d289f
tests: declare commands using decorator
diff --git a/tests/autodiff.py b/tests/autodiff.py
--- a/tests/autodiff.py
+++ b/tests/autodiff.py
@@ -1,13 +1,19 @@
# Extension dedicated to test patch.diff() upgrade modes
#
#
-from mercurial import scmutil, patch, util
+from mercurial import cmdutil, scmutil, patch, util
+cmdtable = {}
+command = cmdutil.command(cmdtable)
+
+ at command('autodiff',
+ [('', 'git', '', 'git upgrade mode (yes/no/auto/warn/abort)')],
+ '[OPTION]... [FILE]...')
def autodiff(ui, repo, *pats, **opts):
diffopts = patch.diffopts(ui, opts)
git = opts.get('git', 'no')
brokenfiles = set()
losedatafn = None
if git in ('yes', 'no'):
diffopts.git = git == 'yes'
diffopts.upgrade = False
@@ -31,16 +37,8 @@ def autodiff(ui, repo, *pats, **opts):
node1, node2 = scmutil.revpair(repo, [])
m = scmutil.match(repo[node2], pats, opts)
it = patch.diff(repo, node1, node2, match=m, opts=diffopts,
losedatafn=losedatafn)
for chunk in it:
ui.write(chunk)
for fn in sorted(brokenfiles):
ui.write(('data lost for: %s\n' % fn))
-
-cmdtable = {
- "autodiff":
- (autodiff,
- [('', 'git', '', 'git upgrade mode (yes/no/auto/warn/abort)'),
- ],
- '[OPTION]... [FILE]...'),
-}
diff --git a/tests/test-encoding-align.t b/tests/test-encoding-align.t
--- a/tests/test-encoding-align.t
+++ b/tests/test-encoding-align.t
@@ -11,29 +11,28 @@ Test alignment of multibyte characters
> m = "MIDDLE_"
> # (byte, width) = (18, 12)
> l = "\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d"
> f = file('s', 'w'); f.write(s); f.close()
> f = file('m', 'w'); f.write(m); f.close()
> f = file('l', 'w'); f.write(l); f.close()
> # instant extension to show list of options
> f = file('showoptlist.py', 'w'); f.write("""# encoding: utf-8
+ > from mercurial import cmdutil
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
+ >
+ > @command('showoptlist',
+ > [('s', 'opt1', '', 'short width' + ' %(s)s' * 8, '%(s)s'),
+ > ('m', 'opt2', '', 'middle width' + ' %(m)s' * 8, '%(m)s'),
+ > ('l', 'opt3', '', 'long width' + ' %(l)s' * 8, '%(l)s')],
+ > '')
> def showoptlist(ui, repo, *pats, **opts):
> '''dummy command to show option descriptions'''
> return 0
- > cmdtable = {
- > 'showoptlist':
- > (showoptlist,
- > [('s', 'opt1', '', 'short width' + ' %(s)s' * 8, '%(s)s'),
- > ('m', 'opt2', '', 'middle width' + ' %(m)s' * 8, '%(m)s'),
- > ('l', 'opt3', '', 'long width' + ' %(l)s' * 8, '%(l)s')
- > ],
- > ""
- > )
- > }
> """ % globals())
> f.close()
> EOF
$ S=`cat s`
$ M=`cat m`
$ L=`cat l`
alignment of option descriptions in help
diff --git a/tests/test-encoding-textwrap.t b/tests/test-encoding-textwrap.t
--- a/tests/test-encoding-textwrap.t
+++ b/tests/test-encoding-textwrap.t
@@ -1,58 +1,60 @@
Test text wrapping for multibyte characters
$ mkdir t
$ cd t
define commands to display help text
$ cat << EOF > show.py
+ > from mercurial import cmdutil
+ >
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
+ >
> # Japanese full-width characters:
+ > @command('show_full_ja', [], '')
> def show_full_ja(ui, **opts):
> u'''\u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051 \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051 \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051
>
> \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051 \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051 \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051 \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051
>
> \u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051\u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051\u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051\u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051
> '''
>
> # Japanese half-width characters:
+ > @command('show_half_ja', [], '')
> def show_half_ja(ui, *opts):
> u'''\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79
>
> \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79 \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79
>
> \uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79
> '''
>
> # Japanese ambiguous-width characters:
+ > @command('show_ambig_ja', [], '')
> def show_ambig_ja(ui, **opts):
> u'''\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb
>
> \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb
>
> \u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb\u03b1\u03b2\u03b3\u03b4\u03c5\u03b6\u03b7\u03b8\u25cb
> '''
>
> # Russian ambiguous-width characters:
+ > @command('show_ambig_ru', [], '')
> def show_ambig_ru(ui, **opts):
> u'''\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438
>
> \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438
>
> \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438
> '''
- >
- > cmdtable = {
- > 'show_full_ja': (show_full_ja, [], ""),
- > 'show_half_ja': (show_half_ja, [], ""),
- > 'show_ambig_ja': (show_ambig_ja, [], ""),
- > 'show_ambig_ru': (show_ambig_ru, [], ""),
- > }
> EOF
"COLUMNS=60" means that there is no lines which has grater than 58 width
(1) test text wrapping for non-ambiguous-width characters
(1-1) display Japanese full-width characters in cp932
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -1,32 +1,32 @@
Test basic extension support
$ cat > foobar.py <<EOF
> import os
- > from mercurial import commands
+ > from mercurial import cmdutil, commands
+ >
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
>
> 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 "!"))
>
+ > @command('foo', [], 'hg foo')
> def foo(ui, *args, **kwargs):
> ui.write("Foo\\n")
>
+ > @command('bar', [], 'hg bar')
> 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
@@ -283,31 +283,32 @@ hide outer repo
no commands defined
$ echo 'empty = !' >> $HGRCPATH
$ cat > debugextension.py <<EOF
> '''only debugcommands
> '''
+ > from mercurial import cmdutil
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
+ >
+ > @command('debugfoobar', [], 'hg debugfoobar')
> def debugfoobar(ui, repo, *args, **opts):
> "yet another debug command"
> pass
>
+ > @command('foo', [], 'hg foo')
> 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
@@ -470,25 +471,25 @@ Extension module help vs command help:
use "hg -v help extdiff" to show builtin aliases and global options
$ echo 'extdiff = !' >> $HGRCPATH
Test help topic with same name as extension
$ cat > multirevs.py <<EOF
- > from mercurial import commands
+ > from mercurial import cmdutil, commands
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
> """multirevs extension
> Big multi-line module docstring."""
+ > @command('multirevs', [], 'ARG')
> def multirevs(ui, repo, arg, *args, **opts):
> """multirevs command"""
> pass
- > cmdtable = {
- > "multirevs": (multirevs, [], 'ARG')
- > }
> commands.norepo += ' multirevs'
> EOF
$ echo "multirevs = multirevs.py" >> $HGRCPATH
$ hg help multirevs
Specifying Multiple Revisions
"""""""""""""""""""""""""""""
@@ -527,23 +528,25 @@ Test help topic with same name as extens
$ echo "multirevs = !" >> $HGRCPATH
Issue811: Problem loading extensions twice (by site and by user)
$ debugpath=`pwd`/debugissue811.py
$ cat > debugissue811.py <<EOF
> '''show all loaded extensions
> '''
- > from mercurial import extensions, commands
+ > from mercurial import cmdutil, commands, extensions
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
>
+ > @command('debugextensions', [], 'hg debugextensions')
> 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 "strip=" >> $HGRCPATH
$ echo "hgext.mq=" >> $HGRCPATH
$ echo "hgext/mq=" >> $HGRCPATH
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -647,29 +647,30 @@ Test command without options
update update working directory (or switch revisions)
use "hg help" for the full list of commands or "hg -v" for details
[255]
$ cat > helpext.py <<EOF
> import os
- > from mercurial import commands
+ > from mercurial import cmdutil, commands
>
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
+ >
+ > @command('nohelp',
+ > [('', 'longdesc', 3, 'x'*90),
+ > ('n', '', None, 'normal desc'),
+ > ('', 'newline', '', 'line1\nline2')],
+ > 'hg nohelp')
+ > @command('debugoptDEP', [('', 'dopt', None, 'option is DEPRECATED')])
> def nohelp(ui, *args, **kwargs):
> pass
>
- > cmdtable = {
- > "debugoptDEP": (nohelp, [('', 'dopt', None, 'option is DEPRECATED')],),
- > "nohelp": (nohelp, [('', 'longdesc', 3, 'x'*90),
- > ('n', '', None, 'normal desc'),
- > ('', 'newline', '', 'line1\nline2'),
- > ], "hg nohelp"),
- > }
- >
> commands.norepo += ' nohelp'
> EOF
$ echo '[extensions]' >> $HGRCPATH
$ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
Test command with no help text
$ hg help nohelp
diff --git a/tests/test-progress.t b/tests/test-progress.t
--- a/tests/test-progress.t
+++ b/tests/test-progress.t
@@ -1,20 +1,29 @@
$ cat > loop.py <<EOF
- > from mercurial import commands
+ > from mercurial import cmdutil, commands
> import time
+ >
+ > cmdtable = {}
+ > command = cmdutil.command(cmdtable)
+ >
> class incrementingtime(object):
> def __init__(self):
> self._time = 0.0
> def __call__(self):
> self._time += 0.25
> return self._time
> time.time = incrementingtime()
>
+ > @command('loop',
+ > [('', 'total', '', 'override for total'),
+ > ('', 'nested', False, 'show nested results'),
+ > ('', 'parallel', False, 'show parallel sets of results')],
+ > 'hg loop LOOPS')
> def loop(ui, loops, **opts):
> loops = int(loops)
> total = None
> if loops >= 0:
> total = loops
> if opts.get('total', None):
> total = int(opts.get('total'))
> nested = False
@@ -33,24 +42,16 @@
> for j in range(nested_steps):
> ui.progress(
> 'nested', j, 'nested.%d' % j, 'nestnum', nested_steps)
> ui.progress(
> 'nested', None, 'nested.done', 'nestnum', nested_steps)
> ui.progress('loop', None, 'loop.done', 'loopnum', total)
>
> commands.norepo += " loop"
- >
- > cmdtable = {
- > "loop": (loop, [('', 'total', '', 'override for total'),
- > ('', 'nested', False, 'show nested results'),
- > ('', 'parallel', False, 'show parallel sets of results'),
- > ],
- > 'hg loop LOOPS'),
- > }
> EOF
$ cp $HGRCPATH $HGRCPATH.orig
$ echo "[extensions]" >> $HGRCPATH
$ echo "progress=" >> $HGRCPATH
$ echo "loop=`pwd`/loop.py" >> $HGRCPATH
$ echo "[progress]" >> $HGRCPATH
$ echo "format = topic bar number" >> $HGRCPATH
More information about the Mercurial-devel
mailing list