mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-26 03:11:16 +02:00
Merge bitcoin/bitcoin#33001: test: Do not pass tests on unhandled exceptions
faa3e68411
test: Log KeyboardInterrupt as exception (MarcoFalke)fa30b34026
test: Do not pass tests on unhandled exceptions (MarcoFalke) Pull request description: Currently the functional tests are problematic, because they pass, even if they encounter an unhanded exception. Fix this by handling all exceptions: Catch `BaseException` as fallback and mark it as failure. Can be tested via: ```diff diff --git a/test/functional/wallet_disable.py b/test/functional/wallet_disable.py index da6e5d408f..ecc41fb041 100755 --- a/test/functional/wallet_disable.py +++ b/test/functional/wallet_disable.py @@ -19,6 +19,7 @@ class DisableWalletTest (BitcoinTestFramework): self.wallet_names = [] def run_test (self): + import sys;sys.exit("fatal error") # Make sure wallet is really disabled assert_raises_rpc_error(-32601, 'Method not found', self.nodes[0].getwalletinfo) x = self.nodes[0].validateaddress('3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy') ``` Previously, the test would pass. With this patch, it would fail. ACKs for top commit: enirox001: Looks good to me—ACKfaa3e68
stickies-v: re-ACKfaa3e68411
pablomartin4btc: tACKfaa3e68411
Tree-SHA512: 11ecd5201982e2c776e48d98834b17c15a415306a95524bc702daeba20a316aac797748e9592be8db575597804f149ee7ef104416037cc9e5891758625810e2d
This commit is contained in:
@@ -194,26 +194,14 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
else:
|
||||
self.run_test()
|
||||
|
||||
except JSONRPCException:
|
||||
self.log.exception("JSONRPC error")
|
||||
self.success = TestStatus.FAILED
|
||||
except SkipTest as e:
|
||||
self.log.warning("Test Skipped: %s" % e.message)
|
||||
self.success = TestStatus.SKIPPED
|
||||
except AssertionError:
|
||||
self.log.exception("Assertion failed")
|
||||
self.success = TestStatus.FAILED
|
||||
except KeyError:
|
||||
self.log.exception("Key error")
|
||||
self.success = TestStatus.FAILED
|
||||
except subprocess.CalledProcessError as e:
|
||||
self.log.exception("Called Process failed with '{}'".format(e.output))
|
||||
self.log.exception(f"Called Process failed with stdout='{e.stdout}'; stderr='{e.stderr}';")
|
||||
self.success = TestStatus.FAILED
|
||||
except Exception:
|
||||
self.log.exception("Unexpected exception caught during testing")
|
||||
self.success = TestStatus.FAILED
|
||||
except KeyboardInterrupt:
|
||||
self.log.warning("Exiting after keyboard interrupt")
|
||||
except BaseException:
|
||||
self.log.exception("Unexpected exception")
|
||||
self.success = TestStatus.FAILED
|
||||
finally:
|
||||
exit_code = self.shutdown()
|
||||
|
Reference in New Issue
Block a user