diff options
| author | Danilo M. <danix@danix.xyz> | 2026-05-03 10:07:43 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-05-03 10:07:43 +0200 |
| commit | 78dea7417fed34ba96efbd8e6d4f1f87c3e998f0 (patch) | |
| tree | 7958e298e3436b19034b5b262323f6245cd13142 | |
| parent | 823703d848e810ee1dbe00d5470c60302a59a422 (diff) | |
| download | publisher-78dea7417fed34ba96efbd8e6d4f1f87c3e998f0.tar.gz publisher-78dea7417fed34ba96efbd8e6d4f1f87c3e998f0.zip | |
fix: narrow exception clause to ValueError/OSError, add corrupt frontmatter test
| -rw-r--r-- | core/article_scanner.py | 2 | ||||
| -rw-r--r-- | tests/test_article_scanner.py | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/core/article_scanner.py b/core/article_scanner.py index ea6579a..bb69a26 100644 --- a/core/article_scanner.py +++ b/core/article_scanner.py @@ -20,7 +20,7 @@ def scan_articles(blog_root: Path) -> list[Article]: translation_path = by_slug.get((other_lang, slug)) try: fm, _ = parse_frontmatter(path) - except (ValueError, Exception): + except (ValueError, OSError): fm = {} articles.append(Article( slug=slug, diff --git a/tests/test_article_scanner.py b/tests/test_article_scanner.py index 66daf83..db8b683 100644 --- a/tests/test_article_scanner.py +++ b/tests/test_article_scanner.py @@ -33,6 +33,14 @@ def test_scan_detects_missing_translation(tmp_path): assert art.has_translation is False assert art.translation_path is None +def test_scan_tolerates_corrupt_frontmatter(tmp_path): + p = tmp_path / "content" / "it" / "articles" / "broken" + p.mkdir(parents=True) + (p / "index.md").write_text("no frontmatter delimiters here\n") + articles = scan_articles(tmp_path) + art = next(a for a in articles if a.slug == "broken") + assert art.frontmatter == {} + def test_scan_parses_frontmatter(tmp_path): _make_article(tmp_path, "it", "con-fm", 'tags = ["linux"]\n') articles = scan_articles(tmp_path) |
