test-ssh: avoid a shell script
authorAlexis S. L. Carvalho <alexis@cecm.usp.br>
Tue, 27 Mar 2007 01:41:22 -0300
changeset 4298 58517f6eb1ad
parent 4297 27590c19ad30
child 4299 6b1e1b9da853
test-ssh: avoid a shell script
tests/test-ssh
tests/test-ssh.out
--- a/tests/test-ssh	Tue Mar 27 01:41:21 2007 -0300
+++ b/tests/test-ssh	Tue Mar 27 01:41:22 2007 -0300
@@ -4,27 +4,28 @@
 
 # This test tries to exercise the ssh functionality with a dummy script
 
-cat <<'EOF' > dummyssh
-#!/bin/sh
-# this attempts to deal with relative pathnames
-cd `dirname $0`
+cat <<EOF > dummyssh
+import sys
+import os
 
-# check for proper args
-if [ $1 != "user@dummy" ] ; then
-	exit -1
-fi
+os.chdir(os.path.dirname(sys.argv[0]))
+if sys.argv[1] != "user@dummy":
+    sys.exit(-1)
+
+if not os.path.exists("dummyssh"):
+    sys.exit(-1)
 
-# check that we're in the right directory
-if [ ! -x dummyssh ] ; then
-	exit -1
-fi
+os.environ["SSH_CLIENT"] = "127.0.0.1 1 2"
 
-SSH_CLIENT='127.0.0.1 1 2'
-export SSH_CLIENT
-echo Got arguments 1:$1 2:$2 3:$3 4:$4 5:$5 >> dummylog
-$2
+log = open("dummylog", "ab")
+log.write("Got arguments")
+for i, arg in enumerate(sys.argv[1:]):
+    log.write(" %d:%s" % (i+1, arg))
+log.write("\n")
+log.close()
+r = os.system(sys.argv[2])
+sys.exit(bool(r))
 EOF
-chmod +x dummyssh
 
 echo "# creating 'remote'"
 hg init remote
@@ -40,17 +41,17 @@
 cd ..
 
 echo "# repo not found error"
-hg clone -e ./dummyssh ssh://user@dummy/nonexistent local
+hg clone -e "python ./dummyssh" ssh://user@dummy/nonexistent local
 
 echo "# clone remote via stream"
-hg clone -e ./dummyssh --uncompressed ssh://user@dummy/remote local-stream 2>&1 | \
+hg clone -e "python ./dummyssh" --uncompressed ssh://user@dummy/remote local-stream 2>&1 | \
   sed -e 's/[0-9][0-9.]*/XXX/g' -e 's/[KM]\(B\/sec\)/X\1/'
 cd local-stream
 hg verify
 cd ..
 
 echo "# clone remote via pull"
-hg clone -e ./dummyssh ssh://user@dummy/remote local
+hg clone -e "python ./dummyssh" ssh://user@dummy/remote local
 
 echo "# verify"
 cd local
@@ -61,7 +62,7 @@
 
 echo "# empty default pull"
 hg paths
-hg pull -e ../dummyssh
+hg pull -e "python ../dummyssh"
 
 echo "# local change"
 echo bleah > foo
@@ -70,13 +71,13 @@
 echo "# updating rc"
 echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc
 echo "[ui]" >> .hg/hgrc
-echo "ssh = ../dummyssh" >> .hg/hgrc
+echo "ssh = python ../dummyssh" >> .hg/hgrc
 
 echo "# find outgoing"
 hg out ssh://user@dummy/remote
 
 echo "# find incoming on the remote side"
-hg incoming -R ../remote -e ../dummyssh ssh://user@dummy/local
+hg incoming -R ../remote -e "python ../dummyssh" ssh://user@dummy/local
 
 echo "# push"
 hg push
--- a/tests/test-ssh.out	Tue Mar 27 01:41:21 2007 -0300
+++ b/tests/test-ssh.out	Tue Mar 27 01:41:22 2007 -0300
@@ -78,13 +78,13 @@
 remote: adding manifests
 remote: adding file changes
 remote: added 1 changesets with 1 changes to 1 files
-Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R local serve --stdio 3: 4: 5:
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
+Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+Got arguments 1:user@dummy 2:hg -R local serve --stdio
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
 changegroup-in-remote hook: HG_NODE=572896fe480d7581849806ee402175c49cb20037 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1 
-Got arguments 1:user@dummy 2:hg -R remote serve --stdio 3: 4: 5:
+Got arguments 1:user@dummy 2:hg -R remote serve --stdio
 changegroup-in-remote hook: HG_NODE=ac7448082955a0b2ff5cb4512c1e061c779bbc79 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1