Create datadir when not exists
This commit is contained in:
parent
c337a931c2
commit
a54d8f0e16
@ -152,13 +152,16 @@ class Configuration(object):
|
|||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
def _create_default_datadir(self, config: Dict[str, Any]) -> str:
|
def _create_datadir(self, config: Dict[str, Any], datadir: Optional[str] = None) -> str:
|
||||||
|
if not datadir:
|
||||||
|
# set datadir
|
||||||
exchange_name = config.get('exchange', {}).get('name').lower()
|
exchange_name = config.get('exchange', {}).get('name').lower()
|
||||||
default_path = os.path.join('user_data', 'data', exchange_name)
|
datadir = os.path.join('user_data', 'data', exchange_name)
|
||||||
if not os.path.isdir(default_path):
|
|
||||||
os.makedirs(default_path)
|
if not os.path.isdir(datadir):
|
||||||
logger.info(f'Created data directory: {default_path}')
|
os.makedirs(datadir)
|
||||||
return default_path
|
logger.info(f'Created data directory: {datadir}')
|
||||||
|
return datadir
|
||||||
|
|
||||||
def _load_backtesting_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
|
def _load_backtesting_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
@ -198,9 +201,9 @@ class Configuration(object):
|
|||||||
|
|
||||||
# If --datadir is used we add it to the configuration
|
# If --datadir is used we add it to the configuration
|
||||||
if 'datadir' in self.args and self.args.datadir:
|
if 'datadir' in self.args and self.args.datadir:
|
||||||
config.update({'datadir': self.args.datadir})
|
config.update({'datadir': self._create_datadir(config, self.args.datadir)})
|
||||||
else:
|
else:
|
||||||
config.update({'datadir': self._create_default_datadir(config)})
|
config.update({'datadir': self._create_datadir(config, None)})
|
||||||
logger.info('Using data folder: %s ...', config.get('datadir'))
|
logger.info('Using data folder: %s ...', config.get('datadir'))
|
||||||
|
|
||||||
# If -r/--refresh-pairs-cached is used we add it to the configuration
|
# If -r/--refresh-pairs-cached is used we add it to the configuration
|
||||||
|
@ -202,10 +202,11 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
|
|||||||
assert 'export' not in config
|
assert 'export' not in config
|
||||||
|
|
||||||
|
|
||||||
def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None:
|
def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None:
|
||||||
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
||||||
read_data=json.dumps(default_conf)
|
read_data=json.dumps(default_conf)
|
||||||
))
|
))
|
||||||
|
mocker.patch('freqtrade.configuration.Configuration._create_datadir', lambda s, c, x: x)
|
||||||
|
|
||||||
args = [
|
args = [
|
||||||
'--config', 'config.json',
|
'--config', 'config.json',
|
||||||
|
@ -46,10 +46,11 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
|
|||||||
assert 'stoploss_range' not in config
|
assert 'stoploss_range' not in config
|
||||||
|
|
||||||
|
|
||||||
def test_setup_configuration_with_arguments(mocker, edge_conf, caplog) -> None:
|
def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> None:
|
||||||
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
||||||
read_data=json.dumps(edge_conf)
|
read_data=json.dumps(edge_conf)
|
||||||
))
|
))
|
||||||
|
mocker.patch('freqtrade.configuration.Configuration._create_datadir', lambda s, c, x: x)
|
||||||
|
|
||||||
args = [
|
args = [
|
||||||
'--config', 'config.json',
|
'--config', 'config.json',
|
||||||
|
@ -247,6 +247,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
|
|||||||
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
||||||
read_data=json.dumps(default_conf)
|
read_data=json.dumps(default_conf)
|
||||||
))
|
))
|
||||||
|
mocker.patch('freqtrade.configuration.Configuration._create_datadir', lambda s, c, x: x)
|
||||||
|
|
||||||
arglist = [
|
arglist = [
|
||||||
'--config', 'config.json',
|
'--config', 'config.json',
|
||||||
@ -487,3 +488,13 @@ def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None:
|
|||||||
|
|
||||||
def test_validate_default_conf(default_conf) -> None:
|
def test_validate_default_conf(default_conf) -> None:
|
||||||
validate(default_conf, constants.CONF_SCHEMA, Draft4Validator)
|
validate(default_conf, constants.CONF_SCHEMA, Draft4Validator)
|
||||||
|
|
||||||
|
|
||||||
|
def test__create_datadir(mocker, default_conf, caplog) -> None:
|
||||||
|
mocker.patch('os.path.isdir', MagicMock(return_value=False))
|
||||||
|
md = MagicMock()
|
||||||
|
mocker.patch('os.makedirs', md)
|
||||||
|
cfg = Configuration(Namespace())
|
||||||
|
cfg._create_datadir(default_conf, '/foo/bar')
|
||||||
|
assert md.call_args[0][0] == "/foo/bar"
|
||||||
|
assert log_has('Created data directory: /foo/bar', caplog.record_tuples)
|
||||||
|
Loading…
Reference in New Issue
Block a user