Mercurial > hg
diff tests/test-pull-network.t @ 46760:bcb5bc2d21e0
tests: rename `test-pull` to `test-pull-network.t`
If is mostly about ssh and http interaction so lets avoid confusion with a
generic `hg pull` test
Differential Revision: https://phab.mercurial-scm.org/D10155
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 10 Mar 2021 16:28:46 +0100 |
parents | tests/test-pull.t@ce42fe36d581 |
children | 04688c51f81f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-pull-network.t Wed Mar 10 16:28:46 2021 +0100 @@ -0,0 +1,137 @@ +#require serve + +#testcases sshv1 sshv2 + +#if sshv2 + $ cat >> $HGRCPATH << EOF + > [experimental] + > sshpeer.advertise-v2 = true + > sshserver.support-v2 = true + > EOF +#endif + + $ hg init test + $ cd test + + $ echo foo>foo + $ hg addremove + adding foo + $ hg commit -m 1 + + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + checked 1 changesets with 1 changes to 1 files + + $ hg serve -p $HGPORT -d --pid-file=hg.pid + $ cat hg.pid >> $DAEMON_PIDS + $ cd .. + + $ hg clone --pull http://foo:bar@localhost:$HGPORT/ copy + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + new changesets 340e38bdcde4 + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ cd copy + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + checked 1 changesets with 1 changes to 1 files + + $ hg co + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cat foo + foo + + $ hg manifest --debug + 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo + + $ hg pull + pulling from http://foo@localhost:$HGPORT/ + searching for changes + no changes found + + $ hg rollback --dry-run --verbose + repository tip rolled back to revision -1 (undo pull: http://foo:***@localhost:$HGPORT/) + +Test pull of non-existing 20 character revision specification, making sure plain ascii identifiers +not are encoded like a node: + + $ hg pull -r 'xxxxxxxxxxxxxxxxxxxy' + pulling from http://foo@localhost:$HGPORT/ + abort: unknown revision 'xxxxxxxxxxxxxxxxxxxy' + [255] + $ hg pull -r 'xxxxxxxxxxxxxxxxxx y' + pulling from http://foo@localhost:$HGPORT/ + abort: unknown revision 'xxxxxxxxxxxxxxxxxx y' + [255] + +Test pull of working copy revision + $ hg pull -r 'ffffffffffff' + pulling from http://foo@localhost:$HGPORT/ + abort: unknown revision 'ffffffffffff' + [255] + +Test 'file:' uri handling: + + $ hg pull -q file://../test-does-not-exist + abort: file:// URLs can only refer to localhost + [255] + + $ hg pull -q file://../test + abort: file:// URLs can only refer to localhost + [255] + +MSYS changes 'file:' into 'file;' + +#if no-msys + $ hg pull -q file:../test # no-msys +#endif + +It's tricky to make file:// URLs working on every platform with +regular shell commands. + + $ URL=`"$PYTHON" -c "from __future__ import print_function; import os; print('file://foobar' + ('/' + os.getcwd().replace(os.sep, '/')).replace('//', '/') + '/../test')"` + $ hg pull -q "$URL" + abort: file:// URLs can only refer to localhost + [255] + + $ URL=`"$PYTHON" -c "from __future__ import print_function; import os; print('file://localhost' + ('/' + os.getcwd().replace(os.sep, '/')).replace('//', '/') + '/../test')"` + $ hg pull -q "$URL" + +SEC: check for unsafe ssh url + + $ cat >> $HGRCPATH << EOF + > [ui] + > ssh = sh -c "read l; read l; read l" + > EOF + + $ hg pull 'ssh://-oProxyCommand=touch${IFS}owned/path' + pulling from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path + abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' + [255] + $ hg pull 'ssh://%2DoProxyCommand=touch${IFS}owned/path' + pulling from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path + abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' + [255] + $ hg pull 'ssh://fakehost|touch${IFS}owned/path' + pulling from ssh://fakehost%7Ctouch%24%7BIFS%7Downed/path + abort: no suitable response from remote hg + [255] + $ hg --config ui.timestamp-output=true pull 'ssh://fakehost%7Ctouch%20owned/path' + \[20[2-9][0-9]-[01][0-9]-[0-3][0-9]T[0-5][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9]\] pulling from ssh://fakehost%7Ctouch%20owned/path (re) + \[20[2-9][0-9]-[01][0-9]-[0-3][0-9]T[0-5][0-9]:[0-5][0-9]:[0-5][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9]\] abort: no suitable response from remote hg (re) + [255] + + $ [ ! -f owned ] || echo 'you got owned' + + $ cd ..