##// END OF EJS Templates
revlog: use radix tree also for matching keys shorter than 4 hex digits...
revlog: use radix tree also for matching keys shorter than 4 hex digits I don't know what the reason for the 4-digit limit was, and I can't think of any real disadvantages of using the radix tree also when the requested minimum length is short. This speeds up `hg log -T '{shortest(node,1)}\n'` from 2m16s to 4.5s by making that not fall back to pure code. Differential Revision: https://phab.mercurial-scm.org/D3453

File last commit:

r37439:99844885 default
r37875:92ed344a @27 default
Show More
test-audit-path.t
240 lines | 5.0 KiB | text/troff | Tads3Lexer
/ tests / test-audit-path.t
Gregory Szorc
tests: disable test-audit-path.t with simple store...
r37439 The simple store doesn't escape paths robustly and can't store paths
with periods, etc. So much of this test fails with it.
#require no-reposimplestore
Martin Geisler
tests: unify test-audit-path
r11855 $ hg init
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 audit of .hg
Martin Geisler
tests: unify test-audit-path
r11855
$ hg add .hg/00changelog.i
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path contains illegal component: .hg/00changelog.i
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-audit-path
r11855
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 #if symlink
Symlinks
Martin Geisler
tests: unify test-audit-path
r11855 $ mkdir a
$ echo a > a/a
$ hg ci -Ama
adding a/a
$ ln -s a b
$ echo b > a/b
$ hg add b/b
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path 'b/b' traverses symbolic link 'b'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-audit-path
r11855 $ hg add b
should still fail - maybe
$ hg add b/b
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path 'b/b' traverses symbolic link 'b'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-audit-path
r11855
Pierre-Yves David
context: use a the nofsauditor when matching file in history (issue4749)...
r27234 $ hg commit -m 'add symlink b'
Test symlink traversing when accessing history:
-----------------------------------------------
(build a changeset where the path exists as a directory)
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mkdir b
$ echo c > b/a
$ hg add b/a
$ hg ci -m 'add directory b'
created new head
Test that hg cat does not do anything wrong the working copy has 'b' as directory
$ hg cat b/a
c
$ hg cat -r "desc(directory)" b/a
c
$ hg cat -r "desc(symlink)" b/a
b/a: no such file in rev bc151a1f53bd
[1]
Test that hg cat does not do anything wrong the working copy has 'b' as a symlink (issue4749)
$ hg up 'desc(symlink)'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg cat b/a
b/a: no such file in rev bc151a1f53bd
[1]
$ hg cat -r "desc(directory)" b/a
c
$ hg cat -r "desc(symlink)" b/a
b/a: no such file in rev bc151a1f53bd
[1]
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 #endif
Martin Geisler
tests: unify test-audit-path
r11855 unbundle tampered bundle
$ hg init target
$ cd target
Thomas Arendsen Hein
tests: make tests work if directory contains special characters...
r16350 $ hg unbundle "$TESTDIR/bundles/tampered.hg"
Martin Geisler
tests: unify test-audit-path
r11855 adding changesets
adding manifests
adding file changes
added 5 changesets with 6 changes to 6 files (+4 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets b7da9bf6b037:fc1393d727bc
Martin Geisler
tests: unify test-audit-path
r11855 (run 'hg heads' to see heads, 'hg merge' to merge)
attack .hg/test
$ hg manifest -r0
.hg/test
$ hg update -Cr0
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path contains illegal component: .hg/test
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-audit-path
r11855
attack foo/.hg/test
$ hg manifest -r1
foo/.hg/test
$ hg update -Cr1
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path 'foo/.hg/test' is inside nested repo 'foo'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-audit-path
r11855
attack back/test where back symlinks to ..
$ hg manifest -r2
back
back/test
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 #if symlink
Martin Geisler
tests: unify test-audit-path
r11855 $ hg update -Cr2
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'back/test' traverses symbolic link 'back'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 #else
('back' will be a file and cause some other system specific error)
$ hg update -Cr2
Matt Harbison
context: skip path conflicts by default when clearing unknown file (issue5776)...
r37119 abort: $TESTTMP/target/back/test: $ENOTDIR$
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 [255]
#endif
Martin Geisler
tests: unify test-audit-path
r11855
attack ../test
$ hg manifest -r3
../test
Mark Thomas
tests: add test demonstrating regression in path audit...
r34833 $ mkdir ../test
$ echo data > ../test/file
Martin Geisler
tests: unify test-audit-path
r11855 $ hg update -Cr3
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path contains illegal component: ../test
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Mark Thomas
tests: add test demonstrating regression in path audit...
r34833 $ cat ../test/file
Mark Thomas
context: audit paths before clearing unknown files and dirs...
r34834 data
Martin Geisler
tests: unify test-audit-path
r11855
attack /tmp/test
$ hg manifest -r4
/tmp/test
$ hg update -Cr4
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 abort: path contains illegal component: /tmp/test
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704
Test symlink traversal on merge:
--------------------------------
#if symlink
set up symlink hell
$ mkdir merge-symlink-out
$ hg init merge-symlink
$ cd merge-symlink
$ touch base
$ hg commit -qAm base
$ ln -s ../merge-symlink-out a
$ hg commit -qAm 'symlink a -> ../merge-symlink-out'
$ hg up -q 0
$ mkdir a
$ touch a/poisoned
$ hg commit -qAm 'file a/poisoned'
$ hg log -G -T '{rev}: {desc}\n'
@ 2: file a/poisoned
|
| o 1: symlink a -> ../merge-symlink-out
|/
o 0: base
try trivial merge
$ hg up -qC 1
$ hg merge 2
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'a/poisoned' traverses symbolic link 'a'
[255]
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704
try rebase onto other revision: cache of audited paths should be discarded,
and the rebase should fail (issue5628)
$ hg up -qC 2
$ hg rebase -s 2 -d 1 --config extensions.rebase=
rebasing 2:e73c21d6b244 "file a/poisoned" (tip)
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'a/poisoned' traverses symbolic link 'a'
[255]
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704 $ ls ../merge-symlink-out
$ cd ..
Test symlink traversal on update:
---------------------------------
$ mkdir update-symlink-out
$ hg init update-symlink
$ cd update-symlink
$ ln -s ../update-symlink-out a
$ hg commit -qAm 'symlink a -> ../update-symlink-out'
$ hg rm a
$ mkdir a && touch a/b
$ hg ci -qAm 'file a/b' a/b
$ hg up -qC 0
$ hg rm a
$ mkdir a && touch a/c
$ hg ci -qAm 'rm a, file a/c'
$ hg log -G -T '{rev}: {desc}\n'
@ 2: rm a, file a/c
|
| o 1: file a/b
|/
o 0: symlink a -> ../update-symlink-out
try linear update where symlink already exists:
$ hg up -qC 0
$ hg up 1
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'a/b' traverses symbolic link 'a'
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704 [255]
try linear update including symlinked directory and its content: paths are
audited first by calculateupdates(), where no symlink is created so both
'a' and 'a/b' are taken as good paths. still applyupdates() should fail.
$ hg up -qC null
$ hg up 1
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'a/b' traverses symbolic link 'a'
Yuya Nishihara
pathauditor: disable cache of audited paths by default (issue5628)...
r33705 [255]
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704 $ ls ../update-symlink-out
try branch update replacing directory with symlink, and its content: the
path 'a' is audited as a directory first, which should be audited again as
a symlink.
$ rm -f a
$ hg up -qC 2
$ hg up 1
Siddharth Agarwal
merge: disable path conflict checking by default (issue5716)...
r34943 abort: path 'a/b' traverses symbolic link 'a'
Yuya Nishihara
pathauditor: disable cache of audited paths by default (issue5628)...
r33705 [255]
Yuya Nishihara
tests: show cache of audited paths is never invalidated
r33704 $ ls ../update-symlink-out
$ cd ..
#endif