--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-casecollision-merge.t Fri Dec 16 21:21:27 2011 +0900
@@ -0,0 +1,109 @@
+run only on case-insensitive filesystems
+
+ $ "$TESTDIR/hghave" icasefs || exit 80
+
+################################
+test for branch merging
+################################
+
+ $ hg init repo1
+ $ cd repo1
+
+create base revision
+
+ $ echo base > base.txt
+ $ hg add base.txt
+ $ hg commit -m 'base'
+
+add same file in different case on both heads
+
+ $ echo a > a.txt
+ $ hg add a.txt
+ $ hg commit -m 'add a.txt'
+
+ $ hg update 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+ $ echo A > A.TXT
+ $ hg add A.TXT
+ $ hg commit -m 'add A.TXT'
+ created new head
+
+merge another, and fail with case-folding collision
+
+ $ hg merge
+ abort: case-folding collision between a.txt and A.TXT
+ [255]
+
+check clean-ness of working directory
+
+ $ hg status
+ $ hg parents --template '{rev}\n'
+ 2
+ $ cd ..
+
+################################
+test for linear updates
+################################
+
+ $ hg init repo2
+ $ cd repo2
+
+create base revision (rev:0)
+
+ $ hg import --bypass --exact - <<EOF
+ > # HG changeset patch
+ > # User null
+ > # Date 1 0
+ > # Node ID e1bdf414b0ea9c831fd3a14e94a0a18e1410f98b
+ > # Parent 0000000000000000000000000000000000000000
+ > add a
+ >
+ > diff --git a/a b/a
+ > new file mode 100644
+ > --- /dev/null
+ > +++ b/a
+ > @@ -0,0 +1,3 @@
+ > +this is line 1
+ > +this is line 2
+ > +this is line 3
+ > EOF
+ applying patch from stdin
+
+create rename revision (rev:1)
+
+ $ hg import --bypass --exact - <<EOF
+ > # HG changeset patch
+ > # User null
+ > # Date 1 0
+ > # Node ID 9dca9f19bb91851bc693544b598b0740629edfad
+ > # Parent e1bdf414b0ea9c831fd3a14e94a0a18e1410f98b
+ > rename a to A
+ >
+ > diff --git a/a b/A
+ > rename from a
+ > rename to A
+ > EOF
+ applying patch from stdin
+
+update to base revision, and modify 'a'
+
+ $ hg update 0
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo 'this is added line' >> a
+
+update to current tip linearly
+
+ $ hg update 1
+ merging a and A to A
+ 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+
+check status and contents of file
+
+ $ hg status -A
+ M A
+ $ cat A
+ this is line 1
+ this is line 2
+ this is line 3
+ this is added line