[PATCH 2 of 2] test-hook: adapt for Windows

Adrian Buehlmann adrian at cadifra.com
Fri Jun 15 15:43:26 CDT 2012


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1339789367 -7200
# Node ID 844ca94db2ab068ff39db865a5239f2a07ba5c4e
# Parent  4e11fccbab3fff780494aebe186445c735aec7f4
test-hook: adapt for Windows

diff --git a/tests/test-hook.t b/tests/test-hook.t
--- a/tests/test-hook.t
+++ b/tests/test-hook.t
@@ -1,18 +1,18 @@
-  $ "$TESTDIR/hghave" system-sh || exit 80
-
 commit hooks can see env vars
 
   $ hg init a
   $ cd a
-  $ echo "[hooks]" > .hg/hgrc
-  $ echo 'commit = unset HG_LOCAL HG_TAG; python "$TESTDIR"/printenv.py commit' >> .hg/hgrc
-  $ echo 'commit.b = unset HG_LOCAL HG_TAG; python "$TESTDIR"/printenv.py commit.b' >> .hg/hgrc
-  $ echo 'precommit = unset HG_LOCAL HG_NODE HG_TAG; python "$TESTDIR"/printenv.py precommit' >> .hg/hgrc
-  $ echo 'pretxncommit = unset HG_LOCAL HG_TAG; python "$TESTDIR"/printenv.py pretxncommit' >> .hg/hgrc
-  $ echo 'pretxncommit.tip = hg -q tip' >> .hg/hgrc
-  $ echo 'pre-identify = python "$TESTDIR"/printenv.py pre-identify 1' >> .hg/hgrc
-  $ echo 'pre-cat = python "$TESTDIR"/printenv.py pre-cat' >> .hg/hgrc
-  $ echo 'post-cat = python "$TESTDIR"/printenv.py post-cat' >> .hg/hgrc
+  $ cat > .hg/hgrc <<EOF
+  > [hooks]
+  > commit = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" commit"
+  > commit.b = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" commit.b"
+  > precommit = sh -c  "HG_LOCAL= HG_NODE= HG_TAG= python \"$TESTDIR/printenv.py\" precommit"
+  > pretxncommit = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" pretxncommit"
+  > pretxncommit.tip = hg -q tip
+  > pre-identify = python "$TESTDIR/printenv.py" pre-identify 1
+  > pre-cat = python "$TESTDIR/printenv.py" pre-cat
+  > post-cat = python "$TESTDIR/printenv.py" post-cat
+  > EOF
   $ echo a > a
   $ hg add a
   $ hg commit -m a
@@ -29,10 +29,12 @@
 
 changegroup hooks can see env vars
 
-  $ echo '[hooks]' > .hg/hgrc
-  $ echo 'prechangegroup = python "$TESTDIR"/printenv.py prechangegroup' >> .hg/hgrc
-  $ echo 'changegroup = python "$TESTDIR"/printenv.py changegroup' >> .hg/hgrc
-  $ echo 'incoming = python "$TESTDIR"/printenv.py incoming' >> .hg/hgrc
+  $ cat > .hg/hgrc <<EOF
+  > [hooks]
+  > prechangegroup = python "$TESTDIR/printenv.py" prechangegroup
+  > changegroup = python "$TESTDIR/printenv.py" changegroup
+  > incoming = python "$TESTDIR/printenv.py" incoming
+  > EOF
 
 pretxncommit and commit hooks can see both parents of merge
 
@@ -94,8 +96,10 @@
 tag hooks can see env vars
 
   $ cd ../a
-  $ echo 'pretag = python "$TESTDIR"/printenv.py pretag' >> .hg/hgrc
-  $ echo 'tag = unset HG_PARENT1 HG_PARENT2; python "$TESTDIR"/printenv.py tag' >> .hg/hgrc
+  $ cat >> .hg/hgrc <<EOF
+  > pretag = python "$TESTDIR/printenv.py" pretag
+  > tag = sh -c "HG_PARENT1= HG_PARENT2= python \"$TESTDIR/printenv.py\" tag"
+  > EOF
   $ hg tag -d '3 0' a
   pretag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a 
   precommit hook: HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 
@@ -110,7 +114,7 @@
 
 pretag hook can forbid tagging
 
-  $ echo 'pretag.forbid = python "$TESTDIR"/printenv.py pretag.forbid 1' >> .hg/hgrc
+  $ echo "pretag.forbid = python \"$TESTDIR/printenv.py\" pretag.forbid 1" >> .hg/hgrc
   $ hg tag -d '4 0' fa
   pretag hook: HG_LOCAL=0 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fa 
   pretag.forbid hook: HG_LOCAL=0 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fa 
@@ -125,8 +129,8 @@
 pretxncommit hook can see changeset, can roll back txn, changeset no
 more there after
 
-  $ echo 'pretxncommit.forbid0 = hg tip -q' >> .hg/hgrc
-  $ echo 'pretxncommit.forbid1 = python "$TESTDIR"/printenv.py pretxncommit.forbid 1' >> .hg/hgrc
+  $ echo "pretxncommit.forbid0 = hg tip -q" >> .hg/hgrc
+  $ echo "pretxncommit.forbid1 = python \"$TESTDIR/printenv.py\" pretxncommit.forbid 1" >> .hg/hgrc
   $ echo z > z
   $ hg add z
   $ hg -q tip
@@ -146,7 +150,7 @@
 
 precommit hook can prevent commit
 
-  $ echo 'precommit.forbid = python "$TESTDIR"/printenv.py precommit.forbid 1' >> .hg/hgrc
+  $ echo "precommit.forbid = python \"$TESTDIR/printenv.py\" precommit.forbid 1" >> .hg/hgrc
   $ hg commit -m 'fail' -d '4 0'
   precommit hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 
   precommit.forbid hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 
@@ -157,14 +161,14 @@
 
 preupdate hook can prevent update
 
-  $ echo 'preupdate = python "$TESTDIR"/printenv.py preupdate' >> .hg/hgrc
+  $ echo "preupdate = python \"$TESTDIR/printenv.py\" preupdate" >> .hg/hgrc
   $ hg update 1
   preupdate hook: HG_PARENT1=ab228980c14d 
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
 
 update hook
 
-  $ echo 'update = python "$TESTDIR"/printenv.py update' >> .hg/hgrc
+  $ echo "update = python \"$TESTDIR/printenv.py\" update" >> .hg/hgrc
   $ hg update
   preupdate hook: HG_PARENT1=539e4b31b6dc 
   update hook: HG_ERROR=0 HG_PARENT1=539e4b31b6dc 
@@ -172,7 +176,7 @@
 
 pushkey hook
 
-  $ echo 'pushkey = python "$TESTDIR"/printenv.py pushkey' >> .hg/hgrc
+  $ echo "pushkey = python \"$TESTDIR/printenv.py\" pushkey" >> .hg/hgrc
   $ cd ../b
   $ hg bookmark -r null foo
   $ hg push -B foo ../a
@@ -186,7 +190,7 @@
 
 listkeys hook
 
-  $ echo 'listkeys = python "$TESTDIR"/printenv.py listkeys' >> .hg/hgrc
+  $ echo "listkeys = python \"$TESTDIR/printenv.py\" listkeys" >> .hg/hgrc
   $ hg bookmark -r null bar
   $ cd ../b
   $ hg pull -B bar ../a
@@ -201,7 +205,7 @@
 
 test that prepushkey can prevent incoming keys
 
-  $ echo 'prepushkey = python "$TESTDIR"/printenv.py prepushkey.forbid 1' >> .hg/hgrc
+  $ echo "prepushkey = python \"$TESTDIR/printenv.py\" prepushkey.forbid 1" >> .hg/hgrc
   $ cd ../b
   $ hg bookmark -r null baz
   $ hg push -B baz ../a
@@ -219,7 +223,7 @@
 
 test that prelistkeys can prevent listing keys
 
-  $ echo 'prelistkeys = python "$TESTDIR"/printenv.py prelistkeys.forbid 1' >> .hg/hgrc
+  $ echo "prelistkeys = python \"$TESTDIR/printenv.py\" prelistkeys.forbid 1" >> .hg/hgrc
   $ hg bookmark -r null quux
   $ cd ../b
   $ hg pull -B quux ../a
@@ -234,8 +238,10 @@
   $ cd ../b
   $ hg -q tip
   3:07f3376c1e65
-  $ echo '[hooks]' > .hg/hgrc
-  $ echo 'prechangegroup.forbid = python "$TESTDIR"/printenv.py prechangegroup.forbid 1' >> .hg/hgrc
+  $ cat > .hg/hgrc <<EOF
+  > [hooks]
+  > prechangegroup.forbid = python "$TESTDIR/printenv.py" prechangegroup.forbid 1
+  > EOF
   $ hg pull ../a
   pulling from ../a
   searching for changes
@@ -246,9 +252,11 @@
 pretxnchangegroup hook can see incoming changes, can roll back txn,
 incoming changes no longer there after
 
-  $ echo '[hooks]' > .hg/hgrc
-  $ echo 'pretxnchangegroup.forbid0 = hg tip -q' >> .hg/hgrc
-  $ echo 'pretxnchangegroup.forbid1 = python "$TESTDIR"/printenv.py pretxnchangegroup.forbid 1' >> .hg/hgrc
+  $ cat > .hg/hgrc <<EOF
+  > [hooks]
+  > pretxnchangegroup.forbid0 = hg tip -q
+  > pretxnchangegroup.forbid1 = python "$TESTDIR/printenv.py" pretxnchangegroup.forbid 1
+  > EOF
   $ hg pull ../a
   pulling from ../a
   searching for changes
@@ -268,9 +276,11 @@
 outgoing hooks can see env vars
 
   $ rm .hg/hgrc
-  $ echo '[hooks]' > ../a/.hg/hgrc
-  $ echo 'preoutgoing = python "$TESTDIR"/printenv.py preoutgoing' >> ../a/.hg/hgrc
-  $ echo 'outgoing = python "$TESTDIR"/printenv.py outgoing' >> ../a/.hg/hgrc
+  $ cat > ../a/.hg/hgrc <<EOF
+  > [hooks]
+  > preoutgoing = python "$TESTDIR/printenv.py" preoutgoing
+  > outgoing = python "$TESTDIR/printenv.py" outgoing
+  > EOF
   $ hg pull ../a
   pulling from ../a
   searching for changes
@@ -287,7 +297,7 @@
 
 preoutgoing hook can prevent outgoing changes
 
-  $ echo 'preoutgoing.forbid = python "$TESTDIR"/printenv.py preoutgoing.forbid 1' >> ../a/.hg/hgrc
+  $ echo "preoutgoing.forbid = python \"$TESTDIR/printenv.py\" preoutgoing.forbid 1" >> ../a/.hg/hgrc
   $ hg pull ../a
   pulling from ../a
   searching for changes
@@ -299,9 +309,11 @@
 outgoing hooks work for local clones
 
   $ cd ..
-  $ echo '[hooks]' > a/.hg/hgrc
-  $ echo 'preoutgoing = python "$TESTDIR"/printenv.py preoutgoing' >> a/.hg/hgrc
-  $ echo 'outgoing = python "$TESTDIR"/printenv.py outgoing' >> a/.hg/hgrc
+  $ cat > a/.hg/hgrc <<EOF
+  > [hooks]
+  > preoutgoing = python "$TESTDIR/printenv.py" preoutgoing
+  > outgoing = python "$TESTDIR/printenv.py" outgoing
+  > EOF
   $ hg clone a c
   preoutgoing hook: HG_SOURCE=clone 
   outgoing hook: HG_NODE=0000000000000000000000000000000000000000 HG_SOURCE=clone 
@@ -311,13 +323,14 @@
 
 preoutgoing hook can prevent outgoing changes for local clones
 
-  $ echo 'preoutgoing.forbid = python "$TESTDIR"/printenv.py preoutgoing.forbid 1' >> a/.hg/hgrc
+  $ echo "preoutgoing.forbid = python \"$TESTDIR/printenv.py\" preoutgoing.forbid 1" >> a/.hg/hgrc
   $ hg clone a zzz
   preoutgoing hook: HG_SOURCE=clone 
   preoutgoing.forbid hook: HG_SOURCE=clone 
   abort: preoutgoing.forbid hook exited with status 1
   [255]
-  $ cd b
+
+  $ cd "$TESTTMP/b"
 
   $ cat > hooktests.py <<EOF
   > from mercurial import util
@@ -364,7 +377,11 @@
 
 test python hooks
 
-  $ PYTHONPATH="`pwd`:$PYTHONPATH"
+#if windows
+  $ PYTHONPATH="$TESTTMP/b;$PYTHONPATH"
+#else
+  $ PYTHONPATH="$TESTTMP/b:$PYTHONPATH"
+#endif
   $ export PYTHONPATH
 
   $ echo '[hooks]' > ../a/.hg/hgrc
@@ -597,7 +614,7 @@
   $ echo aa >> from/a
   $ hg --cwd from ci -mb
   $ hg --cwd from push
-  pushing to $TESTTMP/to
+  pushing to $TESTTMP/to (glob)
   searching for changes
   adding changesets
   adding manifests


More information about the Mercurial-devel mailing list