diff --git a/moban/utils.py b/moban/utils.py index 00b13774..db66e7a0 100644 --- a/moban/utils.py +++ b/moban/utils.py @@ -187,14 +187,12 @@ def get_repo_name(repo_url): def get_moban_home(): - home_dir = os.path.expanduser("~") - if os.path.exists(home_dir): - return os.path.join( - home_dir, - constants.MOBAN_DIR_NAME_UNDER_USER_HOME, - constants.MOBAN_REPOS_DIR_NAME, - ) - raise IOError("Failed to find user home directory") + from appdirs import user_cache_dir + home_dir = user_cache_dir(appname=constants.PROGRAM_NAME) + return os.path.join( + home_dir, + constants.MOBAN_REPOS_DIR_NAME, + ) def _remove_dot_git(repo_name): diff --git a/tests/test_utils.py b/tests/test_utils.py index cfa7b12d..4fdd9b2e 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -10,6 +10,7 @@ from moban.utils import ( mkdir_p, get_repo_name, + get_moban_home, write_file_out, file_permissions, get_template_path, @@ -177,3 +178,9 @@ def test_get_repo_name(): actual = [get_repo_name(repo) for repo in repos] expected = ["repo", "repo"] eq_(expected, actual) + + +@patch('appdirs.user_cache_dir', return_value='root') +def test_get_moban_home(_): + actual = get_moban_home() + eq_(os.path.join('root', 'repos'), actual)