# HG changeset patch # User Pierre-Yves David # Date 1432753411 25200 # Node ID ebbf5b0c945abc4091a92e7e84f7623de99db6bf # Parent 2c14ab597353e323e226a0414cc3851b07fa0d72 test: copy test-http.t to test-http-bundle1.t We want to keep both code paths tested. The test is a bit too extensive to simply introduce dual testing in it so we make a copy for each protocol version. diff -r 2c14ab597353 -r ebbf5b0c945a tests/test-http-bundle1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-http-bundle1.t Wed May 27 12:03:31 2015 -0700 @@ -0,0 +1,333 @@ +#require serve + +This test is a duplicate of 'test-http.t', feel free to factor out +parts that are not bundle1/bundle2 specific. + + $ cat << EOF >> $HGRCPATH + > [experimental] + > # This test is dedicated to interaction through old bundle + > bundle2-exp = False + > EOF + + $ hg init test + $ cd test + $ echo foo>foo + $ mkdir foo.d foo.d/bAr.hg.d foo.d/baR.d.hg + $ echo foo>foo.d/foo + $ echo bar>foo.d/bAr.hg.d/BaR + $ echo bar>foo.d/baR.d.hg/bAR + $ hg commit -A -m 1 + adding foo + adding foo.d/bAr.hg.d/BaR + adding foo.d/baR.d.hg/bAR + adding foo.d/foo + $ hg serve -p $HGPORT -d --pid-file=../hg1.pid -E ../error.log + $ hg --config server.uncompressed=False serve -p $HGPORT1 -d --pid-file=../hg2.pid + +Test server address cannot be reused + +#if windows + $ hg serve -p $HGPORT1 2>&1 + abort: cannot start server at ':$HGPORT1': * (glob) + [255] +#else + $ hg serve -p $HGPORT1 2>&1 + abort: cannot start server at ':$HGPORT1': Address already in use + [255] +#endif + $ cd .. + $ cat hg1.pid hg2.pid >> $DAEMON_PIDS + +clone via stream + + $ hg clone --uncompressed http://localhost:$HGPORT/ copy 2>&1 + streaming all changes + 6 files to transfer, 606 bytes of data + transferred * bytes in * seconds (*/sec) (glob) + searching for changes + no changes found + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg verify -R copy + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 4 files, 1 changesets, 4 total revisions + +try to clone via stream, should use pull instead + + $ hg clone --uncompressed http://localhost:$HGPORT1/ copy2 + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 4 changes to 4 files + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + +clone via pull + + $ hg clone http://localhost:$HGPORT1/ copy-pull + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 4 changes to 4 files + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg verify -R copy-pull + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 4 files, 1 changesets, 4 total revisions + $ cd test + $ echo bar > bar + $ hg commit -A -d '1 0' -m 2 + adding bar + $ cd .. + +clone over http with --update + + $ hg clone http://localhost:$HGPORT1/ updated --update 0 + requesting all changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 5 changes to 5 files + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg log -r . -R updated + changeset: 0:8b6053c928fe + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: 1 + + $ rm -rf updated + +incoming via HTTP + + $ hg clone http://localhost:$HGPORT1/ --rev 0 partial + adding changesets + adding manifests + adding file changes + added 1 changesets with 4 changes to 4 files + updating to branch default + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd partial + $ touch LOCAL + $ hg ci -qAm LOCAL + $ hg incoming http://localhost:$HGPORT1/ --template '{desc}\n' + comparing with http://localhost:$HGPORT1/ + searching for changes + 2 + $ cd .. + +pull + + $ cd copy-pull + $ echo '[hooks]' >> .hg/hgrc + $ echo "changegroup = python \"$TESTDIR/printenv.py\" changegroup" >> .hg/hgrc + $ hg pull + pulling from http://localhost:$HGPORT1/ + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT1/ (glob) + (run 'hg update' to get a working copy) + $ cd .. + +clone from invalid URL + + $ hg clone http://localhost:$HGPORT/bad + abort: HTTP Error 404: Not Found + [255] + +test http authentication ++ use the same server to test server side streaming preference + + $ cd test + $ cat << EOT > userpass.py + > import base64 + > from mercurial.hgweb import common + > def perform_authentication(hgweb, req, op): + > auth = req.env.get('HTTP_AUTHORIZATION') + > if not auth: + > raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, 'who', + > [('WWW-Authenticate', 'Basic Realm="mercurial"')]) + > if base64.b64decode(auth.split()[1]).split(':', 1) != ['user', 'pass']: + > raise common.ErrorResponse(common.HTTP_FORBIDDEN, 'no') + > def extsetup(): + > common.permhooks.insert(0, perform_authentication) + > EOT + $ hg --config extensions.x=userpass.py serve -p $HGPORT2 -d --pid-file=pid \ + > --config server.preferuncompressed=True \ + > --config web.push_ssl=False --config web.allow_push=* -A ../access.log + $ cat pid >> $DAEMON_PIDS + + $ cat << EOF > get_pass.py + > import getpass + > def newgetpass(arg): + > return "pass" + > getpass.getpass = newgetpass + > EOF + + $ hg id http://localhost:$HGPORT2/ + abort: http authorization required for http://localhost:$HGPORT2/ + [255] + $ hg id http://localhost:$HGPORT2/ + abort: http authorization required for http://localhost:$HGPORT2/ + [255] + $ hg id --config ui.interactive=true --config extensions.getpass=get_pass.py http://user@localhost:$HGPORT2/ + http authorization required for http://localhost:$HGPORT2/ + realm: mercurial + user: user + password: 5fed3813f7f5 + $ hg id http://user:pass@localhost:$HGPORT2/ + 5fed3813f7f5 + $ echo '[auth]' >> .hg/hgrc + $ echo 'l.schemes=http' >> .hg/hgrc + $ echo 'l.prefix=lo' >> .hg/hgrc + $ echo 'l.username=user' >> .hg/hgrc + $ echo 'l.password=pass' >> .hg/hgrc + $ hg id http://localhost:$HGPORT2/ + 5fed3813f7f5 + $ hg id http://localhost:$HGPORT2/ + 5fed3813f7f5 + $ hg id http://user@localhost:$HGPORT2/ + 5fed3813f7f5 + $ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1 + streaming all changes + 7 files to transfer, 916 bytes of data + transferred * bytes in * seconds (*/sec) (glob) + searching for changes + no changes found + updating to branch default + 5 files updated, 0 files merged, 0 files removed, 0 files unresolved +--pull should override server's preferuncompressed + $ hg clone --pull http://user:pass@localhost:$HGPORT2/ dest-pull 2>&1 + requesting all changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 5 changes to 5 files + updating to branch default + 5 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ hg id http://user2@localhost:$HGPORT2/ + abort: http authorization required for http://localhost:$HGPORT2/ + [255] + $ hg id http://user:pass2@localhost:$HGPORT2/ + abort: HTTP Error 403: no + [255] + + $ hg -R dest tag -r tip top + $ hg -R dest push http://user:pass@localhost:$HGPORT2/ + pushing to http://user:***@localhost:$HGPORT2/ + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + $ hg rollback -q + + $ cut -c38- ../access.log + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=branchmap HTTP/1.1" 200 - + "GET /?cmd=stream_out HTTP/1.1" 401 - + "GET /?cmd=stream_out HTTP/1.1" 200 - + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D5fed3813f7f5e1824344fdc9cf8f63bb662c292d + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D + "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:common=0000000000000000000000000000000000000000&heads=5fed3813f7f5e1824344fdc9cf8f63bb662c292d + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=tip + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=namespaces + "GET /?cmd=listkeys HTTP/1.1" 403 - x-hgarg-1:namespace=namespaces + "GET /?cmd=capabilities HTTP/1.1" 200 - + "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D7f4e523d01f2cc3765ac8934da3d14db775ff872 + "GET /?cmd=listkeys HTTP/1.1" 401 - x-hgarg-1:namespace=phases + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "GET /?cmd=branchmap HTTP/1.1" 200 - + "GET /?cmd=branchmap HTTP/1.1" 200 - + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks + "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+5eb5abfefeea63c80dd7553bcc3783f37e0c5524 + "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases + + $ cd .. + +clone of serve with repo in root and unserved subrepo (issue2970) + + $ hg --cwd test init sub + $ echo empty > test/sub/empty + $ hg --cwd test/sub add empty + $ hg --cwd test/sub commit -qm 'add empty' + $ hg --cwd test/sub tag -r 0 something + $ echo sub = sub > test/.hgsub + $ hg --cwd test add .hgsub + $ hg --cwd test commit -qm 'add subrepo' + $ hg clone http://localhost:$HGPORT noslash-clone + requesting all changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 7 changes to 7 files + updating to branch default + abort: HTTP Error 404: Not Found + [255] + $ hg clone http://localhost:$HGPORT/ slash-clone + requesting all changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 7 changes to 7 files + updating to branch default + abort: HTTP Error 404: Not Found + [255] + +check error log + + $ cat error.log