tests/test-draft.t
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Fri, 01 Jul 2011 16:58:40 +0200
changeset 24 20ac7fa3fd29
parent 21 aa0870d093b8
child 26 c9da15600775
permissions -rw-r--r--
Move state activitation in a dedicated file repo-side The main issue with having state information is hgrc is that hgrc can be ignored for trust reason.

  $ cat >> $HGRCPATH <<EOF
  > [web]
  > push_ssl = false
  > allow_push = *
  > [extensions]
  > EOF
  $ echo "states=$(echo $(dirname $TESTDIR))/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)
  $ echo draft > .hg/states/Enabled
  $ 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)
  $ sed -i 's/draft//' .hg/states/Enabled
  $ 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)
  $ echo draft > .hg/states/Enabled

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"
  $ sed -i 's/draft//' ./local/.hg/states/Enabled
  $ 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)
  $ echo draft > ./local/.hg/states/Enabled
  $ 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
  $ 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 2 changesets with 2 changes to 1 files
  $ "$TESTDIR/killdaemons.py"