# HG changeset patch # User Matt Mackall # Date 1285526492 18000 # Node ID 858fe1e74785d31e182b2f8e8c4aa8a1ee0a24df # Parent f8dc83689f199e32b73bf0a18e5a1c9e1acb69eb tests: unify test-ssh diff -r f8dc83689f19 -r 858fe1e74785 tests/test-ssh --- a/tests/test-ssh Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -#!/bin/sh - -cp "$TESTDIR"/printenv.py . - -# This test tries to exercise the ssh functionality with a dummy script - -cat < dummyssh -import sys -import os - -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) - -os.environ["SSH_CLIENT"] = "127.0.0.1 1 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 - -cat < badhook -import sys -sys.stdout.write("KABOOM\n") -EOF - -echo "# creating 'remote'" -hg init remote -cd remote -echo this > foo -echo this > fooO -hg ci -A -m "init" foo fooO -echo '[server]' > .hg/hgrc -echo 'uncompressed = True' >> .hg/hgrc -echo '[hooks]' >> .hg/hgrc -echo 'changegroup = python ../printenv.py changegroup-in-remote 0 ../dummylog' >> .hg/hgrc - -cd .. - -echo "# repo not found error" -hg clone -e "python ./dummyssh" ssh://user@dummy/nonexistent local - -echo "# non-existent absolute path" -hg clone -e "python ./dummyssh" ssh://user@dummy//$HGTMP/nonexistent local - -echo "# clone remote via stream" -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 "python ./dummyssh" ssh://user@dummy/remote local - -echo "# verify" -cd local -hg verify - -echo '[hooks]' >> .hg/hgrc -echo 'changegroup = python ../printenv.py changegroup-in-local 0 ../dummylog' >> .hg/hgrc - -echo "# empty default pull" -hg paths -hg pull -e "python ../dummyssh" - -echo "# local change" -echo bleah > foo -hg ci -m "add" - -echo "# updating rc" -echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc -echo "[ui]" >> .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 "python ../dummyssh" ssh://user@dummy/local - -echo "# push" -hg push - -cd ../remote - -echo "# check remote tip" -hg tip -hg verify -hg cat -r tip foo - -echo z > z -hg ci -A -m z z -# a bad, evil hook that prints to stdout -echo 'changegroup.stdout = python ../badhook' >> .hg/hgrc - -cd ../local -echo r > r -hg ci -A -m z r - -echo "# push should succeed even though it has an unexpected response" -hg push -hg -R ../remote heads - -cd .. -cat dummylog | sed -e "s,$HGTMP,HGTMP," diff -r f8dc83689f19 -r 858fe1e74785 tests/test-ssh.out --- a/tests/test-ssh.out Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -# creating 'remote' -# repo not found error -remote: abort: There is no Mercurial repository here (.hg not found)! -abort: no suitable response from remote hg! -# non-existent absolute path -remote: abort: There is no Mercurial repository here (.hg not found)! -abort: no suitable response from remote hg! -# clone remote via stream -streaming all changes -XXX files to transfer, XXX bytes of data -transferred XXX bytes in XXX seconds (XXX XB/sec) -updating to branch default -XXX files updated, XXX files merged, XXX files removed, XXX files unresolved -checking changesets -checking manifests -crosschecking files in changesets and manifests -checking files -2 files, 1 changesets, 2 total revisions -# clone remote via pull -requesting all changes -adding changesets -adding manifests -adding file changes -added 1 changesets with 2 changes to 2 files -updating to branch default -2 files updated, 0 files merged, 0 files removed, 0 files unresolved -# verify -checking changesets -checking manifests -crosschecking files in changesets and manifests -checking files -2 files, 1 changesets, 2 total revisions -# empty default pull -default = ssh://user@dummy/remote -pulling from ssh://user@dummy/remote -searching for changes -no changes found -# local change -# updating rc -# find outgoing -comparing with ssh://user@dummy/remote -searching for changes -changeset: 1:a28a9d1a809c -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -summary: add - -# find incoming on the remote side -comparing with ssh://user@dummy/local -searching for changes -changeset: 1:a28a9d1a809c -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -summary: add - -# push -pushing to ssh://user@dummy/remote -searching for changes -remote: adding changesets -remote: adding manifests -remote: adding file changes -remote: added 1 changesets with 1 changes to 1 files -# check remote tip -changeset: 1:a28a9d1a809c -tag: tip -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -summary: add - -checking changesets -checking manifests -crosschecking files in changesets and manifests -checking files -2 files, 2 changesets, 3 total revisions -bleah -created new head -# push should succeed even though it has an unexpected response -pushing to ssh://user@dummy/remote -searching for changes -note: unsynced remote changes! -remote: adding changesets -remote: adding manifests -remote: adding file changes -remote: added 1 changesets with 1 changes to 1 files -remote: KABOOM -changeset: 3:1383141674ec -tag: tip -parent: 1:a28a9d1a809c -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -summary: z - -changeset: 2:6c0482d977a3 -parent: 0:1160648e36ce -user: test -date: Thu Jan 01 00:00:00 1970 +0000 -summary: z - -Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio -Got arguments 1:user@dummy 2:hg -R /HGTMP/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=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1 -Got arguments 1:user@dummy 2:hg -R remote serve --stdio -changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1 diff -r f8dc83689f19 -r 858fe1e74785 tests/test-ssh.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-ssh.t Sun Sep 26 13:41:32 2010 -0500 @@ -0,0 +1,217 @@ + + $ cp "$TESTDIR"/printenv.py . + +This test tries to exercise the ssh functionality with a dummy script + + $ cat < dummyssh + > import sys + > import os + > 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) + > os.environ["SSH_CLIENT"] = "127.0.0.1 1 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 + $ cat < badhook + > import sys + > sys.stdout.write("KABOOM\n") + > EOF + +creating 'remote' + + $ hg init remote + $ cd remote + $ echo this > foo + $ echo this > fooO + $ hg ci -A -m "init" foo fooO + $ echo '[server]' > .hg/hgrc + $ echo 'uncompressed = True' >> .hg/hgrc + $ echo '[hooks]' >> .hg/hgrc + $ echo 'changegroup = python ../printenv.py changegroup-in-remote 0 ../dummylog' >> .hg/hgrc + $ cd .. + +repo not found error + + $ hg clone -e "python ./dummyssh" ssh://user@dummy/nonexistent local + remote: abort: There is no Mercurial repository here (.hg not found)! + abort: no suitable response from remote hg! + [255] + +non-existent absolute path + + $ hg clone -e "python ./dummyssh" ssh://user@dummy//$HGTMP/nonexistent local + remote: abort: There is no Mercurial repository here (.hg not found)! + abort: no suitable response from remote hg! + [255] + +clone remote via stream + + $ 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/' + streaming all changes + XXX files to transfer, XXX bytes of data + transferred XXX bytes in XXX seconds (XXX XB/sec) + updating to branch default + XXX files updated, XXX files merged, XXX files removed, XXX files unresolved + $ cd local-stream + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 2 files, 1 changesets, 2 total revisions + $ cd .. + +clone remote via pull + + $ hg clone -e "python ./dummyssh" ssh://user@dummy/remote local + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 2 changes to 2 files + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + +verify + + $ cd local + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 2 files, 1 changesets, 2 total revisions + $ echo '[hooks]' >> .hg/hgrc + $ echo 'changegroup = python ../printenv.py changegroup-in-local 0 ../dummylog' >> .hg/hgrc + +empty default pull + + $ hg paths + default = ssh://user@dummy/remote + $ hg pull -e "python ../dummyssh" + pulling from ssh://user@dummy/remote + searching for changes + no changes found + +local change + + $ echo bleah > foo + $ hg ci -m "add" + +updating rc + + $ echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc + $ echo "[ui]" >> .hg/hgrc + $ echo "ssh = python ../dummyssh" >> .hg/hgrc + +find outgoing + + $ hg out ssh://user@dummy/remote + comparing with ssh://user@dummy/remote + searching for changes + changeset: 1:a28a9d1a809c + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: add + + +find incoming on the remote side + + $ hg incoming -R ../remote -e "python ../dummyssh" ssh://user@dummy/local + comparing with ssh://user@dummy/local + searching for changes + changeset: 1:a28a9d1a809c + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: add + + +push + + $ hg push + pushing to ssh://user@dummy/remote + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + $ cd ../remote + +check remote tip + + $ hg tip + changeset: 1:a28a9d1a809c + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: add + + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 2 files, 2 changesets, 3 total revisions + $ hg cat -r tip foo + bleah + $ echo z > z + $ hg ci -A -m z z + created new head + +a bad, evil hook that prints to stdout + + $ echo 'changegroup.stdout = python ../badhook' >> .hg/hgrc + $ cd ../local + $ echo r > r + $ hg ci -A -m z r + +push should succeed even though it has an unexpected response + + $ hg push + pushing to ssh://user@dummy/remote + searching for changes + note: unsynced remote changes! + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: KABOOM + $ hg -R ../remote heads + changeset: 3:1383141674ec + tag: tip + parent: 1:a28a9d1a809c + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: z + + changeset: 2:6c0482d977a3 + parent: 0:1160648e36ce + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: z + + $ cd .. + $ cat dummylog + Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio + Got arguments 1:user@dummy 2:hg -R */nonexistent serve --stdio (glob) + 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=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1 + Got arguments 1:user@dummy 2:hg -R remote serve --stdio + changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1