From ae356493665270b557e93099970e78377a8b185d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:49:25 +0100 Subject: [PATCH] improve pairlistmanager errorhandling --- freqtrade/pairlist/pairlistmanager.py | 12 +++++++----- tests/pairlist/test_pairlist.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 09e024497..f29f89abf 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -23,17 +23,19 @@ class PairListManager(): self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._pairlists: List[IPairList] = [] self._tickers_needed = False - pairlists = self._config.get('pairlists', None) - if not pairlists: - pairlists = [{'method': "StaticPairList"}] - for pl in pairlists: + + for pl in self._config.get('pairlists', None): + if 'method' not in pl: + logger.warning(f"No method in {pl}") + continue pairl = PairListResolver(pl.get('method'), exchange, self, config, pl.get('config')).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) + if not self._pairlists: - raise OperationalException("No Pairlist defined!!") + raise OperationalException("No Pairlist defined!") @property def whitelist(self) -> List[str]: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index d19c18715..017f78561 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -257,3 +257,19 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): bot.pairlists.refresh_pairlist() # Time should not be updated. assert bot.pairlists._pairlists[0]._last_refresh == lrf + + +def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): + del whitelist_conf['pairlists'][0]['method'] + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + with pytest.raises(OperationalException, + match=r"No Pairlist defined!"): + get_patched_freqtradebot(mocker, whitelist_conf) + assert log_has_re("No method in .*", caplog) + + whitelist_conf['pairlists'] = [] + + with pytest.raises(OperationalException, + match=r"No Pairlist defined!"): + get_patched_freqtradebot(mocker, whitelist_conf) +