diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-04 19:18:19 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-04 19:49:03 +0100 |
commit | e513745e205423df2255e35768b0ece7d1d74b36 (patch) | |
tree | 8e365acb9362c6be9b8cd68b6c05d37884624981 | |
parent | 1a5b95a745b0317923894d5a7383c5f2fec2fd4b (diff) | |
download | qutebrowser-e513745e205423df2255e35768b0ece7d1d74b36.tar.gz qutebrowser-e513745e205423df2255e35768b0ece7d1d74b36.zip |
urlutils: Add fallback to filename_from_url
This makes the callers a bit simpler because they don't need to take
care of falling back themselves.
-rw-r--r-- | qutebrowser/utils/urlutils.py | 8 | ||||
-rw-r--r-- | tests/unit/utils/test_urlutils.py | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/qutebrowser/utils/urlutils.py b/qutebrowser/utils/urlutils.py index 3f1fb021c..24285404a 100644 --- a/qutebrowser/utils/urlutils.py +++ b/qutebrowser/utils/urlutils.py @@ -439,24 +439,26 @@ def parse_data_url(url: QUrl) -> Tuple[str, str, bytes]: return media_type, params, data -def filename_from_url(url: QUrl) -> Optional[str]: +def filename_from_url(url: QUrl, fallback: str = None) -> Optional[str]: """Get a suitable filename from a URL. Args: url: The URL to parse, as a QUrl. + fallback: Value to use if no name can be determined. Return: The suggested filename as a string, or None. """ if not url.isValid(): - return None + return fallback + pathname = posixpath.basename(url.path()) if pathname: return pathname elif url.host(): return url.host() + '.html' else: - return None + return fallback HostTupleType = Tuple[str, str, int] diff --git a/tests/unit/utils/test_urlutils.py b/tests/unit/utils/test_urlutils.py index c2ff0042f..54d195d1a 100644 --- a/tests/unit/utils/test_urlutils.py +++ b/tests/unit/utils/test_urlutils.py @@ -656,6 +656,11 @@ def test_filename_from_url(qurl, output): assert urlutils.filename_from_url(qurl) == output +@pytest.mark.parametrize('qurl', [QUrl(), QUrl('qute://')]) +def test_filename_from_url_fallback(qurl): + assert urlutils.filename_from_url(qurl, fallback='fallback') == 'fallback' + + @pytest.mark.parametrize('qurl, expected', [ (QUrl('ftp://example.com/'), ('ftp', 'example.com', 21)), (QUrl('ftp://example.com:2121/'), ('ftp', 'example.com', 2121)), |