test-audit-path.t
240 lines
| 5.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-audit-path.t
Gregory Szorc
|
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
|
r11855 | $ hg init | ||
Mads Kiilerich
|
r16908 | audit of .hg | ||
Martin Geisler
|
r11855 | |||
$ hg add .hg/00changelog.i | ||||
Matt Harbison
|
r35394 | abort: path contains illegal component: .hg/00changelog.i | ||
Martin von Zweigbergk
|
r49192 | [10] | ||
Martin Geisler
|
r11855 | |||
Mads Kiilerich
|
r16908 | #if symlink | ||
Symlinks | ||||
Martin Geisler
|
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
|
r35394 | abort: path 'b/b' traverses symbolic link 'b' | ||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11855 | $ hg add b | ||
should still fail - maybe | ||||
$ hg add b/b | ||||
Matt Harbison
|
r35394 | abort: path 'b/b' traverses symbolic link 'b' | ||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11855 | |||
Pierre-Yves David
|
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
|
r16908 | #endif | ||
Martin Geisler
|
r11855 | unbundle tampered bundle | ||
$ hg init target | ||||
$ cd target | ||||
Thomas Arendsen Hein
|
r16350 | $ hg unbundle "$TESTDIR/bundles/tampered.hg" | ||
Martin Geisler
|
r11855 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 5 changesets with 6 changes to 6 files (+4 heads) | ||||
Boris Feld
|
r39516 | new changesets b7da9bf6b037:fc1393d727bc (5 drafts) | ||
Martin Geisler
|
r11855 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
attack .hg/test | ||||
$ hg manifest -r0 | ||||
.hg/test | ||||
$ hg update -Cr0 | ||||
Matt Harbison
|
r35394 | abort: path contains illegal component: .hg/test | ||
Martin von Zweigbergk
|
r49192 | [10] | ||
Martin Geisler
|
r11855 | |||
attack foo/.hg/test | ||||
$ hg manifest -r1 | ||||
foo/.hg/test | ||||
$ hg update -Cr1 | ||||
Matt Harbison
|
r35394 | abort: path 'foo/.hg/test' is inside nested repo 'foo' | ||
Martin von Zweigbergk
|
r49192 | [10] | ||
Martin Geisler
|
r11855 | |||
attack back/test where back symlinks to .. | ||||
$ hg manifest -r2 | ||||
back | ||||
back/test | ||||
Mads Kiilerich
|
r16908 | #if symlink | ||
Martin Geisler
|
r11855 | $ hg update -Cr2 | ||
Siddharth Agarwal
|
r34943 | abort: path 'back/test' traverses symbolic link 'back' | ||
Matt Mackall
|
r12316 | [255] | ||
Mads Kiilerich
|
r16908 | #else | ||
('back' will be a file and cause some other system specific error) | ||||
$ hg update -Cr2 | ||||
Matt Harbison
|
r37119 | abort: $TESTTMP/target/back/test: $ENOTDIR$ | ||
Mads Kiilerich
|
r16908 | [255] | ||
#endif | ||||
Martin Geisler
|
r11855 | |||
attack ../test | ||||
$ hg manifest -r3 | ||||
../test | ||||
Mark Thomas
|
r34833 | $ mkdir ../test | ||
$ echo data > ../test/file | ||||
Martin Geisler
|
r11855 | $ hg update -Cr3 | ||
Matt Harbison
|
r35394 | abort: path contains illegal component: ../test | ||
Martin von Zweigbergk
|
r49192 | [10] | ||
Mark Thomas
|
r34833 | $ cat ../test/file | ||
Mark Thomas
|
r34834 | data | ||
Martin Geisler
|
r11855 | |||
attack /tmp/test | ||||
$ hg manifest -r4 | ||||
/tmp/test | ||||
$ hg update -Cr4 | ||||
Matt Harbison
|
r35394 | abort: path contains illegal component: /tmp/test | ||
Martin von Zweigbergk
|
r49192 | [10] | ||
Mads Kiilerich
|
r16913 | |||
$ cd .. | ||||
Yuya Nishihara
|
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
|
r34943 | abort: path 'a/poisoned' traverses symbolic link 'a' | ||
[255] | ||||
Yuya Nishihara
|
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= | ||||
Martin von Zweigbergk
|
r46356 | rebasing 2:e73c21d6b244 tip "file a/poisoned" | ||
Siddharth Agarwal
|
r34943 | abort: path 'a/poisoned' traverses symbolic link 'a' | ||
[255] | ||||
Yuya Nishihara
|
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
|
r34943 | abort: path 'a/b' traverses symbolic link 'a' | ||
Yuya Nishihara
|
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
|
r34943 | abort: path 'a/b' traverses symbolic link 'a' | ||
Yuya Nishihara
|
r33705 | [255] | ||
Yuya Nishihara
|
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
|
r34943 | abort: path 'a/b' traverses symbolic link 'a' | ||
Yuya Nishihara
|
r33705 | [255] | ||
Yuya Nishihara
|
r33704 | $ ls ../update-symlink-out | ||
$ cd .. | ||||
#endif | ||||