minor fixes and cleanups

This commit is contained in:
The MMGen Project 2022-06-11 16:11:01 +00:00
commit 729dc369fd
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
5 changed files with 31 additions and 12 deletions

View file

@ -36,7 +36,12 @@ class EthereumTrackingWallet(TrackingWallet):
return addr in self.data_root
def init_empty(self):
self.data = { 'coin': self.proto.coin, 'accounts': {}, 'tokens': {} }
self.data = {
'coin': self.proto.coin,
'network': self.proto.network.upper(),
'accounts': {},
'tokens': {},
}
def upgrade_wallet_maybe(self):
@ -70,6 +75,11 @@ class EthereumTrackingWallet(TrackingWallet):
add_token_params_fields()
upgraded = True
if not 'network' in self.data:
ymsg(f'Upgrading {self.desc} (v3->v4: network field added)')
self.data['network'] = self.proto.network.upper()
upgraded = True
if upgraded:
self.force_write()
msg(f'{self.desc} upgraded successfully!')

View file

@ -203,7 +203,7 @@ class TrackingWallet(MMGenObject,metaclass=AsyncInit):
self.mode = mode_save
@write_mode
def write_changed(self,data):
def write_changed(self,data,quiet):
from ..fileutil import write_data_to_file
write_data_to_file(
self.tw_fn,
@ -211,25 +211,24 @@ class TrackingWallet(MMGenObject,metaclass=AsyncInit):
desc = f'{self.base_desc} data',
ask_overwrite = False,
ignore_opt_outdir = True,
quiet = True,
check_data = True,
quiet = quiet,
check_data = True, # die if wallet has been altered by another program
cmp_data = self.orig_data )
self.orig_data = data
def write(self): # use 'check_data' to check wallet hasn't been altered by another program
def write(self,quiet=True):
if not self.use_tw_file:
dmsg("'use_tw_file' is False, doing nothing")
return
dmsg(f'write(): checking if {self.desc} data has changed')
wdata = json.dumps(self.data)
if self.orig_data != wdata:
if g.debug:
print_stack_trace(f'TW DATA CHANGED {self!r}')
print_diff(self.orig_data,wdata,from_json=True)
self.write_changed(wdata)
self.write_changed(wdata,quiet=quiet)
elif g.debug:
msg('Data is unchanged\n')

View file

@ -650,7 +650,7 @@ def get_subclasses(cls,names=False):
yield j
return tuple((c.__name__ for c in gen(cls)) if names else gen(cls))
def base_proto_subclass(cls,proto,subdir,modname):
def base_proto_subclass(cls,proto,subdir,modname,sub_clsname=None):
"""
magic module loading and class selection
"""
@ -658,13 +658,17 @@ def base_proto_subclass(cls,proto,subdir,modname):
proto.base_proto.lower(),
subdir + '.' if subdir else '',
modname )
clsname = (
proto.mod_clsname
+ ('Token' if proto.tokensym else '')
+ cls.__name__ )
import importlib
return getattr(importlib.import_module(modpath),clsname)
if sub_clsname:
return getattr(getattr(importlib.import_module(modpath),clsname),sub_clsname)
else:
return getattr(importlib.import_module(modpath),clsname)
# decorator for TrackingWallet
def write_mode(orig_func):

View file

@ -30,10 +30,10 @@ def overlay_setup(repo_root):
os.path.join(destdir,link_fn) )
overlay_dir = get_overlay_dir(repo_root)
fakemod_root = os.path.join(repo_root,'test','overlay','fakemods')
make_link = os.symlink if sys.platform == 'linux' else shutil.copy2
if not os.path.exists(os.path.join(overlay_dir,'mmgen','main.py')):
fakemod_root = os.path.join(repo_root,'test','overlay','fakemods')
make_link = os.symlink if sys.platform == 'linux' else shutil.copy2
sys.stderr.write('Setting up overlay tree\n')
shutil.rmtree(overlay_dir,ignore_errors=True)
for d in (

View file

@ -56,6 +56,7 @@ vbal2 = '99.997088755'
vbal3 = '1.23142525'
vbal4 = '127.0287909'
vbal5 = '1000126.14828654512345678'
vbal6 = '1000124.91944564512345678'
bals = {
'1': [ ('98831F3A:E:1','123.456')],
@ -301,6 +302,7 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
('token_edit_label1', f'adding label to addr #{del_addrs[0]} in {coin} token tracking wallet'),
('remove_addr1', f'removing addr #{del_addrs[0]} from {coin} tracking wallet'),
('twview6', 'twview (balance reduced after address removal)'),
('remove_addr2', f'removing addr #{del_addrs[1]} from {coin} tracking wallet'),
('token_remove_addr1', f'removing addr #{del_addrs[0]} from {coin} token tracking wallet'),
('token_remove_addr2', f'removing addr #{del_addrs[1]} from {coin} token tracking wallet'),
@ -1080,7 +1082,9 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
return self.token_bal(n='3')
def del_dev_addr(self):
return self.spawn('mmgen-tool', self.eth_args + ['remove_address',dfl_devaddr])
t = self.spawn('mmgen-tool', self.eth_args + ['remove_address', dfl_devaddr])
t.expect(f"'{dfl_devaddr}' deleted")
return t
def bal1_getbalance(self):
return self.bal_getbalance('1',etc_adj=True)
@ -1199,6 +1203,8 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
return self.twview(tool_args=['wide=1','minconf=999999999'])
def twview5(self):
return self.twview(tool_args=['wide=1','minconf=0'])
def twview6(self):
return self.twview(expect_str=vbal6)
def token_twview1(self):
return self.twview(args=['--token=mm1'])