Skip to content

Commit 63856e8

Browse files
author
Adi Roiban
committed
Update tests
1 parent 2c998fb commit 63856e8

File tree

1 file changed

+25
-21
lines changed

1 file changed

+25
-21
lines changed

Lib/test/test_zipfile/test_core.py

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import io
66
import itertools
77
import os
8-
import pathlib
98
import posixpath
109
import stat
1110
import struct
@@ -16,7 +15,7 @@
1615
import unittest.mock as mock
1716
import zipfile
1817

19-
18+
from pathlib import Path
2019
from tempfile import TemporaryFile
2120
from random import randint, random, randbytes
2221

@@ -486,9 +485,6 @@ def tearDown(self):
486485

487486
class StoredTestsWithSourceFile(AbstractTestsWithSourceFile,
488487
unittest.TestCase):
489-
"""
490-
Test in which the files inside the archive are not compressed.
491-
"""
492488
compression = zipfile.ZIP_STORED
493489
test_low_compression = None
494490

@@ -679,16 +675,11 @@ def test_add_file_after_2107(self):
679675
zinfo = zipfp.getinfo(TESTFN)
680676
self.assertEqual(zinfo.date_time, (2107, 12, 31, 23, 59, 59))
681677

682-
683678
class CustomZipInfo(zipfile.ZipInfo):
684-
"""
685-
Support for testing extending and subclassing ZipFile.
686-
"""
679+
pass
687680

688681
class CustomZipExtFile(zipfile.ZipExtFile):
689-
"""
690-
Support for testing extending and subclassing ZipFile.
691-
"""
682+
pass
692683

693684
def test_read_custom_zipinfo_and_zipextfile(self):
694685
"""
@@ -699,6 +690,7 @@ def test_read_custom_zipinfo_and_zipextfile(self):
699690
source = io.BytesIO()
700691
with zipfile.ZipFile(source, 'w', zipfile.ZIP_STORED) as zipfp:
701692
zipfp.writestr('test.txt', 'some-text-content')
693+
source.seek(0)
702694

703695
with zipfile.ZipFile(
704696
source, 'r',
@@ -714,6 +706,7 @@ def test_read_custom_zipinfo_and_zipextfile(self):
714706
target_member = members[0]
715707
with zipfp.open(target_member, mode='r') as memberfp:
716708
self.assertIsInstance(memberfp, self.CustomZipExtFile)
709+
self.assertEqual(b'some-text-content', memberfp.read())
717710

718711
def test_write_custom_zipinfo(self):
719712
"""
@@ -723,15 +716,15 @@ def test_write_custom_zipinfo(self):
723716
destination = io.BytesIO()
724717
with zipfile.ZipFile(
725718
destination, 'w', zipinfo_class=self.CustomZipInfo) as zipfp:
726-
# It can write using the specific custom classe.
719+
# It can write using the specific custom class.
727720
new_member = self.CustomZipInfo('new-member.txt')
728721
with zipfp.open(new_member, mode='w') as memberfp:
729722
self.assertIs(new_member, memberfp._zinfo)
730723

731724
# When creating a new member using just the name,
732725
# the custom ZipInfo is used internally.
733726
with zipfp.open('other-member.txt', mode='w') as memberfp:
734-
self.assertIsInstance(memberfp._zinfo, self.CustomZipInfo)
727+
memberfp.write(b'some-content')
735728
self.assertIsInstance(
736729
zipfp.NameToInfo['other-member.txt'], self.CustomZipInfo)
737730

@@ -754,7 +747,7 @@ def test_write_custom_zipinfo(self):
754747
# When writing from an external file, the file is created using
755748
# the custom ZipInfo
756749
with temp_dir() as source_dir:
757-
source_file = pathlib.Path(source_dir).joinpath('source.txt')
750+
source_file = Path(source_dir) / 'source.txt'
758751
with open(source_file, 'wb') as fp:
759752
fp.write(b'some-content')
760753
zipfp.write(source_file, arcname='newly-file.txt')
@@ -766,16 +759,27 @@ def test_extract_custom_zipinfo(self):
766759
A subclass of ZipFile can be implemented to extact the
767760
archive content using custom ZipInfo implementation.
768761
"""
762+
769763
destination = io.BytesIO()
770-
with zipfile.ZipFile(
771-
destination, 'w', zipinfo_class=self.CustomZipInfo) as zipfp:
764+
with zipfile.ZipFile(destination, 'w') as zipfp:
772765
zipfp.mkdir('dir-as-text/')
773-
dir_info = zipfp.NameToInfo['dir-as-text/']
774-
self.assertIsInstance(dir_info, self.CustomZipInfo)
766+
zipfp.writestr('test.txt', b'new file content')
775767

768+
destination.seek(0)
769+
with zipfile.ZipFile(
770+
destination, 'r', zipinfo_class=self.CustomZipInfo) as zipfp:
776771
with temp_dir() as extract_dir:
777-
zipfp.extract(dir_info, path=extract_dir)
778-
zipfp.extract('dir-as-text/', path=extract_dir)
772+
expected_dir = Path(extract_dir) / 'dir-as-text'
773+
expected_file = Path(extract_dir) / 'test.txt'
774+
775+
# Check extracting using custom ZipInfo
776+
dir_info = zipfp.NameToInfo['dir-as-text/']
777+
#zipfp.extract(dir_info, path=extract_dir)
778+
#self.assertTrue(expected_dir.is_dir())
779+
# Check extracting using file name.
780+
zipfp.extract('test.txt', path=extract_dir)
781+
with expected_file.open('rb') as fp:
782+
self.assertEqual(b'new file content', fp.read())
779783

780784

781785
@requires_zlib()

0 commit comments

Comments
 (0)