tests/test-clone-failure.t
author Patrick Mezard <patrick@mezard.eu>
Mon, 30 Apr 2012 20:45:45 +0200
branchstable
changeset 16553 9224cc2e99cc
parent 15443 a1914d214579
child 16846 e38ed2ceabe7
permissions -rw-r--r--
amend: fix copy records handling (issue3410) Messing with the dirstate before the intermediate commit seems error prone. Instead, commit and recompute the copies with copies.pathcopies(), then use that with commitctx(). Since copies.pathcopies() does not support file replacement very well, the whole .renamed() condition in samefile() is removed and the "file replacement caused by differing copy source" effect is discarded. Test shamelessly stolen from Idan Kamara <idankk86@gmail.com>

  $ "$TESTDIR/hghave" unix-permissions || exit 80

No local source

  $ hg clone a b
  abort: repository a not found!
  [255]

No remote source

  $ hg clone http://127.0.0.1:3121/a b
  abort: error: Connection refused
  [255]
  $ rm -rf b # work around bug with http clone

Inaccessible source

  $ mkdir a
  $ chmod 000 a
  $ hg clone a b
  abort: repository a not found!
  [255]

Inaccessible destination

  $ hg init b
  $ cd b
  $ hg clone . ../a
  abort: Permission denied: ../a
  [255]
  $ cd ..
  $ chmod 700 a
  $ rm -r a b

Source of wrong type

  $ if "$TESTDIR/hghave" -q fifo; then
  >     mkfifo a
  >     hg clone a b
  >     rm a
  > else
  >     echo "abort: repository a not found!"
  > fi
  abort: repository a not found!

Default destination, same directory

  $ hg init q
  $ hg clone q
  destination directory: q
  abort: destination 'q' is not empty
  [255]

destination directory not empty

  $ mkdir a 
  $ echo stuff > a/a
  $ hg clone q a
  abort: destination 'a' is not empty
  [255]

leave existing directory in place after clone failure

  $ hg init c
  $ cd c
  $ echo c > c
  $ hg commit -A -m test
  adding c
  $ chmod -rx .hg/store/data
  $ cd ..
  $ mkdir d
  $ hg clone c d 2> err
  [255]
  $ test -d d
  $ test -d d/.hg
  [1]

reenable perm to allow deletion

  $ chmod +rx c/.hg/store/data