aboutsummaryrefslogtreecommitdiff
path: root/tests/functional_tests/check_missing_rpc_methods.py
blob: 0eedd6d0f159b382e500a961b380c4acab6e0853 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python

from __future__ import print_function
import sys
import re

USAGE = 'usage: check_untested_methods.py <rootdir>'
try:
  rootdir = sys.argv[1]
except:
  print(USAGE)
  sys.exit(1)

sys.path.insert(0, rootdir + '/utils/python-rpc')

from framework import daemon
from framework import wallet

modules = [
  {
    'name': 'daemon',
    'object': daemon.Daemon(),
    'path': rootdir + '/src/rpc/core_rpc_server.h',
    'ignore': []
  },
  {
    'name': 'wallet',
    'object': wallet.Wallet(),
    'path': rootdir + '/src/wallet/wallet_rpc_server.h',
    'ignore': []
  }
]

error = False
for module in modules:
  for line in open(module['path']).readlines():
    if 'MAP_URI_AUTO_JON2' in line or 'MAP_JON_RPC' in line:
      match = re.search('.*\"(.*)\".*', line)
      name = match.group(1)
      if name in module['ignore'] or name.endswith('.bin'):
        continue
      if 'MAP_URI_AUTO_JON2' in line:
        if not name.startswith('/'):
          print('Error: %s does not start with /' % name)
          error = True
        name = name[1:]
      if not hasattr(module['object'], name):
        print('Error: %s API method %s does not have a matching function' % (module['name'], name))
        error = True

sys.exit(1 if error else 0)