ut_devtools.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/usr/bin/env python3
  2. """
  3. test.unit_tests_d.ut_devtools: devtools unit tests for the MMGen suite
  4. """
  5. import os,json
  6. from mmgen.devtools import *
  7. from . import unit_tests_base
  8. textA = """
  9. def main():
  10. a = 1
  11. b = 2
  12. c = 3
  13. """.lstrip()
  14. textB = """
  15. def main():
  16. a = 1
  17. b = 0
  18. c = 3
  19. """.lstrip()
  20. jsonA = open('test/ref/ethereum/tracking-wallet-v1.json').read()
  21. dataB = json.loads(jsonA)
  22. dataB['coin'] = 'ETC'
  23. jsonB = json.dumps(dataB)
  24. text_data = (
  25. (textA, textB, 'a/main.py', 'b/main.py', False, 'text: one line difference'),
  26. ('', textB, 'a/main.py', 'b/main.py', False, 'text: first file empty'),
  27. (textA, textA, 'a/main.py', 'b/main.py', False, 'text: identical files'),
  28. ('', '', 'a/empty.txt', 'b/empty.txt', False, 'text: empty files'),
  29. )
  30. json_data = (
  31. (jsonA, jsonB, 'a/data.json', 'b/data.json', True, 'json: one difference'),
  32. ('{}', jsonB, 'a/data.json', 'b/data.json', True, 'json: first file empty'),
  33. (jsonA, jsonA, 'a/data.json', 'b/data.json', True, 'json: identical files'),
  34. ('{}', '{}', 'a/data.json', 'b/data.json', True, 'json: empty files'),
  35. )
  36. def print_hdr(hdr):
  37. print('{a} {b} {c}'.format(
  38. a = '-' * ((78 - len(hdr))//2),
  39. b = hdr,
  40. c = '-' * ((78 - len(hdr))//2 + (len(hdr) % 2)) ))
  41. # TODO: add data checks
  42. class unit_tests(unit_tests_base):
  43. def _pre_subtest(self,name,subname,ut):
  44. self._silence()
  45. def _post_subtest(self,name,subname,ut):
  46. print('-' * 80 + '\n')
  47. self._end_silence()
  48. def diff(self,name,ut):
  49. for data in text_data + json_data:
  50. print_hdr(data[-1])
  51. print_diff(*data[:-1])
  52. return True
  53. def ndiff(self,name,ut):
  54. for data in text_data:
  55. print_hdr(data[-1])
  56. print('\n'.join(get_ndiff(*data[:2])))
  57. return True
  58. def stack_trace(self,name,ut):
  59. print_hdr('stack trace')
  60. print_stack_trace('Test',fh_list=[open(os.devnull,'w')],trim=0)
  61. return True
  62. def obj_pmsg(self,name,ut):
  63. from mmgen.protocol import init_proto
  64. from mmgen.seed import Seed
  65. from mmgen.addrlist import AddrList
  66. from ..include.common import cfg
  67. print_hdr('MMGenObject.pmsg()')
  68. AddrList(
  69. cfg = cfg,
  70. proto = init_proto( cfg, 'btc' ),
  71. seed = Seed(cfg,seed_bin=bytes.fromhex('bead'*16)),
  72. addr_idxs = '1',
  73. mmtype = 'B',
  74. skip_chksum = True ).pmsg()
  75. return True