From b833f84df7f77055f00df0fdae0b33629270e720 Mon Sep 17 00:00:00 2001 From: Kushal S Date: Thu, 13 Aug 2026 17:58:51 +0530 Subject: [PATCH] fix: skip blank lines in rss feed file --- zulip/integrations/rss/rss-bot | 5 ++++- zulip/integrations/rss/rss_feeds.py | 2 ++ zulip/integrations/rss/test_rss_feeds.py | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 zulip/integrations/rss/rss_feeds.py create mode 100644 zulip/integrations/rss/test_rss_feeds.py diff --git a/zulip/integrations/rss/rss-bot b/zulip/integrations/rss/rss-bot index 5ab920c24..2adbbb81b 100755 --- a/zulip/integrations/rss/rss-bot +++ b/zulip/integrations/rss/rss-bot @@ -21,6 +21,9 @@ from typing_extensions import override import zulip +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from rss_feeds import parse_feed_file_lines + VERSION = "0.9" RSS_DATA_DIR = os.path.expanduser(os.path.join("~", ".cache", "zulip-rss")) @@ -214,7 +217,7 @@ def send_zulip(entry: Any, feed_name: str) -> Dict[str, Any]: try: with open(opts.feed_file) as f: - feed_urls: List[str] = [feed.strip() for feed in f.readlines()] + feed_urls = parse_feed_file_lines(f.readlines()) except OSError: log_error_and_exit(f"Unable to read feed file at {opts.feed_file}.") diff --git a/zulip/integrations/rss/rss_feeds.py b/zulip/integrations/rss/rss_feeds.py new file mode 100644 index 000000000..8ce51a5fb --- /dev/null +++ b/zulip/integrations/rss/rss_feeds.py @@ -0,0 +1,2 @@ +def parse_feed_file_lines(lines: list[str]) -> list[str]: + return [line.strip() for line in lines if line.strip()] diff --git a/zulip/integrations/rss/test_rss_feeds.py b/zulip/integrations/rss/test_rss_feeds.py new file mode 100644 index 000000000..acb641a2a --- /dev/null +++ b/zulip/integrations/rss/test_rss_feeds.py @@ -0,0 +1,19 @@ +import os +import sys +from unittest import TestCase + +sys.path.insert(0, os.path.dirname(__file__)) + +from rss_feeds import parse_feed_file_lines + + +class TestRssFeedParsing(TestCase): + def test_skips_blank_lines(self) -> None: + lines = ["https://example.com/feed", "", " ", "https://other.test/rss"] + self.assertEqual( + parse_feed_file_lines(lines), + ["https://example.com/feed", "https://other.test/rss"], + ) + + def test_strips_whitespace(self) -> None: + self.assertEqual(parse_feed_file_lines([" https://example.com/feed \n"]), ["https://example.com/feed"])