scripts/create-token.py, test.py oneshot_warning; minor fixes

This commit is contained in:
The MMGen Project 2021-09-05 18:40:44 +00:00
commit 9c5f4de936
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 16 additions and 15 deletions

View file

@ -24,9 +24,9 @@ from mmgen.common import *
ti = namedtuple('token_param_info',['default','conversion','test'])
class TokenData:
fields = ('decimals','supply','name','symbol','owner_addr')
decimals = ti('18', int, lambda s: s.isdigit() and 0 < int(s) <= 36)
decimals = ti('18', int, lambda s: s.isascii() and s.isdigit() and 0 < int(s) <= 36)
name = ti(None, str, lambda s: s.isascii() and s.isprintable() and len(s) < 256)
supply = ti(None, int, lambda s: s.isdigit() and 0 < int(s) <= 2**256 - 1)
supply = ti(None, int, lambda s: s.isascii() and s.isdigit() and 0 < int(s) <= 2**256 - 1)
symbol = ti(None, str, lambda s: s.isascii() and s.isalnum() and len(s) <= 20)
owner_addr = ti(None, str, lambda s: s.isascii() and s.isalnum() and len(s) == 40) # checked separately
@ -180,20 +180,19 @@ def create_src(proto,template,token_data,owner_addr):
def gen():
for k in token_data.fields:
field = getattr(token_data,k)
val = (
owner_addr if k == 'owner_addr' else
getattr(opt,k) if getattr(opt,k,None) else
field.default if field.default is not None else
die(1,f'The --{k} option must be specified')
)
if k == 'owner_addr':
from mmgen.obj import is_coin_addr
if not is_coin_addr( proto, owner_addr.lower() ):
die(1,f'{owner_addr}: not a valid {proto.coin} coin address')
val = '0x' + val
elif not field.test(val):
die(1,f'{val!r}: invalid parameter for option --{k}')
val = '0x' + owner_addr
else:
val = (
getattr(opt,k) if getattr(opt,k,None) else
field.default if field.default is not None else
die(1,f'The --{k} option must be specified')
)
if not field.test(val):
die(1,f'{val!r}: invalid parameter for option --{k}')
yield(k,field.conversion(val))

View file

@ -123,8 +123,8 @@ class TestSuiteOutput(TestSuiteBase):
def oneshot_warning(self):
t = self.spawn('test/misc/oneshot_warning.py',cmd_dir='.')
t.expect('pw\nwg1')
for s in (
'pw\nwg1',
'foo is experimental',
'wg2', 'The bar command is dangerous',
'wg3', 'baz variant alpha',
@ -132,12 +132,14 @@ class TestSuiteOutput(TestSuiteBase):
'w1', 'foo variant alpha',
'w2', 'foo variant beta',
'w3', 'bar is experimental',
'bottom',
'pw',
"passphrase from file 'A'",
"passphrase from file 'B'",
'bottom',
'wg1\nwg2\nwg3\nwg4\nw1\nw2\nw3',
'pw',
"passphrase from file 'A'",
"passphrase from file 'B'",
'wg1\nwg2\nwg3\nwg4\nw1\nw2\nw3',
'bottom',
):
t.expect(s)