Mercurial > hg
annotate tests/test-context-metadata.t @ 37047:fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Now that we have a scaffolding for serving version 2 of the HTTP
protocol, let's start implementing it.
A good place to start is URL routing and basic request processing
semantics. We can focus on content types, capabilities detect, etc
later.
Version 2 of the HTTP wire protocol encodes the needed permissions
of the request in the URL path. The reasons for this are documented
in the added documentation. In short, a) it makes it really easy and
fail proof for server administrators to implement path-based
authentication and b) it will enable clients to realize very early in
a server exchange that authentication will be required to complete
the operation. This latter point avoids all kinds of complexity and
problems, like dealing with Expect: 100-continue and clients finding
out later during `hg push` that they need to provide authentication.
This will avoid the current badness where clients send a full bundle,
get an HTTP 403, provide authentication, then retransmit the bundle.
In order to implement command checking, we needed to implement a
protocol handler for the new wire protocol. Our handler is just
small enough to run the code we've implemented.
Tests for the defined functionality have been added.
I very much want to refactor the permissions checking code and define
a better response format. But this can be done later. Nothing is
covered by backwards compatibility at this point.
Differential Revision: https://phab.mercurial-scm.org/D2836
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 19 Mar 2018 16:43:47 -0700 |
parents | 194463554ba5 |
children | 8327fd79adf8 |
rev | line source |
---|---|
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
1 Tests about metadataonlyctx |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
2 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
3 $ hg init |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
4 $ echo A > A |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
5 $ hg commit -A A -m 'Add A' |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
6 $ echo B > B |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 $ hg commit -A B -m 'Add B' |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 $ hg rm A |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 $ echo C > C |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 $ echo B2 > B |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 $ hg add C -q |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 $ hg commit -m 'Remove A' |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
14 $ cat > metaedit.py <<EOF |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
15 > from __future__ import absolute_import |
36048
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
16 > from mercurial import context, pycompat, registrar |
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
17 > cmdtable = {} |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
18 > command = registrar.command(cmdtable) |
36048
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
19 > @command(b'metaedit') |
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
20 > def metaedit(ui, repo, arg): |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
21 > # Modify commit message to "FOO" |
36048
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
22 > with repo.wlock(), repo.lock(), repo.transaction(b'metaedit'): |
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
23 > old = repo[b'.'] |
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
24 > kwargs = dict(s.split(b'=', 1) for s in arg.split(b';')) |
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
25 > if 'parents' in kwargs: |
36048
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
26 > kwargs[b'parents'] = kwargs[b'parents'].split(b',') |
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
27 > new = context.metadataonlyctx(repo, old, |
194463554ba5
py3: port metaedit extension to Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34061
diff
changeset
|
28 > **pycompat.strkwargs(kwargs)) |
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
29 > new.commit() |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
30 > EOF |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
31 $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'text=Changed' |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
32 $ hg log -r tip |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
33 changeset: 3:ad83e9e00ec9 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
34 tag: tip |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
35 parent: 1:3afb7afe6632 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
36 user: test |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
37 date: Thu Jan 01 00:00:00 1970 +0000 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
38 summary: Changed |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
39 |
34061
11499bad0359
check-code: forbid "\S" in egrep regular expression
Jun Wu <quark@fb.com>
parents:
33999
diff
changeset
|
40 $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | egrep '^RuntimeError' |
33999
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
41 RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
42 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
43 $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'user=foo <foo@example.com>' |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
44 $ hg log -r tip |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
45 changeset: 4:1f86eaeca92b |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
46 tag: tip |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
47 parent: 1:3afb7afe6632 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
48 user: foo <foo@example.com> |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
49 date: Thu Jan 01 00:00:00 1970 +0000 |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
50 summary: Remove A |
be814edf3306
metadataonlyctx: don't crash when reusing the manifest with deletions
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
51 |