Skip to content

Commit 0c44fac

Browse files
committed
added tests for feed export marshal and pickle
1 parent 9fbe6f3 commit 0c44fac

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

tests/test_feedexport.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,42 @@ def assertExportedXml(self, items, rows, settings=None):
197197
got_rows = [{e.tag: e.text for e in it} for it in root.findall('item')]
198198
self.assertEqual(rows, got_rows)
199199

200+
def _load_until_eof(self, data, load_func):
201+
bytes_output = BytesIO(data)
202+
result = []
203+
while True:
204+
try:
205+
result.append(load_func(bytes_output))
206+
except EOFError:
207+
break
208+
return result
209+
210+
@defer.inlineCallbacks
211+
def assertExportedPickle(self, items, rows, settings=None):
212+
settings = settings or {}
213+
settings.update({'FEED_FORMAT': 'pickle'})
214+
data = yield self.exported_data(items, settings)
215+
expected = [{k: v for k, v in row.items() if v} for row in rows]
216+
import pickle
217+
result = self._load_until_eof(data, load_func=pickle.load)
218+
self.assertEqual(expected, result)
219+
220+
@defer.inlineCallbacks
221+
def assertExportedMarshal(self, items, rows, settings=None):
222+
settings = settings or {}
223+
settings.update({'FEED_FORMAT': 'marshal'})
224+
data = yield self.exported_data(items, settings)
225+
expected = [{k: v for k, v in row.items() if v} for row in rows]
226+
import marshal
227+
result = self._load_until_eof(data, load_func=marshal.load)
228+
self.assertEqual(expected, result)
229+
200230
@defer.inlineCallbacks
201231
def assertExported(self, items, header, rows, settings=None, ordered=True):
202232
yield self.assertExportedCsv(items, header, rows, settings, ordered)
203233
yield self.assertExportedJsonLines(items, rows, settings)
204234
yield self.assertExportedXml(items, rows, settings)
235+
yield self.assertExportedPickle(items, rows, settings)
205236

206237
@defer.inlineCallbacks
207238
def test_export_items(self):

0 commit comments

Comments
 (0)