summaryrefslogtreecommitdiff
path: root/testtools
diff options
context:
space:
mode:
authorJonathan Lange <jml@mumak.net>2015-11-02 19:59:04 +0000
committerJonathan Lange <jml@mumak.net>2015-11-09 13:24:01 +0000
commit291e02cd09db3afe2860c01a35699f2463dd8f46 (patch)
tree2ed555aad0e7e92db8fb7857e6fe27a38a3f4dc8 /testtools
parent37040d577d4b011e4f79d2afe663889ff435e1c4 (diff)
downloadtesttools-291e02cd09db3afe2860c01a35699f2463dd8f46.tar.gz
Extract got_file
Diffstat (limited to 'testtools')
-rw-r--r--testtools/testresult/real.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/testtools/testresult/real.py b/testtools/testresult/real.py
index 70800dd..e2963ae 100644
--- a/testtools/testresult/real.py
+++ b/testtools/testresult/real.py
@@ -702,6 +702,24 @@ class TestRecord(PRecord):
"""
return self.set(timestamps=(self.timestamps[0], timestamp))
+ def got_file(self, file_name, file_bytes, mime_type=None):
+ """Called when we receive file information.
+
+ ``mime_type`` is only used when this is the first time we've seen data
+ from this file.
+ """
+ if file_name in self.details:
+ case = self
+ else:
+ content_type = _make_content_type(mime_type)
+ content_bytes = []
+ case = self.transform(
+ ['details', file_name],
+ Content(content_type, lambda: content_bytes))
+
+ case.details[file_name].iter_bytes().append(file_bytes)
+ return case
+
class StreamToDict(StreamResult):
"""A specialised StreamResult that emits a callback as tests complete.
@@ -772,14 +790,7 @@ class StreamToDict(StreamResult):
case = case.got_timestamp(timestamp)
if file_name is not None:
- if file_name not in case.details:
- content_type = _make_content_type(mime_type)
- content_bytes = []
- case = case.transform(
- ['details', file_name],
- Content(content_type, lambda: content_bytes))
-
- case.details[file_name].iter_bytes().append(file_bytes)
+ case = case.got_file(file_name, file_bytes, mime_type)
if test_tags is not None:
case = case.set('tags', test_tags)