##// END OF EJS Templates
tests: test symbolic revision (de)reference in all hgweb styles...
tests: test symbolic revision (de)reference in all hgweb styles Right now the way revisions get specified in hgweb urls is ignored, i.e. after revision is resolved, only its node hash (or sometimes local revision number) is used for all links in the templates. So, basically, every page for "tip" revision (or any other symbolic rev id) will dereference it: lose the nice symbolic name by putting node hash/local rev number in its place. The only exception so far is archive links on some pages: /archive/tip.{bz2,gz,zip}. The fact that this dereferencing is neither convenient nor intuitive is reflected in issue2296, issue2826 and issue3594. issue3634 also mentions this. But to fix this it's first needed to demonstrate and test the way templates currently form links. The new test file is separate from other hgweb tests, since it seems big and distinct enough. And it's so big because links are formed in each template independently, so it's necessary to test them all to avoid any inconsistent behavior.

File last commit:

r25558:daf9f7ee default
r25586:e7455316 default
Show More
test-fileset.t
306 lines | 5.5 KiB | text/troff | Tads3Lexer
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 $ fileset() {
> hg debugfileset "$@"
> }
$ hg init repo
$ cd repo
$ echo a > a1
$ echo a > a2
$ echo b > b1
Patrick Mezard
test-fileset: test file status predicates
r17364 $ echo b > b2
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 $ hg ci -Am addfiles
adding a1
adding a2
adding b1
Patrick Mezard
test-fileset: test file status predicates
r17364 adding b2
Patrick Mezard
tests: test filesets with test-fileset.t
r17362
Test operators and basic patterns
Yuya Nishihara
fileset: pretty print syntax tree in debug output
r25255 $ fileset -v a1
('symbol', 'a1')
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 a1
Yuya Nishihara
fileset: pretty print syntax tree in debug output
r25255 $ fileset -v 'a*'
('symbol', 'a*')
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 a1
a2
Yuya Nishihara
fileset: pretty print syntax tree in debug output
r25255 $ fileset -v '"re:a\d"'
('string', 're:a\\d')
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 a1
a2
Yuya Nishihara
fileset: pretty print syntax tree in debug output
r25255 $ fileset -v 'a1 or a2'
(or
('symbol', 'a1')
('symbol', 'a2'))
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 a1
a2
$ fileset 'a1 | a2'
a1
a2
$ fileset 'a* and "*1"'
a1
$ fileset 'a* & "*1"'
a1
$ fileset 'not (r"a*")'
b1
Patrick Mezard
test-fileset: test file status predicates
r17364 b2
Patrick Mezard
tests: test filesets with test-fileset.t
r17362 $ fileset '! ("a*")'
b1
Patrick Mezard
test-fileset: test file status predicates
r17364 b2
Patrick Mezard
fileset: actually implement 'minusset'...
r17363 $ fileset 'a* - a1'
a2
Matt Mackall
fileset: handle underbar in symbols...
r19470 $ fileset 'a_b'
Patrick Mezard
tests: test filesets with test-fileset.t
r17362
Patrick Mezard
test-fileset: test file status predicates
r17364 Test files status
$ rm a1
$ hg rm a2
$ echo b >> b2
$ hg cp b1 c1
$ echo c > c2
$ echo c > c3
$ cat > .hgignore <<EOF
> \.hgignore
> 2$
> EOF
$ fileset 'modified()'
b2
$ fileset 'added()'
c1
$ fileset 'removed()'
a2
$ fileset 'deleted()'
a1
$ fileset 'unknown()'
c3
$ fileset 'ignored()'
.hgignore
c2
$ fileset 'hgignore()'
a2
b2
$ fileset 'clean()'
b1
$ fileset 'copied()'
c1
Patrick Mezard
fileset: exclude deleted files from matchctx.existing()...
r17365 Test files properties
>>> file('bin', 'wb').write('\0a')
$ fileset 'binary()'
Patrick Mezard
fileset: matchctx.existing() must consider unknown files...
r17366 $ fileset 'binary() and unknown()'
bin
Patrick Mezard
fileset: matchctx.existing() must consider ignored files...
r17367 $ echo '^bin$' >> .hgignore
$ fileset 'binary() and ignored()'
bin
Patrick Mezard
fileset: matchctx.existing() must consider unknown files...
r17366 $ hg add bin
$ fileset 'binary()'
bin
Patrick Mezard
fileset: exclude deleted files from matchctx.existing()...
r17365
Patrick Mezard
fileset: do not traceback on invalid grep pattern
r17368 $ fileset 'grep("b{1}")'
b2
c1
b1
$ fileset 'grep("missingparens(")'
hg: parse error: invalid match pattern: unbalanced parenthesis
[255]
Patrick Mezard
test-fileset: test remaining predicates...
r17369 #if execbit
$ chmod +x b2
$ fileset 'exec()'
b2
#endif
#if symlink
$ ln -s b2 b2link
$ fileset 'symlink() and unknown()'
b2link
$ hg add b2link
#endif
Siddharth Agarwal
fileset: add a fileset for portable filenames...
r24408 #if no-windows
$ echo foo > con.xml
Siddharth Agarwal
test-fileset.t: remove 'bar ' and 'baz\' from tested filenames...
r24430 $ fileset 'not portable()'
Siddharth Agarwal
fileset: add a fileset for portable filenames...
r24408 con.xml
Siddharth Agarwal
test-fileset.t: remove 'bar ' and 'baz\' from tested filenames...
r24430 $ hg --config ui.portablefilenames=ignore add con.xml
Siddharth Agarwal
fileset: add a fileset for portable filenames...
r24408 #endif
Patrick Mezard
test-fileset: test remaining predicates...
r17369 >>> file('1k', 'wb').write(' '*1024)
>>> file('2k', 'wb').write(' '*2048)
$ hg add 1k 2k
$ fileset 'size("bar")'
hg: parse error: couldn't parse size: bar
[255]
$ fileset 'size(1k)'
1k
$ fileset '(1k or 2k) and size("< 2k")'
1k
$ fileset '(1k or 2k) and size("<=2k")'
1k
2k
$ fileset '(1k or 2k) and size("> 1k")'
2k
$ fileset '(1k or 2k) and size(">=1K")'
1k
2k
$ fileset '(1k or 2k) and size(".5KB - 1.5kB")'
1k
Test merge states
$ hg ci -m manychanges
$ hg up -C 0
* files updated, 0 files merged, * files removed, 0 files unresolved (glob)
$ echo c >> b2
$ hg ci -m diverging b2
created new head
$ fileset 'resolved()'
$ fileset 'unresolved()'
$ hg merge
merging b2
warning: conflicts during merge.
merging b2 incomplete! (edit conflicts, then use 'hg resolve --mark')
* files updated, 0 files merged, * files removed, 1 files unresolved (glob)
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ fileset 'resolved()'
$ fileset 'unresolved()'
b2
$ echo e > b2
$ hg resolve -m b2
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
Patrick Mezard
test-fileset: test remaining predicates...
r17369 $ fileset 'resolved()'
b2
$ fileset 'unresolved()'
$ hg ci -m merge
Test subrepo predicate
$ hg init sub
$ echo a > sub/suba
$ hg -R sub add sub/suba
$ hg -R sub ci -m sub
$ echo 'sub = sub' > .hgsub
Matt Harbison
convert: support incremental conversion with hg subrepos...
r25558 $ hg init sub2
$ echo b > sub2/b
$ hg -R sub2 ci -Am sub2
adding b
$ echo 'sub2 = sub2' >> .hgsub
Patrick Mezard
test-fileset: test remaining predicates...
r17369 $ fileset 'subrepo()'
$ hg add .hgsub
$ fileset 'subrepo()'
sub
Matt Harbison
convert: support incremental conversion with hg subrepos...
r25558 sub2
Patrick Mezard
test-fileset: test remaining predicates...
r17369 $ fileset 'subrepo("sub")'
sub
$ fileset 'subrepo("glob:*")'
sub
Matt Harbison
convert: support incremental conversion with hg subrepos...
r25558 sub2
Patrick Mezard
debugfileset: implement --rev, more tests
r17370 $ hg ci -m subrepo
Patrick Mezard
test-fileset: test remaining predicates...
r17369
Matt Harbison
convert: support incremental conversion with hg subrepos...
r25558 Test that .hgsubstate is updated as appropriate during a conversion. The
saverev property is enough to alter the hashes of the subrepo.
$ hg init ../converted
$ hg --config extensions.convert= convert --config convert.hg.saverev=True \
> sub ../converted/sub
initializing destination ../converted/sub repository
scanning source...
sorting...
converting...
0 sub
$ hg clone -U sub2 ../converted/sub2
$ hg --config extensions.convert= convert --config convert.hg.saverev=True \
> . ../converted
scanning source...
sorting...
converting...
4 addfiles
3 manychanges
2 diverging
1 merge
0 subrepo
no ".hgsubstate" updates will be made for "sub2"
$ hg up -q -R ../converted -r tip
$ hg --cwd ../converted cat sub/suba sub2/b -r tip
a
b
$ oldnode=`hg log -r tip -T "{node}\n"`
$ newnode=`hg log -R ../converted -r tip -T "{node}\n"`
$ [[ "$oldnode" != "$newnode" ]] || echo "nothing changed"
Patrick Mezard
debugfileset: implement --rev, more tests
r17370 Test with a revision
$ hg log -G --template '{rev} {desc}\n'
@ 4 subrepo
|
o 3 merge
|\
| o 2 diverging
| |
o | 1 manychanges
|/
o 0 addfiles
$ echo unknown > unknown
$ fileset -r1 'modified()'
b2
$ fileset -r1 'added() and c1'
c1
$ fileset -r1 'removed()'
a2
$ fileset -r1 'deleted()'
$ fileset -r1 'unknown()'
$ fileset -r1 'ignored()'
$ fileset -r1 'hgignore()'
b2
bin
$ fileset -r1 'binary()'
bin
$ fileset -r1 'size(1k)'
1k
$ fileset -r3 'resolved()'
$ fileset -r3 'unresolved()'
#if execbit
$ fileset -r1 'exec()'
b2
#endif
#if symlink
$ fileset -r1 'symlink()'
b2link
#endif
Siddharth Agarwal
fileset: add a fileset for portable filenames...
r24408 #if no-windows
$ fileset -r1 'not portable()'
con.xml
Matt Harbison
test-fileset: forget non-portable files to avoid failures on Windows...
r24424 $ hg forget 'con.xml'
Siddharth Agarwal
fileset: add a fileset for portable filenames...
r24408 #endif
Patrick Mezard
debugfileset: implement --rev, more tests
r17370 $ fileset -r4 'subrepo("re:su.*")'
sub
Matt Harbison
convert: support incremental conversion with hg subrepos...
r25558 sub2
Patrick Mezard
debugfileset: implement --rev, more tests
r17370 $ fileset -r4 'subrepo("sub")'
sub
Patrick Mezard
fileset: fix generator vs list bug in fast path...
r17371 $ fileset -r4 'b2 or c1'
b2
c1
Patrick Mezard
debugfileset: implement --rev, more tests
r17370
Matt Mackall
filesets: add eol predicate
r18842 >>> open('dos', 'wb').write("dos\r\n")
>>> open('mixed', 'wb').write("dos\r\nunix\n")
>>> open('mac', 'wb').write("mac\r")
$ hg add dos mixed mac
$ fileset 'eol(dos)'
dos
mixed
$ fileset 'eol(unix)'
.hgsub
.hgsubstate
a1
b1
b2
c1
mixed
$ fileset 'eol(mac)'
mac