--- a/tests/test-clone.t Fri Jun 01 13:38:18 2012 +0200
+++ b/tests/test-clone.t Mon Jun 04 19:05:22 2012 +0200
@@ -458,3 +458,101 @@
updating to branch stable
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -r ua
+
+
+Testing failures:
+
+ $ mkdir fail
+ $ cd fail
+
+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: *refused* (glob)
+ [255]
+ $ rm -rf b # work around bug with http clone
+
+
+#if unix-permissions
+
+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
+
+#endif
+
+
+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]
+
+
+#if unix-permissions
+
+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
+
+#endif
+
+ $ cd ..