test: Check RPC argument mapping
commit77aa9e59ea0e6a000a0aea5dec4ef9585356147d
authorWladimir J. van der Laan <laanwj@gmail.com>
Thu, 6 Jul 2017 13:01:27 +0000 (6 15:01 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Thu, 7 Sep 2017 20:34:18 +0000 (7 22:34 +0200)
tree5d1e65a047e37711c584d46c1dba3908c406f3f7
parent52f8877525d5238f3440e73710507be889d14127
test: Check RPC argument mapping

Parse the dispatch tables from the server implementation files,
and the conversion table from the client.

Perform the following consistency checks:

- Arguments defined in conversion table, must be present in dispatch
  table. If not, it was probably forgotten to add them to the
  dispatch table, and they will not work.

- Arguments defined in conversion table must have the same names as
  in the dispatch table. If not, they will not work.

- All aliases for an argument must either be present in the
  conversion table, or not. Anything in between means an oversight
  and some aliases won't work.

Any of these results in an error.

It also performs a consistency check to see if the same
named argument is sometimes converted, and sometimes not. E.g.
one RPC call might have a 'verbose' argument that is converted,
another RPC call might have one that is not converted. This is not
necessarily wrong, but points at a possible error (as well as
makes the API harder to memorize) - so it is emitted as a warning
(could upgrade this to error).
.travis.yml
contrib/devtools/check-rpc-mappings.py [new file with mode: 0755]