Mercurial > hg
annotate tests/test-manifest.t @ 37048:fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Wire protocol version 1 transfers argument data via request
headers by default. This has historically caused problems because
servers institute limits on the length of individual HTTP headers
as well as the total size of all request headers. Mercurial servers
can advertise the maximum length of an individual header. But
there's no guarantee any intermediate HTTP agents will accept
headers up to that length.
In the existing wire protocol, server operators typically also
key off the HTTP request method to implement authentication.
For example, GET requests translate to read-only requests and
can be allowed. But read-write commands must use POST and require
authentication. This has typically worked because the only wire
protocol commands that use POST modify the repo (e.g. the
"unbundle" command).
There is an experimental feature to enable clients to transmit
argument data via POST request bodies. This is technically a
better and more robust solution. But we can't enable it by default
because of servers assuming POST means write access.
In version 2 of the wire protocol, the permissions of a request
are encoded in the URL. And with it being a new protocol in a new
URL space, we're not constrained by backwards compatibility
requirements.
This commit adopts the technically superior mechanism of using
HTTP request bodies to send argument data by requiring POST for
all commands. Strictly speaking, it may be possible to send
request bodies on GET requests. But my experience is that not all
HTTP stacks support this. POST pretty much always works. Using POST
for read-only operations does sacrifice some RESTful design
purity. But this API cares about practicality, not about being
in Roy T. Fielding's REST ivory tower.
There's a chance we may relax this restriction in the future. But
for now, I want to see how far we can get with a POST only API.
Differential Revision: https://phab.mercurial-scm.org/D2837
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 13 Mar 2018 11:57:43 -0700 |
parents | 4441705b7111 |
children | 45a4799174a1 |
rev | line source |
---|---|
12328
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12316
diff
changeset
|
1 Source bundle was generated with the following script: |
b63f6422d2a7
tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents:
12316
diff
changeset
|
2 |
5406
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
3 # hg init |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
4 # echo a > a |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
5 # ln -s a l |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
6 # hg ci -Ama -d'0 0' |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
7 # mkdir b |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
8 # echo a > b/a |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
9 # chmod +x b/a |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
10 # hg ci -Amb -d'1 0' |
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
11 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
12 $ hg init |
14116
cd3032437064
tests: move test bundles in a bundles/ subdirectory
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12346
diff
changeset
|
13 $ hg -q pull "$TESTDIR/bundles/test-manifest.hg" |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
14 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
15 The next call is expected to return nothing: |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
16 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
17 $ hg manifest |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
18 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
19 $ hg co |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
20 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
5406
f11554a097c8
test-manifest: test symlink and exec bit display
Patrick Mezard <pmezard@gmail.com>
parents:
5155
diff
changeset
|
21 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
22 $ hg manifest |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
23 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
24 b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
25 l |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
26 |
22423
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
27 $ hg files -vr . |
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
28 2 a |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
23348
diff
changeset
|
29 2 x b/a |
22423
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
30 1 l l |
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
31 $ hg files -r . -X b |
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
32 a |
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
33 l |
edf07a804ac4
files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com>
parents:
16907
diff
changeset
|
34 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
35 $ hg manifest -v |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
36 644 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
37 755 * b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
38 644 @ l |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
39 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
40 $ hg manifest --debug |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
41 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
42 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 755 * b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
43 047b75c6d7a3ef6a2243bd0e99f94f6ea6683597 644 @ l |
6737
7239e06e58e9
context: consistently return p1 context for None
Matt Mackall <mpm@selenic.com>
parents:
5406
diff
changeset
|
44 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
45 $ hg manifest -r 0 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
46 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
47 l |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
48 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
49 $ hg manifest -r 1 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
50 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
51 b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
52 l |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
53 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
54 $ hg manifest -r tip |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
55 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
56 b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
57 l |
5155
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
58 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
59 $ hg manifest tip |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
60 a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
61 b/a |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
62 l |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
63 |
14399
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14116
diff
changeset
|
64 $ hg manifest --all |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14116
diff
changeset
|
65 a |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14116
diff
changeset
|
66 b/a |
71938479eff9
add new option --all to manifest command
Adrian Buehlmann <adrian@cadifra.com>
parents:
14116
diff
changeset
|
67 l |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
68 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
69 The next two calls are expected to abort: |
5155
13d23d66a6cd
manifest: accept -r for rev specification
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
70 |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
71 $ hg manifest -r 2 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
72 abort: unknown revision '2'! |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12253
diff
changeset
|
73 [255] |
12253
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
74 |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
75 $ hg manifest -r tip tip |
e5aee120287b
tests: unify test-manifest*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6737
diff
changeset
|
76 abort: please specify just one revision |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12253
diff
changeset
|
77 [255] |