tests/test-clone-failure.t
author Augie Fackler <durin42@gmail.com>
Mon, 16 May 2011 16:59:45 -0500
changeset 14346 bf85c2639700
parent 13956 ffb5c09ba822
child 15443 a1914d214579
permissions -rw-r--r--
httpconnection: correctly handle redirects from http to https Previously the connection cache for keepalives didn't keep track of ssl. This meant that when we connected to an https server after that same server via http, both on the default port, we'd incorrectly reuse the non-https connection as the default port meant the connection cache key was the same.

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