This is an archive of the discontinued Mercurial Phabricator instance.

tests: add tests for server-side linknode adjustment with wireprotov2
ClosedPublic

Authored by indygreg on Dec 10 2018, 2:43 PM.

Details

Summary

The current implementation of linknode serving in wireprotov2 simply
serves up the linkrev/linknode as stored: it doesn't attempt to
adjust the linknode to what the receiver is aware of. This can result
in the client seeing a linknode referencing a changeset that is unknown
to it.

This commit adds test coverage of that scenario.

The tests in test-wireproto-command-filesdata.t demonstrate two failures.
First, the linknode refers to a changeset not in the available set.
Second, the server doesn't send a file revision that it should have
(because of linkrev filtering).

The test in test-wireproto-exchange.t demonstrates that the lack of
a file revision results in a corrupted repository on the client.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.