tests/test-shelve.t
changeset 42616 5162753c4c14
parent 42566 f802a75da585
child 42623 9eace8d6d537
--- a/tests/test-shelve.t	Sun Jul 07 10:54:41 2019 -0400
+++ b/tests/test-shelve.t	Tue Jul 02 18:02:12 2019 +0530
@@ -1158,3 +1158,228 @@
   [255]
 
   $ cd ..
+
+-- test for interactive mode on unshelve
+
+  $ hg init a
+  $ cd a
+  $ echo > b
+  $ hg ci -Am b
+  adding b
+  $ echo > c
+  $ echo > d
+  $ hg add .
+  adding c
+  adding d
+  $ hg shelve
+  shelved as default
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo > e
+  $ hg add e
+  $ hg ci -m e
+  $ hg shelve --patch
+  default         (1s ago)    changes to: b
+  
+  diff --git a/c b/c
+  new file mode 100644
+  --- /dev/null
+  +++ b/c
+  @@ -0,0 +1,1 @@
+  +
+  diff --git a/d b/d
+  new file mode 100644
+  --- /dev/null
+  +++ b/d
+  @@ -0,0 +1,1 @@
+  +
+  $ hg unshelve -i <<EOF
+  > y
+  > y
+  > y
+  > n
+  > EOF
+  unshelving change 'default'
+  rebasing shelved changes
+  diff --git a/c b/c
+  new file mode 100644
+  examine changes to 'c'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +
+  record change 1/2 to 'c'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  diff --git a/d b/d
+  new file mode 100644
+  examine changes to 'd'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +
+  record change 2/2 to 'd'?
+  (enter ? for help) [Ynesfdaq?] n
+  
+  $ ls
+  b
+  c
+  e
+-- shelve should not contain `c` now
+  $ hg shelve --patch
+  default         (1s ago)    changes to: b
+  
+  diff --git a/d b/d
+  new file mode 100644
+  --- /dev/null
+  +++ b/d
+  @@ -0,0 +1,1 @@
+  +
+  $ hg unshelve -i <<EOF
+  > y
+  > y
+  > EOF
+  unshelving change 'default'
+  rebasing shelved changes
+  diff --git a/d b/d
+  new file mode 100644
+  examine changes to 'd'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +
+  record this change to 'd'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  $ ls
+  b
+  c
+  d
+  e
+  $ hg shelve --list
+
+-- now, unshelve selected changes from a file
+
+  $ echo B > foo
+  $ hg add foo
+  $ hg ci -m 'add B to foo'
+  $ cat > foo <<EOF
+  > A
+  > B
+  > C
+  > EOF
+  $ hg shelve
+  shelved as default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cat foo
+  B
+  $ hg unshelve -i <<EOF
+  > y
+  > y
+  > n
+  > EOF
+  unshelving change 'default'
+  rebasing shelved changes
+  diff --git a/foo b/foo
+  2 hunks, 2 lines changed
+  examine changes to 'foo'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -1,1 +1,2 @@
+  +A
+   B
+  record change 1/2 to 'foo'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -1,1 +2,2 @@
+   B
+  +C
+  record change 2/2 to 'foo'?
+  (enter ? for help) [Ynesfdaq?] n
+  
+  $ cat foo
+  A
+  B
+  $ hg shelve --patch
+  default         (1s ago)    changes to: add B to foo
+  
+  diff --git a/foo b/foo
+  --- a/foo
+  +++ b/foo
+  @@ -1,2 +1,3 @@
+   A
+   B
+  +C
+
+-- unshelve interactive on conflicts
+
+  $ echo A >> bar1
+  $ echo A >> bar2
+  $ hg add bar1 bar2
+  $ hg ci -m 'add A to bars'
+  $ echo B >> bar1
+  $ echo B >> bar2
+  $ hg shelve
+  shelved as default-01
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo C >> bar1
+  $ echo C >> bar2
+  $ hg ci -m 'add C to bars'
+  $ hg unshelve -i
+  unshelving change 'default-01'
+  rebasing shelved changes
+  merging bar1
+  merging bar2
+  warning: conflicts while merging bar1! (edit, then use 'hg resolve --mark')
+  warning: conflicts while merging bar2! (edit, then use 'hg resolve --mark')
+  unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
+  [1]
+
+  $ cat > bar1 <<EOF
+  > A
+  > B
+  > C
+  > EOF
+  $ cat > bar2 <<EOF
+  > A
+  > B
+  > C
+  > EOF
+  $ hg resolve -m bar1 bar2
+  (no more unresolved files)
+  continue: hg unshelve --continue
+  $ cat bar1
+  A
+  B
+  C
+  $ hg unshelve --continue -i <<EOF
+  > y
+  > y
+  > y
+  > y
+  > EOF
+  unshelving change 'default-01'
+  diff --git a/bar1 b/bar1
+  1 hunks, 1 lines changed
+  examine changes to 'bar1'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -1,2 +1,3 @@
+   A
+  +B
+   C
+  record change 1/2 to 'bar1'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  diff --git a/bar2 b/bar2
+  1 hunks, 1 lines changed
+  examine changes to 'bar2'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  @@ -1,2 +1,3 @@
+   A
+  +B
+   C
+  record change 2/2 to 'bar2'?
+  (enter ? for help) [Ynesfdaq?] y
+  
+  unshelve of 'default-01' complete