Mercurial > hg
annotate tests/test-check-code @ 11989:f853873fc66d
aliases: provide more flexible ways to work with shell alias arguments
This patch changes the functionality of shell aliases to add more powerful
options for working with shell alias arguments.
First: the alias name + arguments to a shell alias are set as an HG_ARGS
environment variable, delimited by spaces. This matches the behavior of hooks.
Second: any occurrences of "$@" (without quotes) are replaced with the
arguments, separated by spaces. This happens *before* the alias gets to the shell.
Third: any positive numeric variables ("$1", "$2", etc) are replaced with the
appropriate argument, indexed from 1. "$0" is replaced with the name of the
alias. Any "extra" numeric variables are replaced with an empty string. This
happens *before* the alias gets to the shell.
These changes allow for more flexible shell aliases:
[alias]
echo = !echo $@
count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g'
qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2"
In action:
$ hg echo foo
foo
$ hg count 'branch(default)'
901
$ hg count 'branch(stable) and keyword(fixes)'
102
$ hg qqueuemv myfeature somefeature
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Wed, 18 Aug 2010 18:56:44 -0400 |
parents | 0cae834cdc80 |
children |
rev | line source |
---|---|
10715
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
1 #!/bin/sh |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
2 #cd `dirname $0` |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
3 cat > correct.py <<EOF |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
4 def toto(arg1, arg2): |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
5 del arg2 |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
6 return (5 + 6, 9) |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
7 EOF |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
8 |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
9 cat > wrong.py <<EOF |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
10 def toto( arg1, arg2): |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
11 del(arg2) |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
12 return ( 5+6, 9) |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
13 EOF |
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
14 |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
15 cat > quote.py <<EOF |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10722
diff
changeset
|
16 # let's use quote in comments |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
17 (''' ( 4x5 ) |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10722
diff
changeset
|
18 but """\\''' and finally''', |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
19 """let's fool checkpatch""", '1+2', |
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
20 '"""', 42+1, """and |
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
21 ( 4-1 ) """, "( 1+1 )\" and ") |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10722
diff
changeset
|
22 a, '\\\\\\\\', "\\\\\\" x-2", "c-1" |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
23 EOF |
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10715
diff
changeset
|
24 |
11341
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
25 cat > non-py24.py <<EOF |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
26 # Using builtins that does not exist in Python 2.4 |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
27 if any(): |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
28 x = all() |
11343
f325db39c8b9
check-code: catch format(), introduced in Python 2.6
Martin Geisler <mg@aragost.com>
parents:
11341
diff
changeset
|
29 y = format(x) |
11341
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
30 |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
31 # Do not complain about our own definition |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
32 def any(x): |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
33 pass |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
34 EOF |
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
35 |
10715
83dce0f817f4
add a small test for contrib/check-code.py
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
36 check_code=`dirname $0`/../contrib/check-code.py |
11341
920a783e5f91
check-code: fix check for any/all function
Martin Geisler <mg@aragost.com>
parents:
10727
diff
changeset
|
37 ${check_code} ./wrong.py ./correct.py ./quote.py ./non-py24.py |
11822
0cae834cdc80
test-check-code: fix test after e1359ad582f6
Martin Geisler <mg@aragost.com>
parents:
11343
diff
changeset
|
38 |
0cae834cdc80
test-check-code: fix test after e1359ad582f6
Martin Geisler <mg@aragost.com>
parents:
11343
diff
changeset
|
39 exit 0 |