예제 #1
0
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
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)