From d200c2dca2f3cf49745b3b3dbf965ab1a165e174 Mon Sep 17 00:00:00 2001 From: Malte Franken Date: Fri, 1 Nov 2019 07:05:42 +1100 Subject: [PATCH] fix feedreader handling unrecognized published date (#28225) --- .../components/feedreader/__init__.py | 7 ++++--- tests/components/feedreader/test_init.py | 6 ++++++ tests/fixtures/feedreader4.xml | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 tests/fixtures/feedreader4.xml diff --git a/homeassistant/components/feedreader/__init__.py b/homeassistant/components/feedreader/__init__.py index e4ec154620e..27b164e4edf 100644 --- a/homeassistant/components/feedreader/__init__.py +++ b/homeassistant/components/feedreader/__init__.py @@ -139,9 +139,10 @@ class FeedManager: def _update_and_fire_entry(self, entry): """Update last_entry_timestamp and fire entry.""" - # We are lucky, `published_parsed` data available, let's make use of - # it to publish only new available entries since the last run - if "published_parsed" in entry.keys(): + # Check if the entry has a published date. + if "published_parsed" in entry.keys() and entry.published_parsed: + # We are lucky, `published_parsed` data available, let's make use of + # it to publish only new available entries since the last run self._has_published_parsed = True self._last_entry_timestamp = max( entry.published_parsed, self._last_entry_timestamp diff --git a/tests/components/feedreader/test_init.py b/tests/components/feedreader/test_init.py index 3f1fee0188b..eff44c44303 100644 --- a/tests/components/feedreader/test_init.py +++ b/tests/components/feedreader/test_init.py @@ -163,6 +163,12 @@ class TestFeedreaderComponent(unittest.TestCase): manager, events = self.setup_manager(feed_data) assert len(events) == 3 + def test_feed_with_unrecognized_publication_date(self): + """Test simple feed with entry with unrecognized publication date.""" + feed_data = load_fixture("feedreader4.xml") + manager, events = self.setup_manager(feed_data) + assert len(events) == 1 + def test_feed_invalid_data(self): """Test feed with invalid data.""" feed_data = "INVALID DATA" diff --git a/tests/fixtures/feedreader4.xml b/tests/fixtures/feedreader4.xml new file mode 100644 index 00000000000..81828ccb6e2 --- /dev/null +++ b/tests/fixtures/feedreader4.xml @@ -0,0 +1,20 @@ + + + + RSS Sample + This is an example of an RSS feed + http://www.example.com/main.html + Mon, 26 Oct 2019 12:00:00 +1000 + Mon, 26 Oct 2019 15:00:00 +1000 + 1800 + + + Title 1 + Description 1 + http://www.example.com/link/1 + GUID 1 + 26.10.2019 - 12:06:24 + + + +