mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 09:48:05 +03:00
9dc21f8d0b
Summary: D13853115 adds `edenscm/` to `sys.path` and code still uses `import mercurial`. That has nasty problems if both `import mercurial` and `import edenscm.mercurial` are used, because Python would think `mercurial.foo` and `edenscm.mercurial.foo` are different modules so code like `try: ... except mercurial.error.Foo: ...`, or `isinstance(x, mercurial.foo.Bar)` would fail to handle the `edenscm.mercurial` version. There are also some module-level states (ex. `extensions._extensions`) that would cause trouble if they have multiple versions in a single process. Change imports to use the `edenscm` so ideally the `mercurial` is no longer imported at all. Add checks in extensions.py to catch unexpected extensions importing modules from the old (wrong) locations when running tests. Reviewed By: phillco Differential Revision: D13868981 fbshipit-source-id: f4e2513766957fd81d85407994f7521a08e4de48
105 lines
2.9 KiB
Perl
105 lines
2.9 KiB
Perl
$ . helpers-usechg.sh
|
|
|
|
#require no-msys # MSYS will translate web paths as if they were file paths
|
|
|
|
This is a test of the push wire protocol over CGI-based hgweb.
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [format]
|
|
> allowbundle1=True
|
|
> EOF
|
|
|
|
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 edenscm.mercurial import demandimport; demandimport.enable()
|
|
> from edenscm.mercurial.hgweb import hgweb
|
|
> from edenscm.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 --type v1 --all bundle.hg
|
|
devel-warn: using deprecated bundlev1 format
|
|
at: */changegroup.py:* (makechangegroup) (glob)
|
|
1 changesets found
|
|
$ CONTENT_LENGTH=279; export CONTENT_LENGTH;
|
|
|
|
expect failure because heads doesn't match (formerly known as '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: 64\r (esc)
|
|
\r (esc)
|
|
0
|
|
repository changed while preparing changes - please try again
|
|
|
|
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)
|
|
Content-Length: 102\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)
|
|
Content-Length: 102\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)
|
|
Content-Length: 102\r (esc)
|
|
\r (esc)
|
|
1
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 0 changesets with 0 changes to 1 files
|
|
|
|
$ cd ..
|