##// END OF EJS Templates
i18n: cache translated messages per encoding...
i18n: cache translated messages per encoding This is a simpler workaround alternative to D958, "i18n: clean msgcache when encoding changes." The cache won't be bloated unless you run tons of commands with different --encoding options on command server, or serve many repositories of different web.encoding options on hgweb. The test was originally written by Jun Wu. Differential Revision: https://phab.mercurial-scm.org/D1053

File last commit:

r33960:163b6b7f default
r34661:d00ec62d default
Show More
test-hardlinks.t
428 lines | 9.4 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require hardlink
Mads Kiilerich
tests: introduce hghave hardlinks...
r16971
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ cat > nlinks.py <<EOF
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > from __future__ import print_function
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 > import sys
> from mercurial import util
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > for f in sorted(sys.stdin.readlines()):
> f = f[:-1]
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > print(util.nlinks(f), f)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > EOF
$ nlinksdir()
> {
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 > find "$@" -type f | $PYTHON $TESTTMP/nlinks.py
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 > }
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 Some implementations of cp can't create hardlinks (replaces 'cp -al' on Linux):
$ cat > linkcp.py <<EOF
Augie Fackler
tests: update test-hardlinks to pass our import checker
r33960 > from __future__ import absolute_import
> import sys
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 > from mercurial import util
> util.copyfiles(sys.argv[1], sys.argv[2], hardlink=True)
> EOF
$ linkcp()
> {
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 > $PYTHON $TESTTMP/linkcp.py $1 $2
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 > }
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 Prepare repo r1:
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init r1
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ cd r1
$ echo c1 > f1
$ hg add f1
$ hg ci -m0
$ mkdir d1
$ cd d1
$ echo c2 > f2
$ hg add f2
$ hg ci -m1
$ cd ../..
$ nlinksdir r1/.hg/store
1 r1/.hg/store/00changelog.i
1 r1/.hg/store/00manifest.i
1 r1/.hg/store/data/d1/f2.i
1 r1/.hg/store/data/f1.i
1 r1/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r1/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r1/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r1/.hg/store/undo.backup.fncache
1 r1/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r1/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Create hardlinked clone r2:
Pierre-Yves David
progress: get the extremely verbose output out of default debug...
r25125 $ hg clone -U --debug r1 r2 --config progress.debug=true
Augie Fackler
clone: add progress support to hardlink clones (issue3059)
r24440 linking: 1
linking: 2
linking: 3
linking: 4
linking: 5
linking: 6
linking: 7
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 linked 7 files
Create non-hardlinked clone r3:
$ hg clone --pull r1 r3
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Repos r1 and r2 should now contain hardlinked files:
$ nlinksdir r1/.hg/store
2 r1/.hg/store/00changelog.i
2 r1/.hg/store/00manifest.i
2 r1/.hg/store/data/d1/f2.i
2 r1/.hg/store/data/f1.i
2 r1/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r1/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r1/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r1/.hg/store/undo.backup.fncache
1 r1/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r1/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
$ nlinksdir r2/.hg/store
2 r2/.hg/store/00changelog.i
2 r2/.hg/store/00manifest.i
2 r2/.hg/store/data/d1/f2.i
2 r2/.hg/store/data/f1.i
2 r2/.hg/store/fncache
Repo r3 should not be hardlinked:
$ nlinksdir r3/.hg/store
1 r3/.hg/store/00changelog.i
1 r3/.hg/store/00manifest.i
1 r3/.hg/store/data/d1/f2.i
1 r3/.hg/store/data/f1.i
1 r3/.hg/store/fncache
Pierre-Yves David
phases: change publish behavior to only alter behavior when server....
r15659 1 r3/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r3/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r3/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r3/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Create a non-inlined filelog in r3:
$ cd r3/d1
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 >>> f = open('data1', 'wb')
>>> for x in range(10000):
... f.write("%s\n" % str(x))
>>> f.close()
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ for j in 0 1 2 3 4 5 6 7 8 9; do
> cat data1 >> f2
> hg commit -m$j
> done
$ cd ../..
$ nlinksdir r3/.hg/store
1 r3/.hg/store/00changelog.i
1 r3/.hg/store/00manifest.i
1 r3/.hg/store/data/d1/f2.d
1 r3/.hg/store/data/d1/f2.i
1 r3/.hg/store/data/f1.i
1 r3/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 1 r3/.hg/store/phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 1 r3/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 1 r3/.hg/store/undo.backup.fncache
1 r3/.hg/store/undo.backup.phaseroots
1 r3/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 1 r3/.hg/store/undo.phaseroots
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Push to repo r1 should break up most hardlinks in r2:
$ hg -R r2 verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
2 files, 2 changesets, 2 total revisions
$ cd r3
$ hg push
Adrian Buehlmann
test-hardlinks: enable for Windows
r16918 pushing to $TESTTMP/r1 (glob)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 searching for changes
adding changesets
adding manifests
adding file changes
added 10 changesets with 10 changes to 1 files
$ cd ..
$ nlinksdir r2/.hg/store
1 r2/.hg/store/00changelog.i
1 r2/.hg/store/00manifest.i
1 r2/.hg/store/data/d1/f2.i
2 r2/.hg/store/data/f1.i
Jun Wu
util: enable hardlink for copyfile...
r31577 [12] r2/\.hg/store/fncache (re)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r2/.hg/store/fncache
2 r2/.hg/store/fncache
#endif
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967 $ hg -R r2 verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
2 files, 2 changesets, 2 total revisions
$ cd r1
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Committing a change to f1 in r1 must break up hardlink f1.i in r2:
$ echo c1c1 >> f1
$ hg ci -m00
$ cd ..
$ nlinksdir r2/.hg/store
1 r2/.hg/store/00changelog.i
1 r2/.hg/store/00manifest.i
1 r2/.hg/store/data/d1/f2.i
1 r2/.hg/store/data/f1.i
Jun Wu
util: enable hardlink for copyfile...
r31577 [12] r2/\.hg/store/fncache (re)
Adrian Buehlmann
tests: add test-hardlinks.t...
r12967
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r2/.hg/store/fncache
2 r2/.hg/store/fncache
#endif
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 Create a file which exec permissions we will change
$ cd r3
$ echo "echo hello world" > f3
$ hg add f3
$ hg ci -mf3
$ cd ..
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ cd r3
$ hg tip --template '{rev}:{node|short}\n'
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 12:d3b77733a28a
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ echo bla > f1
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 $ chmod +x f3
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 $ hg ci -m1
$ cd ..
Create hardlinked copy r4 of r3 (on Linux, we would call 'cp -al'):
$ linkcp r3 r4
Jun Wu
test-hardlink: do not test .hg/cache/checklink...
r32295 'checklink' is produced by hardlinking a symlink, which is undefined whether
the symlink should be followed or not. It does behave differently on Linux and
BSD. Just remove it so the test pass on both platforms.
$ rm -f r4/.hg/cache/checklink
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 r4 has hardlinks in the working dir (not just inside .hg):
$ nlinksdir r4
2 r4/.hg/00changelog.i
2 r4/.hg/branch
Matt Harbison
tests: fix up recent conditionalized output changes...
r32304 2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
Matt Harbison
tests: add per-line output conditionals for Windows
r31830 2 r4/.hg/cache/checkisexec (execbit !)
? r4/.hg/cache/checklink-target (glob) (symlink !)
2 r4/.hg/cache/checknoexec (execbit !)
Mads Kiilerich
branchmap: use revbranchcache when updating branch map...
r23786 2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/dirstate
FUJIWARA Katsunori
tests: add extra output for fsmonitor at checking under .hg
r33427 2 r4/.hg/fsmonitor.state (fsmonitor !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires
2 r4/.hg/store/00changelog.i
2 r4/.hg/store/00manifest.i
2 r4/.hg/store/data/d1/f2.d
2 r4/.hg/store/data/d1/f2.i
2 r4/.hg/store/data/f1.i
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/.hg/store/data/f3.i
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 2 r4/.hg/store/phaseroots
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 2 r4/.hg/store/undo.backup.fncache
2 r4/.hg/store/undo.backup.phaseroots
2 r4/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 2 r4/.hg/store/undo.phaseroots
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.backup\.dirstate (re)
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 2 r4/.hg/undo.bookmarks
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.dirstate (re)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/d1/data1
2 r4/d1/f2
2 r4/f1
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/f3
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 Update back to revision 12 in r4 should break hardlink of file f1 and f3:
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
4 r4/.hg/undo.backup.dirstate
4 r4/.hg/undo.dirstate
#endif
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 $ hg -R r4 up 12
Matt Harbison
test-hardlinks: stabilize for Windows...
r32780 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (execbit !)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
$ nlinksdir r4
2 r4/.hg/00changelog.i
1 r4/.hg/branch
Matt Harbison
tests: fix up recent conditionalized output changes...
r32304 2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
Matt Harbison
tests: add per-line output conditionals for Windows
r31830 2 r4/.hg/cache/checkisexec (execbit !)
2 r4/.hg/cache/checklink-target (symlink !)
2 r4/.hg/cache/checknoexec (execbit !)
Mads Kiilerich
branchmap: use revbranchcache when updating branch map...
r23786 2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 1 r4/.hg/dirstate
FUJIWARA Katsunori
tests: add extra output for fsmonitor at checking under .hg
r33427 1 r4/.hg/fsmonitor.state (fsmonitor !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/hgrc
2 r4/.hg/last-message.txt
2 r4/.hg/requires
2 r4/.hg/store/00changelog.i
2 r4/.hg/store/00manifest.i
2 r4/.hg/store/data/d1/f2.d
2 r4/.hg/store/data/d1/f2.i
2 r4/.hg/store/data/f1.i
Koen Van Hoof
chmod: create a new file when flags are set on a hardlinked file...
r32721 2 r4/.hg/store/data/f3.i
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/fncache
Pierre-Yves David
phases: set new commit in 1-phase
r15483 2 r4/.hg/store/phaseroots
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/store/undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 2 r4/.hg/store/undo.backup.fncache
2 r4/.hg/store/undo.backup.phaseroots
2 r4/.hg/store/undo.backupfiles
Pierre-Yves David
phases: add rollback support
r15455 2 r4/.hg/store/undo.phaseroots
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.backup\.dirstate (re)
Alexander Solovyov
fix bookmarks rollback behavior...
r14266 2 r4/.hg/undo.bookmarks
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
Jun Wu
util: enable hardlink for copyfile...
r31577 [24] r4/\.hg/undo\.dirstate (re)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019 2 r4/d1/data1
2 r4/d1/f2
1 r4/f1
Matt Harbison
test-hardlinks: stabilize for Windows...
r32780 1 r4/f3 (execbit !)
2 r4/f3 (no-execbit !)
Adrian Buehlmann
test-hardlinks: add testcase for repo copied with 'cp -al'...
r13019
Jun Wu
test-hardlinks: unify two test files into one...
r32294 #if hardlink-whitelisted
$ nlinksdir r4/.hg/undo.backup.dirstate r4/.hg/undo.dirstate
4 r4/.hg/undo.backup.dirstate
4 r4/.hg/undo.dirstate
#endif
Adrian Buehlmann
tests: integrate test-hardlinks-safety.t into test-hardlinks.t...
r13034
Test hardlinking outside hg:
$ mkdir x
$ echo foo > x/a
$ linkcp x y
$ echo bar >> y/a
No diff if hardlink:
$ diff x/a y/a
Test mq hardlinking:
$ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ hg init a
$ cd a
$ hg qimport -n foo - << EOF
> # HG changeset patch
> # Date 1 0
> diff -r 2588a8b53d66 a
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/a Wed Jul 23 15:54:29 2008 +0200
> @@ -0,0 +1,1 @@
> +a
> EOF
adding foo to series file
$ hg qpush
applying foo
now at: foo
$ cd ..
$ linkcp a b
$ cd b
$ hg qimport -n bar - << EOF
> # HG changeset patch
> # Date 2 0
> diff -r 2588a8b53d66 a
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/b Wed Jul 23 15:54:29 2008 +0200
> @@ -0,0 +1,1 @@
> +b
> EOF
adding bar to series file
$ hg qpush
applying bar
now at: bar
$ cat .hg/patches/status
430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c:bar
$ cat .hg/patches/series
foo
bar
$ cat ../a/.hg/patches/status
430ed4828a74fa4047bc816a25500f7472ab4bfe:foo
$ cat ../a/.hg/patches/series
foo
Test tags hardlinking:
$ hg qdel -r qbase:qtip
patch foo finalized without changeset message
patch bar finalized without changeset message
$ hg tag -l lfoo
$ hg tag foo
$ cd ..
$ linkcp b c
$ cd c
$ hg tag -l -r 0 lbar
$ hg tag -r 0 bar
$ cat .hgtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
430ed4828a74fa4047bc816a25500f7472ab4bfe bar
$ cat .hg/localtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
430ed4828a74fa4047bc816a25500f7472ab4bfe lbar
$ cat ../b/.hgtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c foo
$ cat ../b/.hg/localtags
4e7abb4840c46a910f6d7b4d3c3fc7e5209e684c lfoo
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..