fix: Don't log feed warning if FEED_DOMAIN is set

This commit is contained in:
Sam Bull 2026-04-13 10:11:12 +01:00 committed by GitHub
commit 70767ca8ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 39 additions and 3 deletions

View file

@ -673,9 +673,10 @@ def configure_settings(settings: Settings) -> Settings:
]
if any(settings.get(k) for k in feed_keys):
if not settings.get("SITEURL"):
if not (settings.get("SITEURL") or settings.get("FEED_DOMAIN")):
logger.warning(
"Feeds generated without SITEURL set properly may not be valid"
"Feeds generated without SITEURL or FEED_DOMAIN set properly"
" may not be valid"
)
if "TIMEZONE" not in settings:

View file

@ -1,8 +1,10 @@
import copy
import locale
import logging
import os
from os.path import abspath, dirname, join
from pelican import log
from pelican.settings import (
DEFAULT_CONFIG,
DEFAULT_THEME,
@ -11,7 +13,7 @@ from pelican.settings import (
handle_deprecated_settings,
read_settings,
)
from pelican.tests.support import unittest
from pelican.tests.support import LogCountHandler, unittest
class TestSettingsConfiguration(unittest.TestCase):
@ -108,6 +110,39 @@ class TestSettingsConfiguration(unittest.TestCase):
configure_settings(settings)
self.assertEqual(settings["FEED_DOMAIN"], "http://feeds.example.com")
def _feeds_warning_settings(self, **overrides):
base = {
"LOCALE": "",
"PATH": os.curdir,
"THEME": DEFAULT_THEME,
"FEED_RSS": "feeds/all.rss.xml",
}
base.update(overrides)
handler = LogCountHandler()
logger = logging.getLogger()
logger.addHandler(handler)
saved = log.LimitFilter._raised_messages.copy()
log.LimitFilter._raised_messages = set()
try:
configure_settings(base)
return handler.count_logs(
"Feeds generated without SITEURL", logging.WARNING
)
finally:
log.LimitFilter._raised_messages = saved
logger.removeHandler(handler)
def test_feeds_warning_with_siteurl(self):
self.assertEqual(self._feeds_warning_settings(SITEURL="http://example.com"), 0)
def test_feeds_warning_with_feed_domain(self):
self.assertEqual(
self._feeds_warning_settings(FEED_DOMAIN="http://feeds.example.com"), 0
)
def test_feeds_warning_without_siteurl_or_feed_domain(self):
self.assertEqual(self._feeds_warning_settings(), 1)
def test_theme_settings_exceptions(self):
settings = self.settings