ut_testdep.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python3
  2. """
  3. test.modtest_d.ut_testdep: test dependency unit tests for the MMGen suite
  4. """
  5. import os
  6. from subprocess import run, DEVNULL
  7. from mmgen.util import ymsg, bmsg
  8. from ..include.common import cfg
  9. sec = 'deadbeef' * 8
  10. class unit_tests:
  11. altcoin_deps = ('pycoin', 'monero_python', 'keyconv', 'zcash_mini', 'eth_keys', 'ssh_socks_proxy')
  12. win_skip = ('losetup', 'zcash_mini', 'sudo')
  13. mac_skip = ('losetup',)
  14. def sudo(self, name, ut):
  15. from mmgen.util import have_sudo
  16. if have_sudo():
  17. return True
  18. else:
  19. ymsg(f'To run the test suite, please enable sudo without password for user ‘{os.getenv("USER")}’')
  20. return False
  21. def losetup(self, name, ut):
  22. os.stat('/dev/loop0')
  23. for cmd in ('/sbin/losetup', '/usr/sbin/losetup', 'losetup'):
  24. try:
  25. run([cmd, '-f'], check=True, stdout=DEVNULL)
  26. break
  27. except:
  28. if cmd == 'losetup':
  29. raise
  30. return True
  31. def pycoin(self, name, ut):
  32. from pycoin.networks.registry import network_for_netcode as nfnc
  33. network = nfnc('btc')
  34. key = network.keys.private(secret_exponent=int(sec, 16), is_compressed=True)
  35. hash160_c = key.hash160(is_compressed=True)
  36. network.address.for_p2pkh_wit(hash160_c)
  37. return True
  38. def monero_python(self, name, ut):
  39. from mmgen.util2 import load_cryptodome
  40. load_cryptodome()
  41. from monero.seed import Seed
  42. Seed('deadbeef' * 8).public_address()
  43. return True
  44. def keyconv(self, name, ut):
  45. run(['keyconv', '-G', 'ltc'], stdout=DEVNULL, stderr=DEVNULL, check=True)
  46. return True
  47. def zcash_mini(self, name, ut):
  48. run(['zcash-mini'], stdout=DEVNULL, check=True)
  49. return True
  50. def eth_keys(self, name, ut):
  51. from eth_keys import keys
  52. return True
  53. def ssh_socks_proxy(self, name, ut):
  54. from test.cmdtest_d.ct_xmrwallet import CmdTestXMRWallet
  55. return CmdTestXMRWallet.init_proxy(external_call=True)