From 5ad37c1646ba1e53cc1065dfccc088ec61874b6e Mon Sep 17 00:00:00 2001 From: MrS0m30n3 Date: Sun, 25 Sep 2016 18:17:44 +0300 Subject: [PATCH] Check input on update_stats method --- tests/test_ditem.py | 27 +++++++++++++++++++++++++++ youtube_dl_gui/downloadmanager.py | 11 +++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/tests/test_ditem.py b/tests/test_ditem.py index 56ad85c..5c9c62a 100644 --- a/tests/test_ditem.py +++ b/tests/test_ditem.py @@ -178,6 +178,33 @@ class TestUpdateStats(unittest.TestCase): def test_update_stats_invalid_input(self): self.assertRaises(AssertionError, self.ditem.update_stats, []) + def test_update_stats_empty_strings(self): + self.ditem.update_stats({"filename": "", + "extension": "", + "filesize": "", + "percent": "", + "speed": "", + "eta": "", + "status": ""}) + + self.assertEqual( + self.ditem.progress_stats, + {"filename": "url", + "extension": "-", + "filesize": "-", + "percent": "0%", + "speed": "-", + "eta": "-", + "status": "Queued"} + ) + + def test_update_stats_not_string(self): + self.ditem.update_stats({"filename": None, "status": 1234, "eta": False}) + + self.assertEqual(self.ditem.progress_stats["filename"], "url") + self.assertEqual(self.ditem.progress_stats["status"], "Queued") + self.assertEqual(self.ditem.progress_stats["eta"], "-") + class TestDownloadItemPrivate(unittest.TestCase): diff --git a/youtube_dl_gui/downloadmanager.py b/youtube_dl_gui/downloadmanager.py index ef58b61..86bf2da 100644 --- a/youtube_dl_gui/downloadmanager.py +++ b/youtube_dl_gui/downloadmanager.py @@ -122,7 +122,7 @@ class DownloadItem(object): self.filenames = [] self.extensions = [] - self.progress_stats = { + self.default_values = { "filename": self.url, "extension": "-", "filesize": "-", @@ -132,6 +132,8 @@ class DownloadItem(object): "status": self.stage } + self.progress_stats = dict(self.default_values) + def get_files(self): """Returns a list that contains all the system files bind to this object.""" files = [] @@ -148,7 +150,12 @@ class DownloadItem(object): for key in stats_dict: if key in self.progress_stats: - self.progress_stats[key] = stats_dict[key] + value = stats_dict[key] + + if not isinstance(value, basestring) or not value: + self.progress_stats[key] = self.default_values[key] + else: + self.progress_stats[key] = value # Extract extra stuff if key == "filename":