Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/zimscraperlib/zim/creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from __future__ import annotations

import datetime
import logging as stdlogging
import pathlib
import re
import weakref
Expand All @@ -28,6 +29,7 @@

import libzim.writer # pyright: ignore

from zimscraperlib import logger
from zimscraperlib.constants import (
DEFAULT_DEV_ZIM_METADATA,
FRONT_ARTICLE_MIMETYPES,
Expand Down Expand Up @@ -147,6 +149,11 @@ def config_indexing(
return self

def start(self):
# not sure why DEBUG isn't resolving.
if logger.isEnabledFor(10): # stdlogging dot d e b u g
for name, value in self._metadata.items():
logger.debug(f"Metadata: {name} = {value}")

if not all(self._metadata.get(key) for key in MANDATORY_ZIM_METADATA_KEYS):
raise ValueError("Mandatory metadata are not all set.")

Expand Down
14 changes: 14 additions & 0 deletions tests/zim/test_zim_creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

import pytest
from libzim.writer import Compression # pyright: ignore
from unittest.mock import MagicMock

from zimscraperlib import logger
from zimscraperlib.constants import (
DEFAULT_DEV_ZIM_METADATA,
MANDATORY_ZIM_METADATA_KEYS,
Expand Down Expand Up @@ -539,6 +541,18 @@ def test_check_metadata(tmp_path):
with pytest.raises(ValueError, match="LongDescription is too long."):
Creator(tmp_path, "").config_dev_metadata(LongDescription="T" * 5000).start()

def test_start_logs_metadata_debug_enabled(tmp_path, mocker):
# logger is not resolving?
#with mocker.patch.object(logger, 'isEnabledFor', new=MagicMock(return_value=True)) as faux_logger_debug:
# with mocker.spy(faux_logger_debug, 'debug') as faux_logger:
# with logger as orig_logger:
try:
# logger=faux_logger
with pytest.raises(ValueError, match="Mandatory metadata are not all set."):
Creator(tmp_path, "").start()
finally:
# assert [c for c in faux_logger.call_args_list if c.args[0].startswith("Metadata:")]
# logger=orig_logger

def test_relax_metadata(tmp_path):
Creator(tmp_path, "", disable_metadata_checks=True).config_dev_metadata(
Expand Down