--- a/tests/test-uncommit-interactive.t Mon Sep 11 17:41:53 2017 +0200
+++ b/tests/test-uncommit-interactive.t Mon Sep 11 18:12:06 2017 +0200
@@ -722,3 +722,188 @@
M a
A bar
? foo.orig
+
+Interactive uncommit with a pattern
+-----------------------------------
+
+(more setup)
+
+ $ hg ci -m 'roaming changes'
+ $ cat > b << EOF
+ > a
+ > b
+ > c
+ > d
+ > e
+ > f
+ > h
+ > EOF
+ $ hg add b
+ $ hg ci -m 'add b'
+ $ echo 'celeste' >> a
+ $ echo 'i' >> b
+ $ hg ci -m 'some more changes'
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID be5c67225e80b050867862bbd9f4755c4e9207c5
+ # Parent c280a907fddcef2ffe9fadcc2d87f29998e22b2f
+ some more changes
+
+ diff -r c280a907fddc -r be5c67225e80 a
+ --- a/a Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -9,3 +9,4 @@
+ 4
+ 5
+ babar
+ +celeste
+ diff -r c280a907fddc -r be5c67225e80 b
+ --- a/b Thu Jan 01 00:00:00 1970 +0000
+ +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ @@ -5,3 +5,4 @@
+ e
+ f
+ h
+ +i
+
+ $ hg uncommit -i a << DONE
+ > y
+ > y
+ > DONE
+ diff --git a/a b/a
+ 1 hunks, 1 lines changed
+ examine changes to 'a'? [Ynesfdaq?] y
+
+ @@ -9,3 +9,4 @@
+ 4
+ 5
+ babar
+ +celeste
+ discard this change to 'a'? [Ynesfdaq?] y
+
+ $ hg status
+ M a
+ ? foo.orig
+ $ hg diff
+ diff -r c701d7c8d18b a
+ --- a/a Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -9,3 +9,4 @@
+ 4
+ 5
+ babar
+ +celeste
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID c701d7c8d18be55a92688f4458c26bd74fb1f525
+ # Parent c280a907fddcef2ffe9fadcc2d87f29998e22b2f
+ some more changes
+
+ diff -r c280a907fddc -r c701d7c8d18b b
+ --- a/b Thu Jan 01 00:00:00 1970 +0000
+ +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ @@ -5,3 +5,4 @@
+ e
+ f
+ h
+ +i
+
+(reset)
+
+ $ cat << EOF > a
+ > -3
+ > -2
+ > -1
+ > 0
+ > 1
+ > 2
+ > 3
+ > foo
+ > bar
+ > 4
+ > 5
+ > babar
+ > celeste
+ > EOF
+ $ hg amend
+
+Same but do not select some change in 'a'
+
+ $ hg uncommit -i a << DONE
+ > y
+ > y
+ > n
+ > DONE
+ diff --git a/a b/a
+ 2 hunks, 2 lines changed
+ examine changes to 'a'? [Ynesfdaq?] y
+
+ @@ -1,3 +1,4 @@
+ +-3
+ -2
+ -1
+ 0
+ discard change 1/2 to 'a'? [Ynesfdaq?] y
+
+ @@ -9,3 +10,4 @@
+ 4
+ 5
+ babar
+ +celeste
+ discard change 2/2 to 'a'? [Ynesfdaq?] n
+
+ $ hg status
+ M a
+ ? foo.orig
+
+ $ hg diff
+ diff -r 28d5de12b225 a
+ --- a/a Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,3 +1,4 @@
+ +-3
+ -2
+ -1
+ 0
+
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID 28d5de12b225d1e0951110cced8d8994227be026
+ # Parent c280a907fddcef2ffe9fadcc2d87f29998e22b2f
+ some more changes
+
+ diff -r c280a907fddc -r 28d5de12b225 a
+ --- a/a Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -9,3 +9,4 @@
+ 4
+ 5
+ babar
+ +celeste
+ diff -r c280a907fddc -r 28d5de12b225 b
+ --- a/b Thu Jan 01 00:00:00 1970 +0000
+ +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ @@ -5,3 +5,4 @@
+ e
+ f
+ h
+ +i
+
+ $ cat b
+ a
+ b
+ c
+ d
+ e
+ f
+ h
+ i