Merge bitcoin/bitcoin#32736: wallet: Correct dir iteration error handling
272cd09b79log: Use warning level while scanning wallet dir (MarcoFalke)1777644367qa, wallet: Verify warning when failing to scan (Hodlinator)893e51ffebwallet: Correct dir iteration error handling (Hodlinator) Pull request description: Make wallet DB properly detect and report failure to scan wallet directory. Seems to have been broken since moving from Boost to `std::filesystem`. Found while reviewing: https://github.com/bitcoin/bitcoin/pull/31410#pullrequestreview-2604068753 ACKs for top commit: achow101: ACK272cd09b79maflcko: re-ACK272cd09b79🍽 rkrux: tACK272cd09b79Tree-SHA512: 969afde2e37f885ed0c823dc36d2dbeaa0378639849c6a26f8ac67b4f1997eea95bbcae6d58aef5b716807210f37eb166c0cda7ba1d6caffd34249970833af3a
This commit is contained in:
2 files changed
+31
-14
No files matched your search
@@ -78,6 +78,24 @@ class MultiWalletTest(BitcoinTestFramework):
|
||||
self.stop_nodes()
|
||||
assert_equal(os.path.isfile(wallet_dir(self.default_wallet_name, self.wallet_data_filename)), True)
|
||||
|
||||
self.log.info("Verify warning is emitted when failing to scan the wallets directory")
|
||||
if platform.system() == 'Windows':
|
||||
self.log.warning('Skipping test involving chmod as Windows does not support it.')
|
||||
elif os.geteuid() == 0:
|
||||
self.log.warning('Skipping test involving chmod as it requires a non-root user.')
|
||||
else:
|
||||
self.start_node(0)
|
||||
with self.nodes[0].assert_debug_log(unexpected_msgs=['Error scanning directory entries under'], expected_msgs=[]):
|
||||
result = self.nodes[0].listwalletdir()
|
||||
assert_equal(result, {'wallets': [{'name': 'default_wallet', 'warnings': []}]})
|
||||
os.chmod(data_dir('wallets'), 0)
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=['Error scanning directory entries under']):
|
||||
result = self.nodes[0].listwalletdir()
|
||||
assert_equal(result, {'wallets': []})
|
||||
self.stop_node(0)
|
||||
# Restore permissions
|
||||
os.chmod(data_dir('wallets'), stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
|
||||
|
||||
# create symlink to verify wallet directory path can be referenced
|
||||
# through symlink
|
||||
os.mkdir(wallet_dir('w7'))
|
||||
@@ -129,7 +147,7 @@ class MultiWalletTest(BitcoinTestFramework):
|
||||
os.mkdir(wallet_dir('no_access'))
|
||||
os.chmod(wallet_dir('no_access'), 0)
|
||||
try:
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=['Error scanning']):
|
||||
with self.nodes[0].assert_debug_log(expected_msgs=["Error while scanning wallet dir"]):
|
||||
walletlist = self.nodes[0].listwalletdir()['wallets']
|
||||
finally:
|
||||
# Need to ensure access is restored for cleanup
|
||||
|
||||
Reference in new issue
Block a user