tests/test-lfs-bundle.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 15 Jan 2021 12:41:38 +0100
changeset 46314 95a615dd77bf
parent 44379 ca82929e433d
child 47071 3e381eb557f3
permissions -rw-r--r--
clone: make sure we warm the cache after a clone This work around any deviciency/limitation of the clone process. In our case this ensure the persistent nodemap exist with valid content. Ideally, the cloning process would also do "the right thing". However since older server will never be able to do "the right thing". The local workaround will be necessary anyway. I am not worried by the performance impact of this as `hg clone` is non-instant on large repositories where is could matters. Warming the cache if they are already correct is very fast. And if they are not already warm, this seems like a good time to do so. This impact various test as more cache are now warmed sooner, all the change should be harmless. Differential Revision: https://phab.mercurial-scm.org/D9789
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36742
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     1
In this test, we want to test LFS bundle application on both LFS and non-LFS
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     2
repos.
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     3
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     4
To make it more interesting, the file revisions will contain hg filelog
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     5
metadata ('\1\n'). The bundle will have 1 file revision overlapping with the
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     6
destination repo.
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     7
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     8
#  rev      1          2         3
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
     9
#  repo:    yes        yes       no
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    10
#  bundle:  no (base)  yes       yes (deltabase: 2 if possible)
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    11
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    12
It is interesting because rev 2 could have been stored as LFS in the repo, and
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    13
non-LFS in the bundle; or vice-versa.
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    14
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    15
Init
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    16
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    17
  $ cat >> $HGRCPATH << EOF
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    18
  > [extensions]
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    19
  > lfs=
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    20
  > drawdag=$TESTDIR/drawdag.py
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    21
  > [lfs]
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    22
  > url=file:$TESTTMP/lfs-remote
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    23
  > EOF
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    24
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    25
Helper functions
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    26
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    27
  $ commitxy() {
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    28
  > hg debugdrawdag "$@" <<'EOS'
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    29
  >  Y  # Y/X=\1\nAAAA\nE\nF
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    30
  >  |  # Y/Y=\1\nAAAA\nG\nH
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    31
  >  X  # X/X=\1\nAAAA\nC\n
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    32
  >     # X/Y=\1\nAAAA\nD\n
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    33
  > EOS
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    34
  > }
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    35
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    36
  $ commitz() {
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    37
  > hg debugdrawdag "$@" <<'EOS'
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    38
  >  Z  # Z/X=\1\nAAAA\nI\n
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    39
  >  |  # Z/Y=\1\nAAAA\nJ\n
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    40
  >  |  # Z/Z=\1\nZ
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    41
  >  Y
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    42
  > EOS
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    43
  > }
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    44
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    45
  $ enablelfs() {
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    46
  >   cat >> .hg/hgrc <<EOF
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    47
  > [lfs]
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    48
  > track=all()
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    49
  > EOF
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    50
  > }
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    51
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    52
Generate bundles
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    53
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    54
  $ for i in normal lfs; do
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    55
  >   NAME=src-$i
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    56
  >   hg init $TESTTMP/$NAME
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    57
  >   cd $TESTTMP/$NAME
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    58
  >   [ $i = lfs ] && enablelfs
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    59
  >   commitxy
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    60
  >   commitz
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    61
  >   hg bundle -q --base X -r Y+Z $TESTTMP/$NAME.bundle
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    62
  >   SRCNAMES="$SRCNAMES $NAME"
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    63
  > done
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    64
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    65
Prepare destination repos
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    66
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    67
  $ for i in normal lfs; do
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    68
  >   NAME=dst-$i
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    69
  >   hg init $TESTTMP/$NAME
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    70
  >   cd $TESTTMP/$NAME
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    71
  >   [ $i = lfs ] && enablelfs
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    72
  >   commitxy
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    73
  >   DSTNAMES="$DSTNAMES $NAME"
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    74
  > done
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    75
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    76
Apply bundles
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    77
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    78
  $ for i in $SRCNAMES; do
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    79
  >   for j in $DSTNAMES; do
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    80
  >     echo ---- Applying $i.bundle to $j ----
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    81
  >     cp -R $TESTTMP/$j $TESTTMP/tmp-$i-$j
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    82
  >     cd $TESTTMP/tmp-$i-$j
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    83
  >     if hg unbundle $TESTTMP/$i.bundle -q 2>/dev/null; then
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    84
  >       hg verify -q && echo OK
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    85
  >     else
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    86
  >       echo CRASHED
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    87
  >     fi
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    88
  >   done
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    89
  > done
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    90
  ---- Applying src-normal.bundle to dst-normal ----
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    91
  OK
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    92
  ---- Applying src-normal.bundle to dst-lfs ----
36748
369aadf7a326 revlog: resolve lfs rawtext to vanilla rawtext before applying delta
Jun Wu <quark@fb.com>
parents: 36744
diff changeset
    93
  OK
36742
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    94
  ---- Applying src-lfs.bundle to dst-normal ----
36743
d031609b3cb7 changegroup: do not delta lfs revisions
Jun Wu <quark@fb.com>
parents: 36742
diff changeset
    95
  OK
36742
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    96
  ---- Applying src-lfs.bundle to dst-lfs ----
4e41b59633fa lfs: add a test showing bundle application could be broken
Jun Wu <quark@fb.com>
parents:
diff changeset
    97
  OK
44379
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
    98
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
    99
Hint if the cache location cannot be inferred from the environment
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   100
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   101
#if windows
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   102
  $ unset LOCALAPPDATA
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   103
  $ unset APPDATA
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   104
  $ HGRCPATH= hg config lfs --debug
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   105
  abort: unknown lfs usercache location
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   106
  (define LOCALAPPDATA or APPDATA in the environment, or set lfs.usercache)
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   107
  [255]
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   108
#endif
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   109
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   110
#if osx
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   111
  $ unset HOME
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   112
  $ HGRCPATH= hg config lfs --debug
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   113
  abort: unknown lfs usercache location
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   114
  (define HOME in the environment, or set lfs.usercache)
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   115
  [255]
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   116
#endif
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   117
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   118
#if no-windows no-osx
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   119
  $ unset XDG_CACHE_HOME
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   120
  $ unset HOME
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   121
  $ HGRCPATH= hg config lfs --debug
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   122
  abort: unknown lfs usercache location
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   123
  (define XDG_CACHE_HOME or HOME in the environment, or set lfs.usercache)
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   124
  [255]
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   125
#endif
ca82929e433d lfutil: provide a hint if the largefiles/lfs cache path cannot be determined
Matt Harbison <matt_harbison@yahoo.com>
parents: 37439
diff changeset
   126