Mercurial > hg-stable
changeset 46773: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 | ce42fe36d581 |
children | af7535249ea9 |
files | tests/test-pull-network.t tests/test-pull.t |
diffstat | 2 files changed, 137 insertions(+), 137 deletions(-) [+] |
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 ..
--- a/tests/test-pull.t Wed Mar 10 16:35:17 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -#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 ..