tests/test-draft.t
author Alain Leufroy <alain.leufroy@logilab.fr>
Sun, 25 Sep 2011 12:46:45 +0200
changeset 98 8ad5c760c708
parent 97 e672cb1263cb
permissions -rw-r--r--
[states] make enabling state saftier * Fix the lower state heads while enabling a state. * Add a --clever opiton that do not fix the lower heads (as earlier) * Add test for enable/disable state

  $ cat >> $HGRCPATH <<EOF
  > [web]
  > push_ssl = false
  > allow_push = *
  > [extensions]
  > EOF
  $ echo "states=$(echo $(dirname $TESTDIR))/hgext/states.py" >> $HGRCPATH

  $ hg init local
  $ hg init remote1
  $ hg init remote2
  $ cd local
  $ echo "celestine" > babar
  $ hg add babar
  $ hg ci -m "add babar"
  $ echo "la veille dame" > babar
  $ hg ci -m "add dame"
  $ hg log --template='{rev}:{node|short}: {state}\n'
  1:710fe444b3b0: published
  0:5caa672bac26: published
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  $ hg push ../remote1
  pushing to ../remote1
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  $ echo "tree" >> savanna
  $ hg add savanna
  $ hg ci -m "terrain"
  $ echo "flore" >> babar
  $ hg ci -m "children"
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: published
  2:3c8695235a32: published
  1:710fe444b3b0: published
  0:5caa672bac26: published

turn draft on (repo side)
  $ hg states --clever draft
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: draft
  2:3c8695235a32: draft
  1:710fe444b3b0: published
  0:5caa672bac26: published

test outgoing and push
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  no changes found
  [1]
  $ hg push --traceback  ../remote1
  pushing to ../remote1
  searching for changes
  no changes found

  $ hg out  ../remote2 --template='{rev}:{node|short}\n'
  comparing with ../remote2
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  $ hg push  ../remote2
  pushing to ../remote2
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files

turn draft off again (repo side)
  $ hg states --off draft
  abort: could not disable non empty state draft
  (You may want to use `hg published 'draftheads()'`)
  [255]
  $ hg published tip
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: published
  2:3c8695235a32: published
  1:710fe444b3b0: published
  0:5caa672bac26: published
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  2:3c8695235a32
  3:73585b17392a

turn draft on again (repo side)
  $ hg states draft
  $ hg draft --exact 2

test incoming and pull

  $ hg init ../other1
  $ cd ../other1
  $ hg incoming ../local --template='{rev}:{node|short}\n'
  comparing with ../local
  0:5caa672bac26
  1:710fe444b3b0
  $ hg pull ../local
  pulling from ../local
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26
  $ cd ..
  $ hg clone local other2
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg -R other2 log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26

test on http

  $ hg -R local serve -p $HGPORT -d --pid-file=local.pid
  $ cat local.pid >> "$DAEMON_PIDS"
  $ hg clone http://localhost:$HGPORT/ fromhttp
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg -R fromhttp log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26

  $ hg init fromhttp2
  $ cd fromhttp2
  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  0:5caa672bac26
  1:710fe444b3b0
  $ hg pull http://localhost:$HGPORT/
  pulling from http://localhost:$HGPORT/
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26
  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  no changes found
  [1]

turn draft off again (repo side)
  $ cd ..
  $ "$TESTDIR/killdaemons.py"
  $ hg -R local states --off draft
  abort: could not disable non empty state draft
  (You may want to use `hg published 'draftheads()'`)
  [255]
  $ hg -R local published tip
  $ hg -R local states --off draft
  $ hg -R local serve -p $HGPORT -d --pid-file=local.pid
  $ cat local.pid >> "$DAEMON_PIDS"
  $ cd fromhttp2

  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  2:3c8695235a32
  3:73585b17392a
  $ hg pull http://localhost:$HGPORT/
  pulling from http://localhost:$HGPORT/
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  (run 'hg update' to get a working copy)
  $ cd ..
  $ "$TESTDIR/killdaemons.py"

turn draft on again (repo side)
  $ hg -R local states draft
  $ hg init httpto
  $ hg -R httpto serve -p $HGPORT -d --pid-file=remote.pid
  $ cat remote.pid >> "$DAEMON_PIDS"
  $ cd local
  $ hg out http://localhost:$HGPORT/  --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  2:3c8695235a32
  3:73585b17392a
  $ hg push http://localhost:$HGPORT/
  pushing to http://localhost:$HGPORT/
  searching for changes
  remote: adding changesets
  remote: adding manifests
  remote: adding file changes
  remote: added 4 changesets with 4 changes to 2 files
  $ "$TESTDIR/killdaemons.py"