64 lines
3.3 KiB
Python
Executable File
64 lines
3.3 KiB
Python
Executable File
#! /usr/bin/env python3
|
|
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
import unittest
|
|
|
|
from test_bech32 import TestSegwitAddress
|
|
from test_coldcard import coldcard_test_suite
|
|
from test_descriptor import TestDescriptor
|
|
from test_device import start_bitcoind
|
|
from test_psbt import TestPSBT
|
|
from test_trezor import trezor_test_suite
|
|
from test_ledger import ledger_test_suite
|
|
from test_digitalbitbox import digitalbitbox_test_suite
|
|
from test_keepkey import keepkey_test_suite
|
|
from test_udevrules import TestUdevRulesInstaller
|
|
|
|
parser = argparse.ArgumentParser(description='Setup the testing environment and run automated tests')
|
|
trezor_group = parser.add_mutually_exclusive_group()
|
|
trezor_group.add_argument('--no_trezor', help='Do not run Trezor test with emulator', action='store_true')
|
|
trezor_group.add_argument('--trezor', help='Path to Trezor emulator.', default='work/trezor-mcu/firmware/trezor.elf')
|
|
coldcard_group = parser.add_mutually_exclusive_group()
|
|
coldcard_group.add_argument('--no_coldcard', help='Do not run Coldcard test with simulator', action='store_true')
|
|
coldcard_group.add_argument('--coldcard', help='Path to Coldcard simulator.', default='work/firmware/unix/headless.py')
|
|
ledger_group = parser.add_mutually_exclusive_group()
|
|
ledger_group.add_argument('--ledger', help='Run physical Ledger Nano S/X tests.', action='store_true')
|
|
keepkey_group = parser.add_mutually_exclusive_group()
|
|
keepkey_group.add_argument('--no_keepkey', help='Do not run Keepkey test with emulator', action='store_true')
|
|
keepkey_group.add_argument('--keepkey', help='Path to Keepkey emulator.', default='work/keepkey-firmware/bin/kkemu')
|
|
dbb_group = parser.add_mutually_exclusive_group()
|
|
dbb_group.add_argument('--no_bitbox', help='Do not run Digital Bitbox test with simulator', action='store_true')
|
|
dbb_group.add_argument('--bitbox', help='Path to Digital bitbox simulator.', default='work/mcu/build/bin/simulator')
|
|
|
|
parser.add_argument('--bitcoind', help='Path to bitcoind.', default='work/bitcoin/src/bitcoind')
|
|
parser.add_argument('--interface', help='Which interface to send commands over', choices=['library', 'cli', 'bindist', 'stdin'], default='library')
|
|
args = parser.parse_args()
|
|
|
|
# Run tests
|
|
suite = unittest.TestSuite()
|
|
suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(TestDescriptor))
|
|
suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(TestSegwitAddress))
|
|
suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(TestPSBT))
|
|
if sys.platform.startswith("linux"):
|
|
suite.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(TestUdevRulesInstaller))
|
|
|
|
|
|
if not args.no_trezor or not args.no_coldcard or args.ledger or not args.no_bitbox or not args.no_keepkey:
|
|
# Start bitcoind
|
|
rpc, userpass = start_bitcoind(args.bitcoind)
|
|
|
|
if not args.no_trezor:
|
|
suite.addTest(trezor_test_suite(args.trezor, rpc, userpass, args.interface))
|
|
if not args.no_coldcard:
|
|
suite.addTest(coldcard_test_suite(args.coldcard, rpc, userpass, args.interface))
|
|
if args.ledger:
|
|
suite.addTest(ledger_test_suite(rpc, userpass, args.interface))
|
|
if not args.no_bitbox:
|
|
suite.addTest(digitalbitbox_test_suite(rpc, userpass, args.bitbox, args.interface))
|
|
if not args.no_keepkey:
|
|
suite.addTest(keepkey_test_suite(args.keepkey, rpc, userpass, args.interface))
|
|
result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(suite)
|
|
sys.exit(not result.wasSuccessful())
|