largefiles: flush out tests to cover more operations and known cornercases
authorNa'Tosha Bard <natosha@unity3d.com>
Thu, 13 Oct 2011 15:15:32 +0200
changeset 15251 173b00827279
parent 15250 f172292cd416
child 15252 6e809bb4f969
largefiles: flush out tests to cover more operations and known cornercases
tests/test-largefiles.t
--- a/tests/test-largefiles.t	Thu Oct 13 12:11:25 2011 +0200
+++ b/tests/test-largefiles.t	Thu Oct 13 15:15:32 2011 +0200
@@ -1,6 +1,11 @@
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
   > largefiles=
+  > purge=
+  > rebase=
+  > [largefiles]
+  > size=2
+  > patterns=glob:**.dat
   > EOF
 
 Create the repo with a couple of revisions of both large and normal
@@ -124,3 +129,316 @@
   normal22
   $ cat sub/large4
   large22
+
+Test a separate commit corner case (specifying files to commit) and check
+that the commited files have the right value.
+
+  $ cd ../a
+  $ echo normal3 > normal3
+  $ echo large3 > large3
+  $ echo normal4 > sub/normal4
+  $ echo large4 > sub/large4
+  $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
+  $ cat normal3
+  normal3
+  $ cat large3
+  large3
+  $ cat sub/normal4
+  normal4
+  $ cat sub/large4
+  large4
+
+Test one more commit corner case that has been known to break (comitting from
+a sub-directory of the repo).
+
+  $ cd ../a
+  $ echo normal33 > normal3
+  $ echo large33 > large3
+  $ echo normal44 > sub/normal4
+  $ echo large44 > sub/large4
+  $ cd sub
+  $ hg commit -m "edit files yet again"
+  $ cat ../normal3
+  normal33
+  $ cat ../large3
+  large33
+  $ cat normal4
+  normal44
+  $ cat large4
+  large44
+
+Check that committing standins is not allowed.
+
+  $ cd ..
+  $ echo large3 > large3
+  $ hg commit .hglf/large3 -m "try to commit standin"
+  abort: Don't commit largefile standin. Commit largefile.
+  [255]
+
+Test some cornercases for adding largefiles.
+
+  $ echo large5 > large5
+  $ hg add --large large5
+  $ hg add --large large5
+  large5 already a largefile
+  $ mkdir sub2
+  $ echo large6 > sub2/large6
+  $ echo large7 > sub2/large7
+  $ hg add --large sub2
+  adding sub2/large6 as a largefile
+  adding sub2/large7 as a largefile
+  $ hg st
+  M large3
+  A large5
+  A sub2/large6
+  A sub2/large7
+
+Test that files get added as largefiles based on .hgrc settings
+
+  $ echo testdata > test.dat
+  $ dd bs=3145728 count=1 if=/dev/zero of=reallylarge > /dev/null 2> /dev/null
+  $ hg add
+  adding reallylarge as a largefile
+  adding test.dat as a largefile
+  $ dd bs=1048576 count=1 if=/dev/zero of=reallylarge2 > /dev/null 2> /dev/null
+
+Test that specifying the --lsize command on the comand-line works
+
+  $ hg add --lfsize 1
+  adding reallylarge2 as a largefile
+
+Test forget on largefiles.
+
+  $ hg forget large3 large5 test.dat reallylarge reallylarge2
+  $ hg st
+  A sub2/large6
+  A sub2/large7
+  R large3
+  ? large5
+  ? reallylarge
+  ? reallylarge2
+  ? test.dat
+  $ hg commit -m "add/edit more largefiles"
+  $ hg st
+  ? large3
+  ? large5
+  ? reallylarge
+  ? reallylarge2
+  ? test.dat
+
+Test purge with largefiles (verify that largefiles get populated in the
+working copy correctly after a purge)
+
+  $ hg purge --all
+  $ cat sub/large4
+  large44
+  $ cat sub2/large6
+  large6
+  $ cat sub2/large7
+  large7
+
+Test cloning a largefiles repo.
+
+  $ cd ..
+  $ hg clone a b
+  updating to branch default
+  5 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  3 largefiles updated, 0 removed
+  $ cd b
+  $ hg log
+  changeset:   7:daea875e9014
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add/edit more largefiles
+  
+  changeset:   6:4355d653f84f
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files yet again
+  
+  changeset:   5:9d5af5072dbd
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files again
+  
+  changeset:   4:74c02385b94c
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     move files
+  
+  changeset:   3:9e8fbc4bce62
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     copy files
+  
+  changeset:   2:51a0ae4d5864
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     remove files
+  
+  changeset:   1:ce8896473775
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files
+  
+  changeset:   0:30d30fe6a5be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add files
+  
+  $ cat normal3
+  normal33
+  $ cat sub/normal4
+  normal44
+  $ cat sub/large4
+  large44
+  $ cat sub2/large6
+  large6
+  $ cat sub2/large7
+  large7
+  $ cd ..
+  $ hg clone a -r 3 c
+  adding changesets
+  adding manifests
+  adding file changes
+  added 4 changesets with 10 changes to 4 files
+  updating to branch default
+  4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  2 largefiles updated, 0 removed
+  $ cd c
+  $ hg log
+  changeset:   3:9e8fbc4bce62
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     copy files
+  
+  changeset:   2:51a0ae4d5864
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     remove files
+  
+  changeset:   1:ce8896473775
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files
+  
+  changeset:   0:30d30fe6a5be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add files
+  
+  $ cat normal1
+  normal22
+  $ cat large1
+  large22
+  $ cat sub/normal2
+  normal22
+  $ cat sub/large2
+  large22
+
+Test that old revisions of a clone have correct largefiles content.  This also
+tsts update.
+
+  $ hg update -r 1 
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  1 largefiles updated, 0 removed
+  $ cat large1
+  large11
+  $ cat sub/large2
+  large22
+
+Test that rebasing between two repositories does not revert largefiles to old
+revisions (this was a very bad bug that took a lot of work to fix).
+
+  $ cd ..
+  $ hg clone a d
+  updating to branch default
+  5 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  3 largefiles updated, 0 removed
+  $ cd b
+  $ echo large4-modified > sub/large4
+  $ echo normal3-modified > normal3
+  $ hg commit -m "modify normal file and largefile in repo b"
+  $ cd ../d
+  $ echo large6-modified > sub2/large6
+  $ echo normal4-modified > sub/normal4
+  $ hg commit -m "modify normal file largefile in repo d"
+  $ hg pull --rebase ../b
+  pulling from ../b
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 2 changes to 2 files (+1 heads)
+  getting changed largefiles
+  1 largefiles updated, 0 removed
+  saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg
+  nothing to rebase
+  $ hg log
+  changeset:   9:598410d3eb9a
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify normal file largefile in repo d
+  
+  changeset:   8:a381d2c8c80e
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify normal file and largefile in repo b
+  
+  changeset:   7:daea875e9014
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add/edit more largefiles
+  
+  changeset:   6:4355d653f84f
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files yet again
+  
+  changeset:   5:9d5af5072dbd
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files again
+  
+  changeset:   4:74c02385b94c
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     move files
+  
+  changeset:   3:9e8fbc4bce62
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     copy files
+  
+  changeset:   2:51a0ae4d5864
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     remove files
+  
+  changeset:   1:ce8896473775
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     edit files
+  
+  changeset:   0:30d30fe6a5be
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add files
+  
+  $ cat normal3
+  normal3-modified
+  $ cat sub/normal4
+  normal4-modified
+  $ cat sub/large4
+  large4-modified
+  $ cat sub2/large6
+  large6-modified
+  $ cat sub2/large7
+  large7