From afd2ed4e51b789fb17446bed0bcc278a977f75f5 Mon Sep 17 00:00:00 2001 From: Vladimir Iakovlev Date: Mon, 22 Aug 2016 05:45:27 +0300 Subject: [PATCH] #540: Fix code style, add test --- tests/test_conf.py | 20 ++++++++++++++++++++ thefuck/conf.py | 25 +++++++++++-------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/tests/test_conf.py b/tests/test_conf.py index b8ab5d9f..f496155c 100644 --- a/tests/test_conf.py +++ b/tests/test_conf.py @@ -1,5 +1,6 @@ import pytest import six +import os from mock import Mock from thefuck import const @@ -101,3 +102,22 @@ class TestInitializeSettingsFile(object): for setting in const.DEFAULT_SETTINGS.items(): assert '# {} = {}\n'.format(*setting) in settings_file_contents settings_file.close() + + +@pytest.mark.parametrize('legacy_dir_exists, xdg_config_home, result', [ + (False, '~/.config', '~/.config/thefuck'), + (False, '/user/test/config/', '/user/test/config/thefuck'), + (True, '~/.config', '~/.thefuck'), + (True, '/user/test/config/', '~/.thefuck')]) +def test_get_user_dir_path(mocker, environ, settings, legacy_dir_exists, + xdg_config_home, result): + mocker.patch('thefuck.conf.Path.is_dir', + return_value=legacy_dir_exists) + + if xdg_config_home is not None: + environ['XDG_CONFIG_HOME'] = xdg_config_home + else: + environ.pop('XDG_CONFIG_HOME', None) + + path = settings._get_user_dir_path().as_posix() + assert path == os.path.expanduser(result) diff --git a/thefuck/conf.py b/thefuck/conf.py index 9cfe10dc..7d25ce3c 100644 --- a/thefuck/conf.py +++ b/thefuck/conf.py @@ -40,21 +40,18 @@ class Settings(dict): settings_file.write(u'# {} = {}\n'.format(*setting)) def _get_user_dir_path(self): - """returns Path object representing the user config resource""" - xdg_config_home = os.getenv("XDG_CONFIG_HOME", "~/.config") - user_dir_modern = Path(xdg_config_home, 'thefuck').expanduser() - user_dir_legacy = Path('~', '.thefuck').expanduser() + """Returns Path object representing the user config resource""" + xdg_config_home = os.environ.get('XDG_CONFIG_HOME', '~/.config') + user_dir = Path(xdg_config_home, 'thefuck').expanduser() + legacy_user_dir = Path('~', '.thefuck').expanduser() - # default to standards-based location - user_dir = user_dir_modern - - # for backward compatibility use legacy '~/.thefuck' if it exists - if user_dir_legacy.is_dir(): - user_dir = user_dir_legacy - message = 'config path {} is deprecated. please move to {}' - warn(message.format(user_dir_legacy, user_dir_modern)) - - return user_dir + # For backward compatibility use legacy '~/.thefuck' if it exists: + if legacy_user_dir.is_dir(): + warn(u'Config path {} is deprecated. Please move to {}'.format( + legacy_user_dir, user_dir)) + return legacy_user_dir + else: + return user_dir def _setup_user_dir(self): """Returns user config dir, create it when it doesn't exist."""