view tests/test-largefiles-small-disk.t @ 16843:61f3ca8e4d39

test-paths.t: enable for Windows using #if If the no-msys exit at the beginning is removed, the test fails on Windows with MSYS with: --- C:\Users\adi\hgrepos\hg-main\tests\test-paths.t +++ C:\Users\adi\hgrepos\hg-main\tests\test-paths.t.err @@ -24,7 +24,7 @@ expand = $TESTTMP/a/foo/bar (glob) $ SOMETHING=/foo hg paths dupe = $TESTTMP/b (glob) - expand = /foo/bar + expand = c:/MinGW/msys/1.0/foo/bar $ hg paths -q dupe expand caused by http://www.mingw.org/wiki/Posix_path_conversion .
author Adrian Buehlmann <adrian@cadifra.com>
date Sun, 03 Jun 2012 19:35:45 +0200
parents 0d91211dd12f
children c9db897d5a43
line wrap: on
line source

Test how largefiles abort in case the disk runs full

  $ cat > criple.py <<EOF
  > import os, errno, shutil
  > from mercurial import util
  > #
  > # this makes the original largefiles code abort:
  > def copyfileobj(fsrc, fdst, length=16*1024):
  >     fdst.write(fsrc.read(4))
  >     raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
  > shutil.copyfileobj = copyfileobj
  > #
  > # this makes the rewritten code abort:
  > def filechunkiter(f, size=65536, limit=None):
  >     yield f.read(4)
  >     raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
  > util.filechunkiter = filechunkiter
  > #
  > def oslink(src, dest):
  >     raise OSError("no hardlinks, try copying instead")
  > util.oslink = oslink
  > EOF

  $ echo "[extensions]" >> $HGRCPATH
  $ echo "largefiles =" >> $HGRCPATH

  $ hg init alice
  $ cd alice
  $ echo "this is a very big file" > big
  $ hg add --large big
  $ hg commit --config extensions.criple=$TESTTMP/criple.py -m big
  abort: No space left on device
  [255]

The largefile is not created in .hg/largefiles:

  $ ls .hg/largefiles
  dirstate

The user cache is not even created:

  >>> import os; os.path.exists("$HOME/.cache/largefiles/")
  False

Make the commit with space on the device:

  $ hg commit -m big

Now make a clone with a full disk, and make sure lfutil.link function
makes copies instead of hardlinks:

  $ cd ..
  $ hg --config extensions.criple=$TESTTMP/criple.py clone --pull alice bob
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  getting changed largefiles
  abort: No space left on device
  [255]

The largefile is not created in .hg/largefiles:

  $ ls bob/.hg/largefiles