sapling/tests/test-lfs-bundle.t
Durham Goode ad813edcbd treemanifest: enable treemanifest by default in tests
Summary:
Now that all our repos are treemanifest, let's enable the extension by
default in tests. Once we're certain no one needs it in production we'll also
make it the default in core Mercurial.

This diff includes a minor fix in treemanifest to be aware of always-enabled
extensions. It won't matter until we actually add treemanifest to the list of
default enabled extensions, but I caught this while testing things.

Reviewed By: ikostia

Differential Revision: D15030253

fbshipit-source-id: d8361f915928b6ad90665e6ed330c1df5c8d8d86
2019-05-28 03:17:02 -07:00

274 lines
12 KiB
Raku

$ setconfig extensions.treemanifest=!
In this test, we want to test LFS bundle application. The test will cover all
combinations: LFS on/off; remotefilelog on/off.
To make it more interesting, the file revisions will contain hg filelog
metadata ('\1\n'). The bundle will have 1 file revision overlapping with the
destination repo.
# rev 1 2 3
# repo: yes yes no
# bundle: no (base) yes yes (deltabase: 2 if possible)
It is interesting because rev 2 could have been stored as LFS in the repo, and
non-LFS in the bundle; or vice-versa.
Init:
$ . helpers-usechg.sh
$ enable lfs remotefilelog
$ setconfig lfs.url=file://$TESTTMP/remote remotefilelog.cachepath=$TESTTMP/cache
Helper functions to create commits:
$ commitxy() {
> hg debugdrawdag "$@" <<'EOS'
> Y # Y/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nE\nF (copied from Y)
> | # Y/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nG\nH (copied from X)
> X # X/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nC\n
> # X/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nD\n
> EOS
> }
$ commitz() {
> hg debugdrawdag "$@" <<'EOS'
> Z # Z/X=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nI\n (copied from Y)
> | # Z/Y=\1\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nJ\n (copied from X)
> | # Z/Z=\1\nZ
> Y
> EOS
> }
$ enablelfs() {
> cat >> .hg/hgrc <<EOF
> [lfs]
> threshold=1
> EOF
> }
$ enableshallow() {
> echo remotefilelog >> .hg/requires
> }
Generate bundles
$ for i in shallow full; do
> for j in normal lfs; do
> NAME=src-$i-$j
> hg init $TESTTMP/$NAME
> cd $TESTTMP/$NAME
> [ $i = shallow ] && enableshallow
> [ $j = lfs ] && enablelfs
> commitxy
> commitz
> echo ---- Source repo: $i $j ----
> hg debugfilerevision -r 'all()'
> hg bundle -q --base X -r Y+Z $TESTTMP/$NAME.bundle
> SRCNAMES="$SRCNAMES $NAME"
> done
> done
---- Source repo: shallow normal ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=0 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=0 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Source repo: shallow lfs ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=2000 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=2000 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Source repo: full normal ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=0 size=45 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=0 size=45 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=583fc1cb5a72,88c7303c7f80,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Source repo: full lfs ----
ed3e785005fc: X
X: bin=0 lnk=0 flag=2000 size=41 copied='' chain=e59d6c47cda0
Y: bin=0 lnk=0 flag=2000 size=41 copied='' chain=583fc1cb5a72
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
Note: full normal repo has a wrong size=45 where it should be 41, see XXX note
in mercurial/filelog.py.
Prepare destination repos
$ for i in shallow full; do
> for j in normal lfs; do
> NAME=dst-$i-$j
> hg init $TESTTMP/$NAME
> cd $TESTTMP/$NAME
> [ $i = shallow ] && enableshallow
> [ $j = lfs ] && enablelfs
> commitxy
> DSTNAMES="$DSTNAMES $NAME"
> done
> done
Apply bundles
$ cd $TESTTMP
$ for i in $SRCNAMES; do
> for j in $DSTNAMES; do
> echo ---- Applying $i.bundle to $j ----
> cp -R $TESTTMP/$j $TESTTMP/tmp-$i-$j
> cd $TESTTMP/tmp-$i-$j
> hg unbundle $TESTTMP/$i.bundle -q 2>/dev/null || echo 'CRASHED!' && hg debugfilerev -r 'all()-X'
> if grep remotefilelog .hg/requires &>/dev/null; then :; else
> hg verify --quiet
> fi
> done
> done
---- Applying src-shallow-normal.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=000000000000,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=000000000000,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-shallow-normal.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=000000000000,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=000000000000,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-shallow-lfs.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39,5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=583fc1cb5a72,88c7303c7f80,78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-full-normal.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=0 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=0 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=0 size=7 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-shallow-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-shallow-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-full-normal ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=0 size=42 copied='Y' chain=e59d6c47cda0,c6fdd3c3ab39
Y: bin=0 lnk=0 flag=0 size=42 copied='X' chain=583fc1cb5a72,88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34
---- Applying src-full-lfs.bundle to dst-full-lfs ----
9f4445d5e0fc: Y
X: bin=0 lnk=0 flag=2000 size=42 copied='Y' chain=c6fdd3c3ab39
Y: bin=0 lnk=0 flag=2000 size=42 copied='X' chain=88c7303c7f80
c73835eb729c: Z
X: bin=0 lnk=0 flag=2000 size=41 copied='Y' chain=5322d1c20036
Y: bin=0 lnk=0 flag=2000 size=41 copied='X' chain=78eb25c15608
Z: bin=0 lnk=0 flag=2000 size=3 copied='' chain=0ad6e257ad34