diff options
author | toonn <toonn@toonn.io> | 2018-05-09 00:01:41 +0200 |
---|---|---|
committer | toonn <toonn@toonn.io> | 2018-05-09 00:01:41 +0200 |
commit | ea943048d453bff900d310110ac7227bcc126683 (patch) | |
tree | e1bae31b11b5afdd6bec49d93a8e29df0cc3666d | |
parent | 9fb3fae3c34527a24a8c8b294a716aa6ff7f74f0 (diff) | |
parent | 2c4322cac434f767ede180b9724f77e2a7845367 (diff) | |
download | ranger-ea943048d453bff900d310110ac7227bcc126683.tar.gz |
Merge branch 'start-path-resolving'
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | ranger/core/main.py | 23 | ||||
-rw-r--r-- | tests/ranger/core/__init__.py | 0 | ||||
-rw-r--r-- | tests/ranger/core/test_main.py | 18 |
4 files changed, 40 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore index 88c75b90..73ca85e6 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ /ranger_fm.egg-info /stuff/* + +.idea +.pytest_cache diff --git a/ranger/core/main.py b/ranger/core/main.py index 3d36a357..e39c0501 100644 --- a/ranger/core/main.py +++ b/ranger/core/main.py @@ -93,10 +93,7 @@ def main( args.selectfile = os.path.abspath(args.selectfile) args.paths.insert(0, os.path.dirname(args.selectfile)) - if args.paths: - paths = [p[7:] if p.startswith('file:///') else p for p in args.paths] - else: - paths = [os.environ.get('PWD', os.getcwd())] + paths = get_paths(args) paths_inaccessible = [] for path in paths: try: @@ -235,6 +232,24 @@ https://github.com/ranger/ranger/issues return exit_code # pylint: disable=lost-exception +def get_paths(args): + if args.paths: + prefix = 'file:///' + prefix_length = len(prefix) + paths = [path[prefix_length:] if path.startswith(prefix) else path for path in args.paths] + else: + start_directory = os.environ.get('PWD') + is_valid_start_directory = start_directory and os.path.exists(start_directory) + if not is_valid_start_directory: + start_directory = __get_home_directory() + paths = [start_directory] + return paths + + +def __get_home_directory(): + return os.path.expanduser('~') + + def xdg_path(env_var): path = os.environ.get(env_var) if path and os.path.isabs(path): diff --git a/tests/ranger/core/__init__.py b/tests/ranger/core/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/ranger/core/__init__.py diff --git a/tests/ranger/core/test_main.py b/tests/ranger/core/test_main.py new file mode 100644 index 00000000..d992b8a7 --- /dev/null +++ b/tests/ranger/core/test_main.py @@ -0,0 +1,18 @@ +import collections +import os + +from ranger.core import main + + +def test_get_paths(): + args_tuple = collections.namedtuple('args', 'paths') + args = args_tuple(paths=None) + + paths = main.get_paths(args) + + for path in paths: + assert os.path.exists(path) + + +if __name__ == '__main__': + test_get_paths() |