diff --git a/swh/web/browse/utils.py b/swh/web/browse/utils.py --- a/swh/web/browse/utils.py +++ b/swh/web/browse/utils.py @@ -218,12 +218,14 @@ key 'language'. """ - language = highlightjs.get_hljs_language_from_filename(path) + language = None + if path: + language = highlightjs.get_hljs_language_from_filename(path.split("/")[-1]) - if not language: + if language is None: language = highlightjs.get_hljs_language_from_mime_type(mime_type) - if not language: + if language is None: language = "nohighlight" if mime_type.startswith("image/"): diff --git a/swh/web/tests/browse/test_utils.py b/swh/web/tests/browse/test_utils.py --- a/swh/web/tests/browse/test_utils.py +++ b/swh/web/tests/browse/test_utils.py @@ -1,13 +1,16 @@ -# Copyright (C) 2017-2019 The Software Heritage developers +# Copyright (C) 2017-2021 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information +import pytest + from swh.web.browse.utils import ( gen_link, gen_person_mail_link, gen_revision_link, get_mimetype_and_encoding_for_content, + prepare_content_for_display, ) from swh.web.common.utils import reverse @@ -73,3 +76,14 @@ person_none = {"name": None, "email": None, "fullname": None} assert gen_person_mail_link(person_none) == "None" + + +@pytest.mark.parametrize( + "path, expected_language", + [("CMakeLists.txt", "cmake"), ("path/CMakeLists.txt", "cmake")], +) +def test_prepare_content_display_language_for_filename(path, expected_language): + content_display = prepare_content_for_display( + content_data=b"", mime_type="", path=path + ) + assert content_display["language"] == expected_language