Fixed loading compressed files
This commit is contained in:
parent
b42a090f32
commit
67751d9a3e
@ -72,12 +72,13 @@ class BlendFile:
|
|||||||
self.is_compressed = False
|
self.is_compressed = False
|
||||||
self.raw_filepath = path
|
self.raw_filepath = path
|
||||||
self.fileobj = fileobj
|
self.fileobj = fileobj
|
||||||
elif magic == GZIP_MAGIC:
|
elif magic[:2] == GZIP_MAGIC:
|
||||||
self.is_compressed = True
|
self.is_compressed = True
|
||||||
|
|
||||||
log.debug("compressed blendfile detected: %s", path)
|
log.debug("compressed blendfile detected: %s", path)
|
||||||
# Decompress to a temporary file.
|
# Decompress to a temporary file.
|
||||||
tmpfile = tempfile.NamedTemporaryFile()
|
tmpfile = tempfile.NamedTemporaryFile()
|
||||||
|
fileobj.seek(0, os.SEEK_SET)
|
||||||
with gzip.GzipFile(fileobj=fileobj, mode=mode) as gzfile:
|
with gzip.GzipFile(fileobj=fileobj, mode=mode) as gzfile:
|
||||||
magic = gzfile.read(len(BLENDFILE_MAGIC))
|
magic = gzfile.read(len(BLENDFILE_MAGIC))
|
||||||
if magic != BLENDFILE_MAGIC:
|
if magic != BLENDFILE_MAGIC:
|
||||||
|
|||||||
BIN
tests/blendfiles/basic_file_compressed.blend
Normal file
BIN
tests/blendfiles/basic_file_compressed.blend
Normal file
Binary file not shown.
@ -196,3 +196,13 @@ class PointerTest(AbstractBlendFileTest):
|
|||||||
seq.refine_type_from_index(sdna_idx_sequence)
|
seq.refine_type_from_index(sdna_idx_sequence)
|
||||||
self.assertEqual(b'SQBlack', seq[b'name'])
|
self.assertEqual(b'SQBlack', seq[b'name'])
|
||||||
self.assertEqual(28, seq[b'type'])
|
self.assertEqual(28, seq[b'type'])
|
||||||
|
|
||||||
|
|
||||||
|
class LoadCompressedTest(AbstractBlendFileTest):
|
||||||
|
def test_loading(self):
|
||||||
|
self.bf = blendfile.BlendFile(self.blendfiles / 'basic_file_compressed.blend')
|
||||||
|
self.assertTrue(self.bf.is_compressed)
|
||||||
|
|
||||||
|
ob = self.bf.code_index[b'OB'][0]
|
||||||
|
name = ob.get((b'id', b'name'))
|
||||||
|
self.assertEqual('OBümlaut', name)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user