summaryrefslogtreecommitdiff
path: root/tests/test-push-cgi.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-push-cgi.t')
-rw-r--r--tests/test-push-cgi.t92
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/test-push-cgi.t b/tests/test-push-cgi.t
new file mode 100644
index 0000000..365a73a
--- /dev/null
+++ b/tests/test-push-cgi.t
@@ -0,0 +1,92 @@
+ $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
+This is a test of the push wire protocol over CGI-based hgweb.
+
+initialize repository
+
+ $ hg init r
+ $ cd r
+ $ echo a > a
+ $ hg ci -A -m "0"
+ adding a
+ $ echo '[web]' > .hg/hgrc
+ $ echo 'allow_push = *' >> .hg/hgrc
+ $ echo 'push_ssl = false' >> .hg/hgrc
+
+create hgweb invocation script
+
+ $ cat >hgweb.cgi <<HGWEB
+ > import cgitb
+ > cgitb.enable()
+ > from mercurial import demandimport; demandimport.enable()
+ > from mercurial.hgweb import hgweb
+ > from mercurial.hgweb import wsgicgi
+ > application = hgweb('.', 'test repository')
+ > wsgicgi.launch(application)
+ > HGWEB
+ $ chmod 755 hgweb.cgi
+
+test preparation
+
+ $ . "$TESTDIR/cgienv"
+ $ REQUEST_METHOD="POST"; export REQUEST_METHOD
+ $ CONTENT_TYPE="application/octet-stream"; export CONTENT_TYPE
+ $ hg bundle --all bundle.hg
+ 1 changesets found
+ $ CONTENT_LENGTH=279; export CONTENT_LENGTH;
+
+expect unsynced changes
+
+ $ QUERY_STRING="cmd=unbundle&heads=0000000000000000000000000000000000000000"; export QUERY_STRING
+ $ python hgweb.cgi <bundle.hg >page1 2>&1
+ $ cat page1
+ Status: 200 Script output follows\r (esc)
+ Content-Type: application/mercurial-0.1\r (esc)
+ Content-Length: 19\r (esc)
+ \r (esc)
+ 0
+ unsynced changes
+
+successful force push
+
+ $ QUERY_STRING="cmd=unbundle&heads=666f726365"; export QUERY_STRING
+ $ python hgweb.cgi <bundle.hg >page2 2>&1
+ $ cat page2
+ Status: 200 Script output follows\r (esc)
+ Content-Type: application/mercurial-0.1\r (esc)
+ \r (esc)
+ 1
+ adding changesets
+ adding manifests
+ adding file changes
+ added 0 changesets with 0 changes to 1 files
+
+successful push, list of heads
+
+ $ QUERY_STRING="cmd=unbundle&heads=f7b1eb17ad24730a1651fccd46c43826d1bbc2ac"; export QUERY_STRING
+ $ python hgweb.cgi <bundle.hg >page3 2>&1
+ $ cat page3
+ Status: 200 Script output follows\r (esc)
+ Content-Type: application/mercurial-0.1\r (esc)
+ \r (esc)
+ 1
+ adding changesets
+ adding manifests
+ adding file changes
+ added 0 changesets with 0 changes to 1 files
+
+successful push, SHA1 hash of heads (unbundlehash capability)
+
+ $ QUERY_STRING="cmd=unbundle&heads=686173686564 5a785a5f9e0d433b88ed862b206b011b0c3a9d13"; export QUERY_STRING
+ $ python hgweb.cgi <bundle.hg >page4 2>&1
+ $ cat page4
+ Status: 200 Script output follows\r (esc)
+ Content-Type: application/mercurial-0.1\r (esc)
+ \r (esc)
+ 1
+ adding changesets
+ adding manifests
+ adding file changes
+ added 0 changesets with 0 changes to 1 files
+
+ $ cd ..