import re from unittest.mock import MagicMock import pytest from freqtrade.state import RunMode from freqtrade.tests.conftest import get_args, log_has from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_list_exchanges) def test_setup_utils_configuration(): args = [ '--config', 'config.json.example', ] config = setup_utils_configuration(get_args(args), RunMode.OTHER) assert "exchange" in config assert config['exchange']['dry_run'] is True assert config['exchange']['key'] == '' assert config['exchange']['secret'] == '' def test_list_exchanges(capsys): args = [ "list-exchanges", ] start_list_exchanges(get_args(args)) captured = capsys.readouterr() assert re.match(r"Exchanges supported by ccxt and available.*", captured.out) assert re.match(r".*binance,.*", captured.out) assert re.match(r".*bittrex,.*", captured.out) # Test with --one-column args = [ "list-exchanges", "--one-column", ] start_list_exchanges(get_args(args)) captured = capsys.readouterr() assert not re.match(r"Exchanges supported by ccxt and available.*", captured.out) assert re.search(r"^binance$", captured.out, re.MULTILINE) assert re.search(r"^bittrex$", captured.out, re.MULTILINE) def test_create_datadir_failed(caplog): args = [ "create-userdir", ] with pytest.raises(SystemExit): start_create_userdir(get_args(args)) assert log_has("`create-userdir` requires --userdir to be set.", caplog.record_tuples) def test_create_datadir(caplog, mocker): cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) args = [ "create-userdir", "--userdir", "/temp/freqtrade/test" ] start_create_userdir(get_args(args)) assert cud.call_count == 1 assert len(caplog.record_tuples) == 0