##// END OF EJS Templates
context: audit paths before clearing unknown files and dirs...
context: audit paths before clearing unknown files and dirs Fix regression introduced in D785. In some circumstances, context.clearunknown can be called before the path is audited. Audit the path before deleting any conflicting files. Differential Revision: https://phab.mercurial-scm.org/D1157

File last commit:

r34834:07bbb208 default
r34834:07bbb208 default
Show More
test-audit-path.t
248 lines | 5.5 KiB | text/troff | Tads3Lexer
/ tests / test-audit-path.t
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
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 abort: path contains illegal component: .hg/00changelog.i (glob)
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
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 abort: path 'b/b' traverses symbolic link 'b' (glob)
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
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 abort: path 'b/b' traverses symbolic link 'b' (glob)
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
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 abort: path contains illegal component: .hg/test (glob)
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
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 abort: path 'foo/.hg/test' is inside nested repo 'foo' (glob)
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
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 back: is both a file and a directory
abort: destination manifest contains path conflicts
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
test-audit-path: fill in missing output for no-symlink case...
r34690 back: is both a file and a directory
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 abort: * (glob)
[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
Mads Kiilerich
tests: convert some 'hghave symlink' to #if...
r16908 abort: path contains illegal component: ../test (glob)
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
Mads Kiilerich
tests: fix for windows - slashes and no serve
r18506 abort: path contains illegal component: /tmp/test (glob)
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
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 a: path conflict - a file or link has the same name as a directory
the local file has been renamed to a~aa04623eb0c3
resolve manually then use 'hg resolve --mark a'
1 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
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)
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 a: path conflict - a file or link has the same name as a directory
the local file has been renamed to a~aa04623eb0c3
resolve manually then use 'hg resolve --mark a'
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
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
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 a: is both a file and a directory
abort: destination manifest contains path conflicts
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
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 a: is both a file and a directory
abort: destination manifest contains path conflicts
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
Mark Thomas
merge: check for path conflicts when merging (issue5628)...
r34556 a: is both a file and a directory
abort: destination manifest contains path conflicts
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