diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 74b28dffe..b99e7a94b 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -193,7 +193,10 @@ class IResolver: :return: List of dicts containing 'name', 'class' and 'location' entries """ logger.debug(f"Searching for {cls.object_type.__name__} '{directory}'") - objects = [] + objects: List[Dict[str, Any]] = [] + if not directory.is_dir(): + logger.info(f"'{directory}' is not a directory, skipping.") + return objects for entry in directory.iterdir(): if ( recursive and entry.is_dir() diff --git a/tests/strategy/test_strategy_loading.py b/tests/strategy/test_strategy_loading.py index 5b6f15d11..b794cdc99 100644 --- a/tests/strategy/test_strategy_loading.py +++ b/tests/strategy/test_strategy_loading.py @@ -48,6 +48,10 @@ def test_search_all_strategies_with_failed(): assert len([x for x in strategies if x['class'] is not None]) == 9 assert len([x for x in strategies if x['class'] is None]) == 1 + directory = Path(__file__).parent / "strats_nonexistingdir" + strategies = StrategyResolver.search_all_objects(directory, enum_failed=True) + assert len(strategies) == 0 + def test_load_strategy(default_conf, result): default_conf.update({'strategy': 'SampleStrategy',