tests/test-states-exact.t
changeset 96 d5170cc7881c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-states-exact.t	Sun Sep 25 12:43:00 2011 +0200
@@ -0,0 +1,282 @@
+  $ cat >> $HGRCPATH <<EOF
+  > [web]
+  > push_ssl = false
+  > allow_push = *
+  > [extensions]
+  > EOF
+  $ echo "states=$(echo $(dirname $TESTDIR))/hgext/states.py" >> $HGRCPATH
+
+  $ mkcommit() {
+  >    echo "$1" > "$1"
+  >    hg add "$1"
+  >    hg ci -m "$1"
+  > }
+  $ alias hglog='hg log --template "{desc|short} {rev} {state}\n"'
+
+  $ hg init alpha
+  $ cd alpha
+  $ hg states ready draft
+  $ mkcommit a
+  $ mkcommit b
+  $ mkcommit c
+  $ mkcommit d
+  $ mkcommit e
+  $ mkcommit f
+
+|0 - 1 - 2 - 3 - 4 - 5
+
+  $ hg ready 3
+  $ hg published 1
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 published
+  a 0 published
+
+very simple case
+  $ hg ready --exact 1
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 published
+
+required state not in statesheads
+  $ hg draft --exact 3
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 draft
+  c 2 ready
+  b 1 ready
+  a 0 published
+
+remove all other states
+  $ hg draft --exact 0
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 draft
+  c 2 draft
+  b 1 draft
+  a 0 draft
+
+draft was not there before
+  $ hg ready 5
+  $ hg draft --exact 4
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 ready
+
+already in the required state
+  $ hg draft --exact 5
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 ready
+
+backward and foreward
+  $ hg published 1
+  $ hg ready --exact 1:4
+  $ hglog
+  f 5 draft
+  e 4 ready
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 published
+
+with complex revset
+  $ hg draft --exact 'readyheads()'
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 published
+  $ hg ready --exact 'publishedheads()'
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 ready
+
+Work with branches now
+  $ hg up 1
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ mkcommit g
+  created new head
+  $ mkcommit h
+  $ hg up 3
+  2 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ mkcommit i
+  created new head
+  $ mkcommit j
+
+|              / - - - - 6 - 7
+|0 - 1 - 2 - 3 - 4 - 5
+|      \ - - - - - - - - - - - - 8 - 9
+
+Set the new branches as ready
+  $ hg ready 9 7
+  $ hglog
+  j 9 ready
+  i 8 ready
+  h 7 ready
+  g 6 ready
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 ready
+
+with composite revset
+  $ hg draft --exact 5:5 7:8
+  $ hglog
+  j 9 draft
+  i 8 draft
+  h 7 draft
+  g 6 ready
+  f 5 draft
+  e 4 draft
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 ready
+
+cross braches
+  $ hg published 5 7 9
+  $ hg draft --exact 4:6
+  $ hglog
+  j 9 published
+  i 8 published
+  h 7 draft
+  g 6 draft
+  f 5 draft
+  e 4 draft
+  d 3 published
+  c 2 published
+  b 1 published
+  a 0 published
+
+Ok more complicated stuffs
+  $ hg up 7
+  2 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ mkcommit k
+  $ hg published 5 9 10
+
+|              / - - - - 6 - 7 - - - - - 10
+|0 - 1 - 2 - 3 - 4 - 5
+|      \ - - - - - - - - - - - - 8 - 9
+
+cross branches and propagation on the same branche
+  $ hg draft --exact 5:8
+  $ hglog
+  k 10 draft
+  j 9 draft
+  i 8 draft
+  h 7 draft
+  g 6 draft
+  f 5 draft
+  e 4 published
+  d 3 published
+  c 2 published
+  b 1 published
+  a 0 published
+
+
+cross branches and propagation on multiple branches
+  $ hg published 10
+  $ hg ready --exact 3 6:8
+  $ hglog
+  k 10 ready
+  j 9 draft
+  i 8 ready
+  h 7 ready
+  g 6 ready
+  f 5 draft
+  e 4 ready
+  d 3 ready
+  c 2 published
+  b 1 published
+  a 0 published
+
+propagate ready on multiple branches taht contains draft states
+  $ hg ready --exact 1
+  $ hglog
+  k 10 ready
+  j 9 draft
+  i 8 ready
+  h 7 ready
+  g 6 ready
+  f 5 draft
+  e 4 ready
+  d 3 ready
+  c 2 ready
+  b 1 ready
+  a 0 published
+
+brute propagation
+  $ hg draft --exact 0
+  $ hglog
+  k 10 draft
+  j 9 draft
+  i 8 draft
+  h 7 draft
+  g 6 draft
+  f 5 draft
+  e 4 draft
+  d 3 draft
+  c 2 draft
+  b 1 draft
+  a 0 draft
+
+forget non activated state
+  $ hg init beta
+  $ cd beta
+  $ hg states draft
+  $ mkcommit a
+  $ mkcommit b
+  $ mkcommit c
+  $ mkcommit d
+  $ mkcommit e
+  $ mkcommit f
+  $ hg published 5
+  $ hg draft --exact 3
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 draft
+  c 2 published
+  b 1 published
+  a 0 published
+  $ hg states
+  published
+  draft
+  $ hg ready 3
+  abort: state ready is not activated
+  (try ``hg states ready`` before)
+  [255]
+  $ hglog
+  f 5 draft
+  e 4 draft
+  d 3 draft
+  c 2 published
+  b 1 published
+  a 0 published
+