From e5d725a96bc23d5e61637f872a22de444ee378b7 Mon Sep 17 00:00:00 2001 From: Ahmed Muawia Khan Date: Thu, 13 Sep 2018 19:30:12 +0200 Subject: [PATCH] Address comments I - neatpicks - Add tests for sys exit --- bigchaindb/commands/bigchaindb.py | 5 ++--- bigchaindb/core.py | 3 ++- bigchaindb/utils.py | 11 +++++------ tests/tendermint/test_integration.py | 11 +++++++++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/bigchaindb/commands/bigchaindb.py b/bigchaindb/commands/bigchaindb.py index cd657857..96d555bb 100644 --- a/bigchaindb/commands/bigchaindb.py +++ b/bigchaindb/commands/bigchaindb.py @@ -284,10 +284,9 @@ def run_start(args): def run_tendermint_version(args): """Show the supported Tendermint version(s)""" supported_tm_ver = { - "description": "BigchainDB supports the following Tendermint version(s)", - "tendermint": [], + 'description': 'BigchainDB supports the following Tendermint version(s)', + 'tendermint': __tm_supported_versions__, } - [supported_tm_ver["tendermint"].append(ver) for ver in __tm_supported_versions__] print(json.dumps(supported_tm_ver, indent=4, sort_keys=True)) diff --git a/bigchaindb/core.py b/bigchaindb/core.py index 995ed8bf..7800bc53 100644 --- a/bigchaindb/core.py +++ b/bigchaindb/core.py @@ -126,7 +126,8 @@ class App(BaseApplication): f" Currently, BigchainDB only supports {__tm_supported_versions__} .Exiting!") sys.exit(1) except AttributeError: - logger.debug("Skipping Tendermint version check.") + logger.info("Tendermint version not found. Exiting!") + sys.exit(1) r = ResponseInfo() block = self.bigchaindb.get_latest_block() diff --git a/bigchaindb/utils.py b/bigchaindb/utils.py index a0f72a68..0337f97e 100644 --- a/bigchaindb/utils.py +++ b/bigchaindb/utils.py @@ -198,11 +198,10 @@ def check_tendermint_version(running_tm_ver): :rtype: bool """ tm_ver = running_tm_ver.split('-') - if len(tm_ver) >= 1: - for ver in __tm_supported_versions__: - if version.parse(ver) == version.parse(tm_ver[0]): - return True - else: - return False + if not tm_ver: + return False + for ver in __tm_supported_versions__: + if version.parse(ver) == version.parse(tm_ver[0]): + return True else: return False diff --git a/tests/tendermint/test_integration.py b/tests/tendermint/test_integration.py index d16c34ad..da373442 100644 --- a/tests/tendermint/test_integration.py +++ b/tests/tendermint/test_integration.py @@ -141,3 +141,14 @@ def test_post_transaction_responses(tendermint_ws_url, b): code, message = b.write_transaction(double_spend, mode) assert code == 500 assert message == 'Transaction validation failed' + + +@pytest.mark.bdb +def test_exit_when_tm_ver_not_supported(b): + from bigchaindb import App + + app = App(b) + p = ProtocolHandler(app) + + with pytest.raises(SystemExit): + p.process('info', types.Request(info=types.RequestInfo(version='2')))