diff --git a/python-scripts/metadatavalidator/src/metadatavalidator/_meta.py b/python-scripts/metadatavalidator/src/metadatavalidator/_meta.py index 727651e4f..54ee23b4d 100644 --- a/python-scripts/metadatavalidator/src/metadatavalidator/_meta.py +++ b/python-scripts/metadatavalidator/src/metadatavalidator/_meta.py @@ -1,4 +1,4 @@ """Version and author""" -__version__ = "0.3.2" +__version__ = "0.3.3" __author__ = "Tom Schraitle " \ No newline at end of file diff --git a/python-scripts/metadatavalidator/src/metadatavalidator/checks/check_meta.py b/python-scripts/metadatavalidator/src/metadatavalidator/checks/check_meta.py index bf654d431..10ed04063 100644 --- a/python-scripts/metadatavalidator/src/metadatavalidator/checks/check_meta.py +++ b/python-scripts/metadatavalidator/src/metadatavalidator/checks/check_meta.py @@ -29,8 +29,14 @@ def check_meta_title(tree: etree._ElementTree, ) return + # the meta[@name='title'] element exists, but must not be empty + if meta.text is None: + raise InvalidValueError( + f"Empty meta[@name='title'] element (line {meta.sourceline})." + ) + length = config.get("metadata", {}).get("meta_title_length", 55) - if len(meta.text) > length: + if meta.text is not None and len(meta.text) > length: raise InvalidValueError( f"Meta title is too long. Max length is {length} characters" f" (line {meta.sourceline})." diff --git a/python-scripts/metadatavalidator/tests/unit/checks/test_check_meta_title.py b/python-scripts/metadatavalidator/tests/unit/checks/test_check_meta_title.py index 029bdc194..6eeebc271 100644 --- a/python-scripts/metadatavalidator/tests/unit/checks/test_check_meta_title.py +++ b/python-scripts/metadatavalidator/tests/unit/checks/test_check_meta_title.py @@ -48,3 +48,11 @@ def test_check_optional_meta_title(tree): config = dict(metadata=dict(meta_title_required=False)) assert check_meta_title(tree, config) is None +def test_check_meta_title_empty(tree): + meta = D("meta", {"name": "title"}) + appendnode(tree, meta) + + with pytest.raises(InvalidValueError, + match=r".*Empty meta\[@name='title'\] element.*"): + check_meta_title(tree, dict(metadata=dict(meta_title_length=10, + meta_title_required=True))) \ No newline at end of file