BTC-only testing fixes

This commit is contained in:
The MMGen Project 2022-05-03 21:01:05 +00:00
commit 23457774e2
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
7 changed files with 84 additions and 54 deletions

View file

@ -93,20 +93,21 @@ def run_test():
'KwojSzt1VvW343mQfWQi3J537siAt5ktL2qbuCg1ZyKR8BLQ6UJm',
'bc1q6pqnfwwakuuejpm9w52ds342f9d5u36v0qnz7c' )
test_triplet(tool,'ltc','regtest','bech32',1,
'cV3ZRqf8PhyfiFwtJfkvGu2qmBsazE1wXoA2A16S3nixb3BTvvVx',
'rltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnz4kj9y' )
if not 'no_altcoin' in sys.argv:
test_triplet(tool,'ltc','regtest','bech32',1,
'cV3ZRqf8PhyfiFwtJfkvGu2qmBsazE1wXoA2A16S3nixb3BTvvVx',
'rltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnz4kj9y' )
test_triplet(tool,'xmr','mainnet','M',1,
'e8164dda6d42bd1e261a3406b2038dcbddadbeefdeadbeefdeadbeefdeadbe0f',
'41i7saPWA53EoHenmJVRt34dubPxsXwoWMnw8AdMyx4mTD1svf7qYzcVjxxRfteLNdYrAxWUMmiPegFW9EfoNgXx7vDMExv' ),
test_triplet(tool,'xmr','mainnet','M',1,
'e8164dda6d42bd1e261a3406b2038dcbddadbeefdeadbeefdeadbeefdeadbe0f',
'41i7saPWA53EoHenmJVRt34dubPxsXwoWMnw8AdMyx4mTD1svf7qYzcVjxxRfteLNdYrAxWUMmiPegFW9EfoNgXx7vDMExv' ),
test_triplet(tool,'etc','mainnet','E',1,
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
'c96aaa54e2d44c299564da76e1cd3184a2386b8d' ),
test_triplet(tool,'etc','mainnet','E',1,
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
'c96aaa54e2d44c299564da76e1cd3184a2386b8d' ),
test_triplet(tool,'zec','mainnet','Z',1,
'SKxuS56e99jpCeD9mMQ5o63zoGPakNdM9HCvt4Vt2cypvRjCdvGJ',
'zchFELwBxqsAubsLQ8yZgPCDDGukjXJssgCbiTPwFNmFwn9haLnDatzfhLdZzJT4PcU4o2yr92B52UFirUzEdF6ZYM2gBkM' )
test_triplet(tool,'zec','mainnet','Z',1,
'SKxuS56e99jpCeD9mMQ5o63zoGPakNdM9HCvt4Vt2cypvRjCdvGJ',
'zchFELwBxqsAubsLQ8yZgPCDDGukjXJssgCbiTPwFNmFwn9haLnDatzfhLdZzJT4PcU4o2yr92B52UFirUzEdF6ZYM2gBkM' )
run_test()

View file

@ -35,6 +35,7 @@ opts_data = {
'options': """
-h, --help Print this help message
--, --longhelp Print help message for long options (common options)
-a, --no-altcoin Skip altcoin tests
-C, --coverage Produce code coverage info using trace module
-l, --list-cmds List and describe the tests and commands in this test suite
-s, --system Test scripts and modules installed on system rather than
@ -57,12 +58,15 @@ if not opt.system:
from collections import namedtuple
td = namedtuple('scrambletest_entry',['seed','str','id_str','lbl','addr'])
coin_data = {
bitcoin_data = {
# SCRAMBLED_SEED[:8] SCRAMBLE_KEY ID_STR LBL FIRST ADDR
'btc': td('456d7f5f1c4bfe3b','(none)', '', '', '1MU7EdgqYy9JX35L25hR6CmXXcSEBDAwyv'),
'btc_compressed':td('bf98a4af5464a4ef','compressed', '-C', 'COMPRESSED', '1F97Jd89wwmu4ELadesAdGDzg3d8Y6j5iP'),
'btc_segwit': td('b56962d829ffc678','segwit', '-S', 'SEGWIT', '36TvVzU5mxSjJ3D9qKAmYzCV7iUqtTDezF'),
'btc_bech32': td('d09eea818f9ad17f','bech32', '-B', 'BECH32', 'bc1q8snv94j6959y3gkqv4gku0cm5mersnpucsvw5z'),
}
altcoin_data = {
'bch': td('456d7f5f1c4bfe3b','(none)', '', '', '1MU7EdgqYy9JX35L25hR6CmXXcSEBDAwyv'),
'bch_compressed':td('bf98a4af5464a4ef','compressed', '-C', 'COMPRESSED', '1F97Jd89wwmu4ELadesAdGDzg3d8Y6j5iP'),
'ltc': td('b11f16632e63ba92','ltc:legacy', '-LTC', 'LTC', 'LMxB474SVfxeYdqxNrM1WZDZMnifteSMv1'),
@ -120,7 +124,9 @@ def do_test(cmd,tdata,msg_str,addr_desc):
def do_coin_tests():
bmsg('Testing address scramble strings and list IDs')
for tname,tdata in coin_data.items():
for tname,tdata in (
tuple(bitcoin_data.items()) +
tuple(altcoin_data.items() if not opt.no_altcoin else []) ):
if tname == 'zec_zcash_z' and g.platform == 'win':
msg("Skipping 'zec_zcash_z' test for Windows platform")
continue

View file

@ -102,7 +102,10 @@ do
echo
echo " By default, all tests are run"
exit ;;
A) SKIP_ALT_DEP=1 unit_tests_py+=" --no-altcoin-deps" ;;
A) SKIP_ALT_DEP=1
test_py+=" --no-altcoin"
unit_tests_py+=" --no-altcoin-deps"
scrambletest_py+=" --no-altcoin" ;;
b) test_py+=" --buf-keypress" ;;
C) mkdir -p 'test/trace'
touch 'test/trace.acc'
@ -165,7 +168,11 @@ case $1 in
'') tests=$dfl_tests ;;
'default') tests=$dfl_tests ;;
'extra') tests=$extra_tests ;;
'noalt') tests=$noalt_tests SKIP_ALT_DEP=1 unit_tests_py+=" --no-altcoin-deps" ;;
'noalt') tests=$noalt_tests
SKIP_ALT_DEP=1
test_py+=" --no-altcoin"
unit_tests_py+=" --no-altcoin-deps"
scrambletest_py+=" --no-altcoin" ;;
'quick') tests=$quick_tests ;;
'qskip') tests=$qskip_tests ;;
*) tests="$*" ;;
@ -463,18 +470,18 @@ s_tool2="The following tests will run '$tooltest2_py' for all supported coins"
t_tool2="
- $tooltest2_py --tool-api # test the tool_api subsystem
- $tooltest2_py --tool-api --testnet=1
- $tooltest2_py --tool-api --coin=eth
- $tooltest2_py --tool-api --coin=xmr
- $tooltest2_py --tool-api --coin=zec
e $tooltest2_py --tool-api --coin=eth
a $tooltest2_py --tool-api --coin=xmr
a $tooltest2_py --tool-api --coin=zec
- $tooltest2_py
- $tooltest2_py --testnet=1
- $tooltest2_py --coin=ltc
- $tooltest2_py --coin=ltc --testnet=1
- $tooltest2_py --coin=bch
- $tooltest2_py --coin=bch --testnet=1
- $tooltest2_py --coin=zec
- $tooltest2_py --coin=xmr
- $tooltest2_py --coin=dash
a $tooltest2_py --coin=ltc
a $tooltest2_py --coin=ltc --testnet=1
a $tooltest2_py --coin=bch
a $tooltest2_py --coin=bch --testnet=1
a $tooltest2_py --coin=zec
a $tooltest2_py --coin=xmr
a $tooltest2_py --coin=dash
e $tooltest2_py --coin=eth
e $tooltest2_py --coin=eth --testnet=1
e $tooltest2_py --coin=eth --token=mm1
@ -483,61 +490,64 @@ t_tool2="
- $tooltest2_py --fork # run once with --fork so commands are actually executed
"
f_tool2='tooltest2 tests completed'
[ "$SKIP_ALT_DEP" ] && t_tool2_skip='e' # skip ETH,ETC: txview requires py_ecc
[ "$SKIP_ALT_DEP" ] && t_tool2_skip='a e' # skip ETH,ETC: txview requires py_ecc
i_tool='Tooltest'
s_tool="The following tests will run '$tooltest_py' for all supported coins"
t_tool="
- $tooltest_py --coin=btc cryptocoin
- $tooltest_py --coin=btc mnemonic
- $tooltest_py --coin=ltc cryptocoin
- $tooltest_py --coin=eth cryptocoin
- $tooltest_py --coin=etc cryptocoin
- $tooltest_py --coin=dash cryptocoin
- $tooltest_py --coin=doge cryptocoin
- $tooltest_py --coin=emc cryptocoin
- $tooltest_py --coin=xmr cryptocoin
- $tooltest_py --coin=zec cryptocoin
a $tooltest_py --coin=ltc cryptocoin
a $tooltest_py --coin=eth cryptocoin
a $tooltest_py --coin=etc cryptocoin
a $tooltest_py --coin=dash cryptocoin
a $tooltest_py --coin=doge cryptocoin
a $tooltest_py --coin=emc cryptocoin
a $tooltest_py --coin=xmr cryptocoin
a $tooltest_py --coin=zec cryptocoin
z $tooltest_py --coin=zec --type=zcash_z cryptocoin
"
[ "$MSYS2" -o "$ARM32" -o "$ARM64" ] && t_tool_skip='z'
[ "$SKIP_ALT_DEP" ] && t_tool_skip='a z'
f_tool='tooltest tests completed'
i_gen='Gentest'
s_gen="The following tests will run '$gentest_py' for BTC and LTC mainnet and testnet"
s_gen="The following tests will run '$gentest_py' for configured coins and address types"
t_gen="
- # speed tests, no verification:
- $gentest_py --coin=btc 1 $rounds
- $gentest_py --coin=btc --type=compressed 1 $rounds
- $gentest_py --coin=btc --type=segwit 1 $rounds
- $gentest_py --coin=btc --type=bech32 1 $rounds
- $gentest_py --coin=ltc 1 $rounds
- $gentest_py --coin=ltc --type=compressed 1 $rounds
- $gentest_py --coin=ltc --type=segwit 1 $rounds
- $gentest_py --coin=ltc --type=bech32 1 $rounds
a $gentest_py --coin=ltc 1 $rounds
a $gentest_py --coin=ltc --type=compressed 1 $rounds
a $gentest_py --coin=ltc --type=segwit 1 $rounds
a $gentest_py --coin=ltc --type=bech32 1 $rounds
- # wallet dumps:
- $gentest_py --type=compressed 1 $REFDIR/btcwallet.dump
- $gentest_py --type=segwit 1 $REFDIR/btcwallet-segwit.dump
- $gentest_py --type=bech32 1 $REFDIR/btcwallet-bech32.dump
- $gentest_py --type=compressed --testnet=1 1 $REFDIR/btcwallet-testnet.dump
- $gentest_py --coin=ltc --type=compressed 1 $REFDIR/litecoin/ltcwallet.dump
- $gentest_py --coin=ltc --type=segwit 1 $REFDIR/litecoin/ltcwallet-segwit.dump
- $gentest_py --coin=ltc --type=bech32 1 $REFDIR/litecoin/ltcwallet-bech32.dump
- $gentest_py --coin=ltc --type=compressed --testnet=1 1 $REFDIR/litecoin/ltcwallet-testnet.dump
a $gentest_py --coin=ltc --type=compressed 1 $REFDIR/litecoin/ltcwallet.dump
a $gentest_py --coin=ltc --type=segwit 1 $REFDIR/litecoin/ltcwallet-segwit.dump
a $gentest_py --coin=ltc --type=bech32 1 $REFDIR/litecoin/ltcwallet-bech32.dump
a $gentest_py --coin=ltc --type=compressed --testnet=1 1 $REFDIR/litecoin/ltcwallet-testnet.dump
- # libsecp256k1 vs python-ecdsa:
- $gentest_py 1:2 $rounds
- $gentest_py --type=segwit 1:2 $rounds
- $gentest_py --type=bech32 1:2 $rounds
- $gentest_py --testnet=1 1:2 $rounds
- $gentest_py --testnet=1 --type=segwit 1:2 $rounds
- $gentest_py --coin=ltc 1:2 $rounds
- $gentest_py --coin=ltc --type=segwit 1:2 $rounds
- $gentest_py --coin=ltc --testnet=1 1:2 $rounds
- $gentest_py --coin=ltc --testnet=1 --type=segwit 1:2 $rounds
- # all backends vs pycoin:
- $gentest_py all:pycoin $rounds
a $gentest_py --coin=ltc 1:2 $rounds
a $gentest_py --coin=ltc --type=segwit 1:2 $rounds
a $gentest_py --coin=ltc --testnet=1 1:2 $rounds
a $gentest_py --coin=ltc --testnet=1 --type=segwit 1:2 $rounds
a # all backends vs pycoin:
a $gentest_py all:pycoin $rounds
"
[ "$SKIP_ALT_DEP" ] && t_gen_skip='a'
f_gen='gentest tests completed'
[ -d .git -a -n "$INSTALL" -a -z "$LIST_CMDS" ] && {

View file

@ -100,6 +100,7 @@ opts_data = {
'options': """
-h, --help Print this help message
--, --longhelp Print help message for long options (common options)
-a, --no-altcoin Skip altcoin tests (WIP)
-A, --no-daemon-autostart Don't start and stop daemons automatically
-B, --bech32 Generate and use Bech32 addresses
-b, --buf-keypress Use buffered keypresses as with real human input

View file

@ -171,6 +171,8 @@ class TestSuiteCfg(TestSuiteBase):
('ETH','True', '5.4321',True),
('ETC','False','5.4321',False)
):
if opt.no_altcoin and coin != 'BTC':
continue
t = self.spawn_test(
args = [
f'--coin={coin}',
@ -207,6 +209,9 @@ class TestSuiteCfg(TestSuiteBase):
def chain_names(self):
if opt.no_altcoin:
return 'skip'
def run(chk,testnet):
for coin,chain_chk in (('ETH',chk),('ETC',None)):
t = self.spawn_test(

View file

@ -87,6 +87,8 @@ class TestSuiteTool(TestSuiteMain,TestSuiteBase):
return t
def tool_extract_key_from_geth_wallet(self):
if opt.no_altcoin:
return 'skip'
fn = 'test/ref/ethereum/geth-wallet.json'
key = '9627ddb68354f5e0ff45fb2da49d7a20a013b7257a83ef4adbbbd87aeaccc75e'
t = self.spawn('mmgen-tool',['-d',self.tmpdir,'extract_key_from_geth_wallet',fn])
@ -95,6 +97,9 @@ class TestSuiteTool(TestSuiteMain,TestSuiteBase):
return t
def tool_api(self):
t = self.spawn('tool_api_test.py',cmd_dir='test/misc')
t = self.spawn(
'tool_api_test.py',
(['no_altcoin'] if opt.no_altcoin else []),
cmd_dir = 'test/misc' )
t.expect('legacy.*compressed.*segwit.*bech32',regex=True)
return t

View file

@ -83,6 +83,8 @@ def do_tests(coin,internal_keccak=False):
class unit_tests:
altcoin_deps = ('eth','xmr','zec')
def btc(self,name,ut):
return do_tests('btc')