Esempio n. 1
0
 def test_close_callbacks_when_not_enabled(self):
     with open(self.filename) as f:
         chunk = ReadFileChunk(f, chunk_size=1, full_file_size=3,
                               enable_callbacks=False,
                               close_callbacks=[self.close_callback])
         chunk.close()
         self.assertEqual(self.num_close_callback_calls, 0)
 def test_close_callbacks(self):
     with open(self.filename) as f:
         chunk = ReadFileChunk(f,
                               chunk_size=1,
                               full_file_size=3,
                               close_callbacks=[self.close_callback])
         chunk.close()
         self.assertEqual(self.num_close_callback_calls, 1)
 def test_no_call_signal_not_transferring_to_underlying_fileobj(self):
     underlying_stream = mock.Mock(io.RawIOBase)
     underlying_stream.tell.return_value = 0
     chunk = ReadFileChunk(underlying_stream, 3, 3)
     try:
         chunk.signal_not_transferring()
     except AttributeError:
         self.fail('The stream should not have tried to call '
                   'signal_not_transferring to the underlying stream.')
 def test_close_callbacks_when_context_handler_is_used(self):
     with open(self.filename) as f:
         with ReadFileChunk(f,
                            chunk_size=1,
                            full_file_size=3,
                            close_callbacks=[self.close_callback]) as chunk:
             chunk.read(1)
         self.assertEqual(self.num_close_callback_calls, 1)
 def test_file_chunk_supports_context_manager(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'abc')
     with ReadFileChunk.from_filename(filename, start_byte=0,
                                      chunk_size=2) as chunk:
         val = chunk.read()
         self.assertEqual(val, b'ab')
Esempio n. 6
0
 def test_callback_is_invoked_on_read(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.read(1)
     chunk.read(1)
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [1, 1, 1])
Esempio n. 7
0
 def test_iter_is_always_empty(self):
     # This tests the workaround for the httplib bug (see
     # the source for more info).
     filename = os.path.join(self.tempdir, 'foo')
     open(filename, 'wb').close()
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=0, chunk_size=10)
     self.assertEqual(list(chunk), [])
Esempio n. 8
0
 def test_read_entire_chunk(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=0, chunk_size=3)
     self.assertEqual(chunk.read(), b'one')
     self.assertEqual(chunk.read(), b'')
Esempio n. 9
0
 def test_callback_can_be_disabled(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.disable_callback()
     # Now reading from the ReadFileChunk should not invoke
     # the callback.
     chunk.read()
     self.assertEqual(self.amounts_seen, [])
Esempio n. 10
0
 def test_reset_stream_emulation(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=11, chunk_size=4)
     self.assertEqual(chunk.read(), b'four')
     chunk.seek(0)
     self.assertEqual(chunk.read(), b'four')
Esempio n. 11
0
 def test_signal_transferring(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.signal_not_transferring()
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [])
     chunk.signal_transferring()
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [1])
Esempio n. 12
0
 def test_callback_will_also_be_triggered_by_seek(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.read(2)
     chunk.seek(0)
     chunk.read(2)
     chunk.seek(1)
     chunk.read(2)
     self.assertEqual(self.amounts_seen, [2, -2, 2, -1, 2])
Esempio n. 13
0
 def test_all_callbacks_invoked_on_read(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback, self.callback])
     chunk.read(1)
     chunk.read(1)
     chunk.read(1)
     # The list should be twice as long because there are two callbacks
     # recording the amount read.
     self.assertEqual(self.amounts_seen, [1, 1, 1, 1, 1, 1])
Esempio n. 14
0
 def test_tell_and_seek(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=36, chunk_size=100000)
     self.assertEqual(chunk.tell(), 0)
     self.assertEqual(chunk.read(), b'ten')
     self.assertEqual(chunk.tell(), 3)
     chunk.seek(0)
     self.assertEqual(chunk.tell(), 0)
Esempio n. 15
0
 def test_read_with_amount_size(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=11, chunk_size=4)
     self.assertEqual(chunk.read(1), b'f')
     self.assertEqual(chunk.read(1), b'o')
     self.assertEqual(chunk.read(1), b'u')
     self.assertEqual(chunk.read(1), b'r')
     self.assertEqual(chunk.read(1), b'')
 def test_signal_not_transferring_to_underlying_fileobj(self):
     underlying_stream = mock.Mock()
     underlying_stream.tell.return_value = 0
     chunk = ReadFileChunk(underlying_stream, 3, 3)
     chunk.signal_not_transferring()
     self.assertTrue(underlying_stream.signal_not_transferring.called)