Mercurial > hg-stable
changeset 15251:173b00827279
largefiles: flush out tests to cover more operations and known cornercases
author | Na'Tosha Bard <natosha@unity3d.com> |
---|---|
date | Thu, 13 Oct 2011 15:15:32 +0200 |
parents | f172292cd416 |
children | 6e809bb4f969 |
files | tests/test-largefiles.t |
diffstat | 1 files changed, 318 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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