From 5e73a2ea37339303eb115b57d42872e9134f2a52 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Thu, 24 Mar 2016 18:52:49 +0100 Subject: [PATCH] dirbrowser: move parent dir logic to own function --- qutebrowser/browser/network/filescheme.py | 14 ++++++++++- tests/unit/browser/network/test_filescheme.py | 23 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/network/filescheme.py b/qutebrowser/browser/network/filescheme.py index becb67d66..d4c20fd4d 100644 --- a/qutebrowser/browser/network/filescheme.py +++ b/qutebrowser/browser/network/filescheme.py @@ -68,6 +68,18 @@ def is_root(directory): return os.path.dirname(directory) == directory +def parent_dir(directory): + """Return the parent directory for the given directory. + + Args: + directory: The path to the directory. + + Return: + The path to the parent directory. + """ + return os.path.normpath(os.path.join(directory, os.pardir)) + + def dirbrowser_html(path): """Get the directory browser web page. @@ -82,7 +94,7 @@ def dirbrowser_html(path): if is_root(path): parent = None else: - parent = os.path.normpath(os.path.join(path, '..')) + parent = parent_dir(path) try: all_files = os.listdir(path) diff --git a/tests/unit/browser/network/test_filescheme.py b/tests/unit/browser/network/test_filescheme.py index 1507d9a00..e57b5ee55 100644 --- a/tests/unit/browser/network/test_filescheme.py +++ b/tests/unit/browser/network/test_filescheme.py @@ -77,6 +77,29 @@ class TestIsRoot: assert filescheme.is_root(directory) == is_root +class TestParentDir: + + @pytest.mark.windows + @pytest.mark.parametrize('directory, parent', [ + ('C:\\foo\\bar', 'C:\\foo'), + ('C:\\foo', 'C:\\'), + ('C:\\foo\\', 'C:\\'), + ('C:\\', 'C:\\'), + ]) + def test_windows(self, directory, parent): + assert filescheme.parent_dir(directory) == parent + + @pytest.mark.posix + @pytest.mark.parametrize('directory, parent', [ + ('/home/foo', '/home'), + ('/home', '/'), + ('/home/', '/'), + ('/', '/'), + ]) + def test_posix(self, directory, parent): + assert filescheme.parent_dir(directory) == parent + + def _file_url(path): """Return a file:// url (as string) for the given LocalPath.