test-grep.t
493 lines
| 11.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-grep.t
|
r13956 | $ hg init t | ||
|
r11902 | $ cd t | ||
$ echo import > port | ||||
$ hg add port | ||||
$ hg commit -m 0 -u spam -d '0 0' | ||||
$ echo export >> port | ||||
$ hg commit -m 1 -u eggs -d '1 0' | ||||
$ echo export > port | ||||
$ echo vaportight >> port | ||||
$ echo 'import/export' >> port | ||||
$ hg commit -m 2 -u spam -d '2 0' | ||||
$ echo 'import/export' >> port | ||||
$ hg commit -m 3 -u eggs -d '3 0' | ||||
$ head -n 3 port > port1 | ||||
$ mv port1 port | ||||
$ hg commit -m 4 -u spam -d '4 0' | ||||
pattern error | ||||
$ hg grep '**test**' | ||||
grep: invalid match pattern: nothing to repeat | ||||
|
r12316 | [1] | ||
|
r11902 | |||
simple | ||||
|
r38650 | $ hg grep -r tip:0 '.*' | ||
|
r17923 | port:4:export | ||
port:4:vaportight | ||||
port:4:import/export | ||||
|
r38650 | $ hg grep -r tip:0 port port | ||
|
r11902 | port:4:export | ||
port:4:vaportight | ||||
port:4:import/export | ||||
simple with color | ||||
$ hg --config extensions.color= grep --config color.mode=ansi \ | ||||
|
r38650 | > --color=always port port -r tip:0 | ||
|
r17806 | \x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mex\x1b[0;31;1mport\x1b[0m (esc) | ||
\x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mva\x1b[0;31;1mport\x1b[0might (esc) | ||||
|
r21011 | \x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mim\x1b[0;31;1mport\x1b[0m/ex\x1b[0;31;1mport\x1b[0m (esc) | ||
|
r11902 | |||
|
r29858 | simple templated | ||
|
r38650 | $ hg grep port -r tip:0 \ | ||
|
r29858 | > -T '{file}:{rev}:{node|short}:{texts % "{if(matched, text|upper, text)}"}\n' | ||
port:4:914fa752cdea:exPORT | ||||
port:4:914fa752cdea:vaPORTight | ||||
port:4:914fa752cdea:imPORT/exPORT | ||||
|
r38650 | $ hg grep port -r tip:0 -T '{file}:{rev}:{texts}\n' | ||
|
r37518 | port:4:export | ||
port:4:vaportight | ||||
port:4:import/export | ||||
|
r38650 | $ hg grep port -r tip:0 -T '{file}:{tags}:{texts}\n' | ||
|
r38558 | port:tip:export | ||
port:tip:vaportight | ||||
port:tip:import/export | ||||
|
r29858 | simple JSON (no "change" field) | ||
|
r38650 | $ hg grep -r tip:0 -Tjson port | ||
|
r29858 | [ | ||
{ | ||||
|
r37788 | "date": [4, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 1, | ||||
"node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", | ||||
"rev": 4, | ||||
"texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
|
r37788 | "date": [4, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 2, | ||||
"node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", | ||||
"rev": 4, | ||||
"texts": [{"matched": false, "text": "va"}, {"matched": true, "text": "port"}, {"matched": false, "text": "ight"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
|
r37788 | "date": [4, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 3, | ||||
"node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", | ||||
"rev": 4, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
} | ||||
] | ||||
simple JSON without matching lines | ||||
|
r38650 | $ hg grep -r tip:0 -Tjson -l port | ||
|
r29858 | [ | ||
{ | ||||
|
r37788 | "date": [4, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 1, | ||||
"node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", | ||||
"rev": 4, | ||||
"user": "spam" | ||||
} | ||||
] | ||||
|
r11902 | all | ||
$ hg grep --traceback --all -nu port port | ||||
port:4:4:-:spam:import/export | ||||
port:3:4:+:eggs:import/export | ||||
port:2:1:-:spam:import | ||||
port:2:2:-:spam:export | ||||
port:2:1:+:spam:export | ||||
port:2:2:+:spam:vaportight | ||||
port:2:3:+:spam:import/export | ||||
port:1:2:+:eggs:export | ||||
port:0:1:+:spam:import | ||||
|
r29858 | all JSON | ||
$ hg grep --all -Tjson port port | ||||
[ | ||||
{ | ||||
"change": "-", | ||||
|
r37788 | "date": [4, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 4, | ||||
"node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", | ||||
"rev": 4, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [3, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 4, | ||||
"node": "95040cfd017d658c536071c6290230a613c4c2a6", | ||||
"rev": 3, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], | ||||
"user": "eggs" | ||||
}, | ||||
{ | ||||
"change": "-", | ||||
|
r37788 | "date": [2, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 1, | ||||
"node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", | ||||
"rev": 2, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "-", | ||||
|
r37788 | "date": [2, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 2, | ||||
"node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", | ||||
"rev": 2, | ||||
"texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [2, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 1, | ||||
"node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", | ||||
"rev": 2, | ||||
"texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [2, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 2, | ||||
"node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", | ||||
"rev": 2, | ||||
"texts": [{"matched": false, "text": "va"}, {"matched": true, "text": "port"}, {"matched": false, "text": "ight"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [2, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 3, | ||||
"node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", | ||||
"rev": 2, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [1, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 2, | ||||
"node": "8b20f75c158513ff5ac80bd0e5219bfb6f0eb587", | ||||
"rev": 1, | ||||
"texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], | ||||
"user": "eggs" | ||||
}, | ||||
{ | ||||
"change": "+", | ||||
|
r37788 | "date": [0, 0], | ||
|
r29858 | "file": "port", | ||
"line_number": 1, | ||||
"node": "f31323c9217050ba245ee8b537c713ec2e8ab226", | ||||
"rev": 0, | ||||
"texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}], | ||||
"user": "spam" | ||||
} | ||||
] | ||||
|
r11902 | other | ||
|
r38650 | $ hg grep -r tip:0 -l port port | ||
|
r17805 | port:4 | ||
|
r38650 | $ hg grep -r tip:0 import port | ||
|
r11902 | port:4:import/export | ||
$ hg cp port port2 | ||||
$ hg commit -m 4 -u spam -d '5 0' | ||||
follow | ||||
|
r38650 | $ hg grep -r tip:0 --traceback -f 'import\n\Z' port2 | ||
|
r11902 | port:0:import | ||
|
r15765 | |||
|
r11902 | $ echo deport >> port2 | ||
$ hg commit -m 5 -u eggs -d '6 0' | ||||
$ hg grep -f --all -nu port port2 | ||||
port2:6:4:+:eggs:deport | ||||
port:4:4:-:spam:import/export | ||||
port:3:4:+:eggs:import/export | ||||
port:2:1:-:spam:import | ||||
port:2:2:-:spam:export | ||||
port:2:1:+:spam:export | ||||
port:2:2:+:spam:vaportight | ||||
port:2:3:+:spam:import/export | ||||
port:1:2:+:eggs:export | ||||
port:0:1:+:spam:import | ||||
|
r24064 | $ hg up -q null | ||
|
r38650 | $ hg grep -r 'reverse(:.)' -f port | ||
port:0:import | ||||
|
r24064 | |||
|
r37465 | Test wdir | ||
(at least, this shouldn't crash) | ||||
$ hg up -q | ||||
$ echo wport >> port2 | ||||
$ hg stat | ||||
M port2 | ||||
$ hg grep -r 'wdir()' port | ||||
|
r38217 | port2:2147483647:export | ||
port2:2147483647:vaportight | ||||
port2:2147483647:import/export | ||||
port2:2147483647:deport | ||||
port2:2147483647:wport | ||||
|
r37465 | |||
|
r11902 | $ cd .. | ||
$ hg init t2 | ||||
$ cd t2 | ||||
|
r38650 | $ hg grep -r tip:0 foobar foo | ||
|
r12316 | [1] | ||
|
r38650 | $ hg grep -r tip:0 foobar | ||
|
r12316 | [1] | ||
|
r11902 | $ echo blue >> color | ||
$ echo black >> color | ||||
$ hg add color | ||||
$ hg ci -m 0 | ||||
$ echo orange >> color | ||||
$ hg ci -m 1 | ||||
$ echo black > color | ||||
$ hg ci -m 2 | ||||
$ echo orange >> color | ||||
$ echo blue >> color | ||||
$ hg ci -m 3 | ||||
|
r38650 | $ hg grep -r tip:0 orange | ||
|
r11902 | color:3:orange | ||
$ hg grep --all orange | ||||
color:3:+:orange | ||||
color:2:-:orange | ||||
color:1:+:orange | ||||
|
r38440 | $ hg grep --diff orange | ||
color:3:+:orange | ||||
color:2:-:orange | ||||
color:1:+:orange | ||||
|
r29854 | test substring match: '^' should only match at the beginning | ||
|
r38650 | $ hg grep -r tip:0 '^.' --config extensions.color= --color debug | ||
|
r29854 | [grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|b]lack | ||
[grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|o]range | ||||
[grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|b]lue | ||||
|
r11902 | |||
match in last "line" without newline | ||||
|
r36513 | $ $PYTHON -c 'fp = open("noeol", "wb"); fp.write(b"no infinite loop"); fp.close();' | ||
|
r11902 | $ hg ci -Amnoeol | ||
adding noeol | ||||
|
r38650 | $ hg grep -r tip:0 loop | ||
|
r15293 | noeol:4:no infinite loop | ||
|
r11902 | |||
$ cd .. | ||||
|
r21024 | Issue685: traceback in grep -r after rename | ||
|
r12399 | |||
|
r11902 | Got a traceback when using grep on a single | ||
revision with renamed files. | ||||
$ hg init issue685 | ||||
$ cd issue685 | ||||
$ echo octarine > color | ||||
$ hg ci -Amcolor | ||||
adding color | ||||
$ hg rename color colour | ||||
$ hg ci -Am rename | ||||
|
r38650 | $ hg grep -r tip:0 octarine | ||
|
r11902 | colour:1:octarine | ||
color:0:octarine | ||||
Used to crash here | ||||
$ hg grep -r 1 octarine | ||||
colour:1:octarine | ||||
$ cd .. | ||||
Issue337: test that grep follows parent-child relationships instead | ||||
of just using revision numbers. | ||||
$ hg init issue337 | ||||
$ cd issue337 | ||||
$ echo white > color | ||||
$ hg commit -A -m "0 white" | ||||
adding color | ||||
$ echo red > color | ||||
$ hg commit -A -m "1 red" | ||||
$ hg update 0 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo black > color | ||||
$ hg commit -A -m "2 black" | ||||
created new head | ||||
$ hg update --clean 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo blue > color | ||||
$ hg commit -A -m "3 blue" | ||||
$ hg grep --all red | ||||
color:3:-:red | ||||
color:1:+:red | ||||
|
r13920 | |||
|
r38440 | $ hg grep --diff red | ||
color:3:-:red | ||||
color:1:+:red | ||||
|
r37151 | Issue3885: test that changing revision order does not alter the | ||
revisions printed, just their order. | ||||
$ hg grep --all red -r "all()" | ||||
color:1:+:red | ||||
color:3:-:red | ||||
$ hg grep --all red -r "reverse(all())" | ||||
color:3:-:red | ||||
color:1:+:red | ||||
|
r38440 | $ hg grep --diff red -r "all()" | ||
color:1:+:red | ||||
color:3:-:red | ||||
$ hg grep --diff red -r "reverse(all())" | ||||
color:3:-:red | ||||
color:1:+:red | ||||
|
r16912 | $ cd .. | ||
|
r13920 | $ hg init a | ||
$ cd a | ||||
|
r16350 | $ cp "$TESTDIR/binfile.bin" . | ||
|
r13920 | $ hg add binfile.bin | ||
$ hg ci -m 'add binfile.bin' | ||||
$ hg grep "MaCam" --all | ||||
binfile.bin:0:+: Binary file matches | ||||
|
r16912 | |||
|
r38440 | $ hg grep "MaCam" --diff | ||
binfile.bin:0:+: Binary file matches | ||||
|
r16912 | $ cd .. | ||
|
r38217 | |||
|
r38361 | Test for showing working of allfiles flag | ||
$ hg init sng | ||||
$ cd sng | ||||
$ echo "unmod" >> um | ||||
$ hg ci -A -m "adds unmod to um" | ||||
adding um | ||||
$ echo "something else" >> new | ||||
$ hg ci -A -m "second commit" | ||||
adding new | ||||
$ hg grep -r "." "unmod" | ||||
[1] | ||||
|
r38670 | $ hg grep -r "." "unmod" --all-files | ||
|
r38361 | um:1:unmod | ||
|
r38672 | With --all-files, the working directory is searched by default | ||
$ echo modified >> new | ||||
$ hg grep --all-files mod | ||||
|
r38675 | new:modified | ||
um:unmod | ||||
|
r38672 | |||
which can be overridden by -rREV | ||||
$ hg grep --all-files -r. mod | ||||
um:1:unmod | ||||
|
r38673 | commands.all-files can be negated by --no-all-files | ||
$ hg grep --config commands.grep.all-files=True mod | ||||
|
r38675 | new:modified | ||
um:unmod | ||||
|
r38673 | $ hg grep --config commands.grep.all-files=True --no-all-files mod | ||
um:0:unmod | ||||
|
r38671 | --diff --all-files makes no sense since --diff is the option to grep history | ||
$ hg grep --diff --all-files um | ||||
abort: --diff and --all-files are mutually exclusive | ||||
[255] | ||||
|
r38673 | but --diff should precede the commands.grep.all-files option | ||
$ hg grep --config commands.grep.all-files=True --diff mod | ||||
um:0:+:unmod | ||||
|
r38361 | $ cd .. | ||
|
r38217 | Fix_Wdir(): test that passing wdir() t -r flag does greps on the | ||
files modified in the working directory | ||||
$ cd a | ||||
$ echo "abracadara" >> a | ||||
$ hg add a | ||||
$ hg grep -r "wdir()" "abra" | ||||
a:2147483647:abracadara | ||||
$ cd .. | ||||
|
r38650 | |||
|
r38674 | Change Default of grep by ui.tweakdefaults, that is, the files not in current | ||
working directory should not be grepp-ed on | ||||
|
r38650 | $ hg init ab | ||
$ cd ab | ||||
|
r38674 | $ cat <<'EOF' >> .hg/hgrc | ||
> [ui] | ||||
> tweakdefaults = True | ||||
> EOF | ||||
|
r38650 | $ echo "some text">>file1 | ||
$ hg add file1 | ||||
$ hg commit -m "adds file1" | ||||
$ hg mv file1 file2 | ||||
|
r38675 | |||
wdir revision is hidden by default: | ||||
|
r38650 | $ hg grep "some" | ||
|
r38675 | file2:some text | ||
but it should be available in template dict: | ||||
$ hg grep "some" -Tjson | ||||
[ | ||||
{ | ||||
"date": [0, 0], | ||||
"file": "file2", | ||||
"line_number": 1, | ||||
"node": "ffffffffffffffffffffffffffffffffffffffff", | ||||
"rev": 2147483647, | ||||
"texts": [{"matched": true, "text": "some"}, {"matched": false, "text": " text"}], | ||||
"user": "test" | ||||
} | ||||
] | ||||
$ cd .. | ||||