def generateTarItem(name="", content=b''): bin = generateTarItemBin(name=name, content=content) f = io.BytesIO(bin) type = utar.Type.DIR if name[-1] == '/' else utar.Type.FILE i = utar.TarItem(f, name, type, len(content), utar.HEADER_LENGTH_BYTES) return i
def test_taritem_constructor_passed_dir_type_block_iterator_is_none(self): name = "abcd" length = 174 offset = 3 type = utar.Type.DIR f = io.BytesIO() i = utar.TarItem(f, name, type, length, offset) self.assertIsNone(i.Blocks)
def test_tarfile_iter_returns_iterable_and_resets_current_item_to_none( self): f = io.BytesIO(generateTarItem()) t = utar.TarFile(f) t._current_item = utar.TarItem(f, 'name', utar.Type.FILE, 7, 0) self.assertIsNotNone(t._current_item) m = iter(t) self.assertIsInstance(m, Iterable) self.assertIsNone(t._current_item)
def test_taritem_constructor_passed_file_type_block_iterator_is_tarblock( self): name = "abcd" length = 174 offset = 3 type = utar.Type.FILE f = io.BytesIO() i = utar.TarItem(f, name, type, length, offset) self.assertIsInstance(i.Blocks, utar.TarBlock)
def test_taritem_read_returns_all_content_starting_from_offset(self): headerBytes = b'some-header-bytes\0' content = b'this-is-the-content' footerBytes = b'\0\0' f = io.BytesIO(headerBytes + content + footerBytes) i = utar.TarItem(f, "name", utar.Type.FILE, len(content), len(headerBytes)) c = i.read() self.assertEqual(c, content)
def test_taritem_readinto_populates_buffer_and_returns_bytes_read(self): headerBytes = b'some-header-bytes\0' content = b'this-is-the-content' footerBytes = b'\0\0' f = io.BytesIO(headerBytes + content + footerBytes) i = utar.TarItem(f, "name", utar.Type.FILE, len(content), len(headerBytes)) arbitrary_extra_length = 3 b = bytearray(len(content) + arbitrary_extra_length) s = i.readinto(b) self.assertEqual(s, len(content)) self.assertEqual(b[0:len(content)], content)
def test_taritem_constructor_sets_item_properties(self): name = "abcd" length = 174 offset = 3 type = utar.Type.FILE f = io.BytesIO() i = utar.TarItem(f, name, type, length, offset) self.assertEqual(i.Name, name) self.assertEqual(i.Length, length) self.assertEqual(i.Type, type) self.assertEqual(i.Start, offset) self.assertEqual(i.End, offset + length) self.assertEqual(i.BlockEnd, offset + utar.BLOCK_LENGTH_BYTES)