changeset 26:c9da15600775

add a states command The command list enabled state and allow to enable, disable state. test have been update to use it.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Fri, 01 Jul 2011 17:20:45 +0200
parents b372166d460d
children 31906bc290ff
files states.py tests/test-draft.t tests/test-ready.t tests/test-states.t
diffstat 4 files changed, 62 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/states.py	Fri Jul 01 17:03:49 2011 +0200
+++ b/states.py	Fri Jul 01 17:20:45 2011 +0200
@@ -119,7 +119,30 @@
 # New commands
 #############################
 
-cmdtable = {}
+
+def cmdstates(ui, repo, *states, **opt):
+    """show enabled states"""
+    if not states:
+        for st in sorted(repo._enabledstates):
+            ui.write('%s\n' % st)
+    else:
+        off = opt.get('off', False)
+        for state_name in states:
+            for st in STATES:
+                if st.name == state_name:
+                    break
+            else:
+                ui.write_err(_('no state named %s\n') % state_name)
+                return 1
+            if off and st in repo._enabledstates:
+                repo._enabledstates.remove(st)
+            else:
+                repo._enabledstates.add(st)
+        repo._writeenabledstates()
+    return 0
+
+cmdtable = {'states': (cmdstates, [ ('', 'off', False, _('desactivate the state') )], '<state>')}
+#cmdtable = {'states': (cmdstates, [], '<state>')}
 
 def makecmd(state):
     def cmdmoveheads(ui, repo, *changesets):
--- a/tests/test-draft.t	Fri Jul 01 17:03:49 2011 +0200
+++ b/tests/test-draft.t	Fri Jul 01 17:20:45 2011 +0200
@@ -42,7 +42,7 @@
   0:5caa672bac26: published
 
 turn draft on (repo side)
-  $ echo draft > .hg/states/Enabled
+  $ hg states draft
   $ hg log --template='{rev}:{node|short}: {state}\n'
   3:73585b17392a: draft
   2:3c8695235a32: draft
@@ -74,7 +74,7 @@
   added 2 changesets with 2 changes to 1 files
 
 turn draft off again (repo side)
-  $ sed -i 's/draft//' .hg/states/Enabled
+  $ hg states --off draft
   $ hg log --template='{rev}:{node|short}: {state}\n'
   3:73585b17392a: published
   2:3c8695235a32: published
@@ -87,7 +87,7 @@
   3:73585b17392a
 
 turn draft on again (repo side)
-  $ echo draft > .hg/states/Enabled
+  $ hg states draft
 
 test incoming and pull
 
@@ -163,7 +163,7 @@
 turn draft off again (repo side)
   $ cd ..
   $ "$TESTDIR/killdaemons.py"
-  $ sed -i 's/draft//' ./local/.hg/states/Enabled
+  $ hg -R local states --off draft
   $ hg -R local serve -p $HGPORT -d --pid-file=local.pid
   $ cat local.pid >> "$DAEMON_PIDS"
   $ cd fromhttp2
@@ -185,7 +185,7 @@
   $ "$TESTDIR/killdaemons.py"
 
 turn draft on again (repo side)
-  $ echo draft > ./local/.hg/states/Enabled
+  $ hg -R local states draft
   $ hg init httpto
   $ hg -R httpto serve -p $HGPORT -d --pid-file=remote.pid
   $ cat remote.pid >> "$DAEMON_PIDS"
--- a/tests/test-ready.t	Fri Jul 01 17:03:49 2011 +0200
+++ b/tests/test-ready.t	Fri Jul 01 17:20:45 2011 +0200
@@ -14,8 +14,7 @@
 
   $ hg init alpha
   $ cd alpha
-  $ mkdir .hg/states
-  $ echo ready > .hg/states/Enabled
+  $ hg states ready
   $ mkcommit z
   $ mkcommit a
   $ mkcommit b
@@ -69,8 +68,7 @@
   $ cd ..
   $ hg init beta
   $ cd beta
-  $ mkdir .hg/states
-  $ echo ready > .hg/states/Enabled
+  $ hg states ready
   $ hg pull ../alpha --update
   pulling from ../alpha
   requesting all changes
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-states.t	Fri Jul 01 17:20:45 2011 +0200
@@ -0,0 +1,31 @@
+
+  $ cat >> $HGRCPATH <<EOF
+  > [web]
+  > push_ssl = false
+  > allow_push = *
+  > [extensions]
+  > EOF
+  $ echo "states=$(echo $(dirname $TESTDIR))/states.py" >> $HGRCPATH
+
+  $ hg init local
+  $ hg init other
+  $ cd local
+  $ hg states --traceback -v
+  $ hg states draft
+  $ hg states
+  draft
+  $ hg states ready
+  $ hg states
+  ready
+  draft
+  $ hg states --off draft
+  $ hg states
+  ready
+  $ hg states babar
+  no state named babar
+  [1]
+  $ echo 'babar' >> .hg/states/Enabled
+  $ hg states
+  ready
+  $ hg -R ../other states
+