diff --git a/scrapy/trunk/scrapy/tests/test_utils_misc.py b/scrapy/trunk/scrapy/tests/test_utils_misc.py index 561679c3f..cb241bb0a 100644 --- a/scrapy/trunk/scrapy/tests/test_utils_misc.py +++ b/scrapy/trunk/scrapy/tests/test_utils_misc.py @@ -1,7 +1,7 @@ import unittest from cStringIO import StringIO -from scrapy.utils.misc import hash_values, items_to_csv, load_object +from scrapy.utils.misc import hash_values, items_to_csv, load_object, to_list from scrapy.core.exceptions import UsageError from scrapy.item import ScrapedItem @@ -60,5 +60,10 @@ class UtilsMiscTestCase(unittest.TestCase): obj = load_object('scrapy.utils.misc.load_object') assert obj is load_object + def test_to_list(self): + self.assertEqual(to_list(None), []) + self.assertEqual(to_list('lala'), ['lala']) + self.assertEqual(to_list(('lala', 'poo')), ['lala', 'poo']) + if __name__ == "__main__": unittest.main() diff --git a/scrapy/trunk/scrapy/utils/misc.py b/scrapy/trunk/scrapy/utils/misc.py index a4deb8578..0c4408575 100644 --- a/scrapy/trunk/scrapy/utils/misc.py +++ b/scrapy/trunk/scrapy/utils/misc.py @@ -15,6 +15,14 @@ from scrapy.utils.python import flatten, unicode_to_str from scrapy.utils.markup import remove_entities from scrapy.utils.defer import defer_succeed +def to_list(obj): + if obj is None: + return [] + elif hasattr(obj, '__iter__'): + return list(obj) + else: + return [obj] + def dict_updatedefault(D, E, **F): """ updatedefault(D, E, **F) -> None.