Files
pallectrum/tests/test_contacts.py

33 lines
1.3 KiB
Python
Raw Permalink Normal View History

contacts: fix adding new contacts This is a regression from 7ca89f56eef6d2d7af6fd7bacb2d29d9b73025d2, which introduced StoredList. The newly added test was failing without the change. ``` Traceback (most recent call last): File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1786, in new_contact_dialog self.set_contact(line2.text(), line1.text()) File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1435, in set_contact self.contacts[address] = ('address', label) File "/home/user/wspace/electrum/electrum/contacts.py", line 75, in __setitem__ self.save() File "/home/user/wspace/electrum/electrum/contacts.py", line 62, in save self.db.put('contacts', dict(self)) File "/home/user/wspace/electrum/electrum/json_db.py", line 42, in wrapper return func(self, *args, **kwargs) File "/home/user/wspace/electrum/electrum/json_db.py", line 318, in put self.data[key] = copy.deepcopy(value) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 161, in deepcopy rv = reductor(4) TypeError: cannot pickle '_thread.RLock' object ```
2023-11-01 17:28:29 +00:00
import os
from electrum.simple_config import SimpleConfig
from electrum.wallet import Abstract_Wallet
contacts: fix adding new contacts This is a regression from 7ca89f56eef6d2d7af6fd7bacb2d29d9b73025d2, which introduced StoredList. The newly added test was failing without the change. ``` Traceback (most recent call last): File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1786, in new_contact_dialog self.set_contact(line2.text(), line1.text()) File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1435, in set_contact self.contacts[address] = ('address', label) File "/home/user/wspace/electrum/electrum/contacts.py", line 75, in __setitem__ self.save() File "/home/user/wspace/electrum/electrum/contacts.py", line 62, in save self.db.put('contacts', dict(self)) File "/home/user/wspace/electrum/electrum/json_db.py", line 42, in wrapper return func(self, *args, **kwargs) File "/home/user/wspace/electrum/electrum/json_db.py", line 318, in put self.data[key] = copy.deepcopy(value) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 161, in deepcopy rv = reductor(4) TypeError: cannot pickle '_thread.RLock' object ```
2023-11-01 17:28:29 +00:00
from electrum.daemon import Daemon
from . import ElectrumTestCase
from . import restore_wallet_from_text__for_unittest
contacts: fix adding new contacts This is a regression from 7ca89f56eef6d2d7af6fd7bacb2d29d9b73025d2, which introduced StoredList. The newly added test was failing without the change. ``` Traceback (most recent call last): File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1786, in new_contact_dialog self.set_contact(line2.text(), line1.text()) File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1435, in set_contact self.contacts[address] = ('address', label) File "/home/user/wspace/electrum/electrum/contacts.py", line 75, in __setitem__ self.save() File "/home/user/wspace/electrum/electrum/contacts.py", line 62, in save self.db.put('contacts', dict(self)) File "/home/user/wspace/electrum/electrum/json_db.py", line 42, in wrapper return func(self, *args, **kwargs) File "/home/user/wspace/electrum/electrum/json_db.py", line 318, in put self.data[key] = copy.deepcopy(value) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 161, in deepcopy rv = reductor(4) TypeError: cannot pickle '_thread.RLock' object ```
2023-11-01 17:28:29 +00:00
class TestContacts(ElectrumTestCase):
TESTNET = True
def setUp(self):
super().setUp()
self.config = SimpleConfig({'electrum_path': self.electrum_path})
self.wallet_path = os.path.join(self.electrum_path, "somewallet1")
async def test_saving_contacts(self):
text = 'cross end slow expose giraffe fuel track awake turtle capital ranch pulp'
d = restore_wallet_from_text__for_unittest(text, path=self.wallet_path, config=self.config)
contacts: fix adding new contacts This is a regression from 7ca89f56eef6d2d7af6fd7bacb2d29d9b73025d2, which introduced StoredList. The newly added test was failing without the change. ``` Traceback (most recent call last): File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1786, in new_contact_dialog self.set_contact(line2.text(), line1.text()) File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 1435, in set_contact self.contacts[address] = ('address', label) File "/home/user/wspace/electrum/electrum/contacts.py", line 75, in __setitem__ self.save() File "/home/user/wspace/electrum/electrum/contacts.py", line 62, in save self.db.put('contacts', dict(self)) File "/home/user/wspace/electrum/electrum/json_db.py", line 42, in wrapper return func(self, *args, **kwargs) File "/home/user/wspace/electrum/electrum/json_db.py", line 318, in put self.data[key] = copy.deepcopy(value) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.10/copy.py", line 271, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.10/copy.py", line 146, in deepcopy y = copier(x, memo) File "/usr/lib/python3.10/copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.10/copy.py", line 161, in deepcopy rv = reductor(4) TypeError: cannot pickle '_thread.RLock' object ```
2023-11-01 17:28:29 +00:00
w = d['wallet'] # type: Abstract_Wallet
w.contacts["myNNuLYNgHE92nGQuJd5mXo6gy9gKXEDyQ"] = ("address", "alice")
w.contacts["tb1q4syjltptqwhe62t3u5gwz9nsw87kmcwx003z05"] = ("address", "bob")
self.assertEqual(2, len(w.contacts))
await w.stop()
del w
# re-open wallet from disk
w = Daemon._load_wallet(self.wallet_path, password=None, config=self.config)
self.assertEqual(2, len(w.contacts))
w.contacts["n4STqqWPrvkapAyvXY2wJzfoKMnuJbDWoH"] = ("address", "carol")
self.assertEqual(3, len(w.contacts))