manifests: push down expected node length into the parser
This strictly enforces the node length in the manifest lines according
to what the repository expects. One test case moves large hash testing
into the non-treemanifest part as treemanifests don't provide an
interface for overriding just the node length for now.
Differential Revision: https://phab.mercurial-scm.org/D10533
$ . $TESTDIR/wireprotohelpers.sh
$ hg init server
$ enablehttpv2 server
$ cd server
$ hg debugdrawdag << EOF
> H I J
> | | |
> E F G
> | |/
> C D
> |/
> B
> |
> A
> EOF
$ hg phase --force --secret J
$ hg phase --public E
$ hg log -r 'E + H + I + G + J' -T '{rev}:{node} {desc} {phase}\n'
4:78d2dca436b2f5b188ac267e29b81e07266d38fc E public
7:ae492e36b0c8339ffaf328d00b85b4525de1165e H draft
8:1d6f6b91d44aaba6d5e580bc30a9948530dbe00b I draft
6:29446d2dc5419c5f97447a8bc062e4cc328bf241 G draft
9:dec04b246d7cbb670c6689806c05ad17c835284e J secret
$ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
All non-secret heads returned by default
$ sendhttpv2peer << EOF
> command heads
> EOF
creating http peer for wire protocol version 2
sending heads command
response: [
b'\x1dok\x91\xd4J\xab\xa6\xd5\xe5\x80\xbc0\xa9\x94\x850\xdb\xe0\x0b',
b'\xaeI.6\xb0\xc83\x9f\xfa\xf3(\xd0\x0b\x85\xb4R]\xe1\x16^',
b')Dm-\xc5A\x9c_\x97Dz\x8b\xc0b\xe4\xcc2\x8b\xf2A'
]
Requesting just the public heads works
$ sendhttpv2peer << EOF
> command heads
> publiconly 1
> EOF
creating http peer for wire protocol version 2
sending heads command
response: [
b'x\xd2\xdc\xa46\xb2\xf5\xb1\x88\xac&~)\xb8\x1e\x07&m8\xfc'
]
$ cat error.log