@@ -1064,15 +1064,42 @@ def test_make_zipfile(self):
10641064 base_name = os .path .join (work_dir , rel_base_name )
10651065
10661066 with support .change_cwd (work_dir ):
1067- res = make_archive (rel_base_name , 'zip' , root_dir , 'dist' )
1067+ res = make_archive (rel_base_name , 'zip' , root_dir , base_dir )
10681068
10691069 self .assertEqual (res , base_name + '.zip' )
10701070 self .assertTrue (os .path .isfile (res ))
10711071 self .assertTrue (zipfile .is_zipfile (res ))
10721072 with zipfile .ZipFile (res ) as zf :
10731073 self .assertCountEqual (zf .namelist (),
1074- ['dist/file1' , 'dist/file2' , 'dist/sub/file3' ])
1074+ ['dist/' , 'dist/sub/' , 'dist/sub2/' ,
1075+ 'dist/file1' , 'dist/file2' , 'dist/sub/file3' ])
10751076
1077+ @requires_zlib
1078+ @unittest .skipUnless (ZIP_SUPPORT , 'Need zip support to run' )
1079+ @unittest .skipUnless (find_executable ('zip' ),
1080+ 'Need the zip command to run' )
1081+ def test_zipfile_vs_zip (self ):
1082+ root_dir , base_dir = self ._create_files ()
1083+ base_name = os .path .join (self .mkdtemp (), 'archive' )
1084+ archive = make_archive (base_name , 'zip' , root_dir , base_dir )
1085+
1086+ # check if ZIP file was created
1087+ self .assertEqual (archive , base_name + '.zip' )
1088+ self .assertTrue (os .path .isfile (archive ))
1089+
1090+ # now create another ZIP file using `zip`
1091+ archive2 = os .path .join (root_dir , 'archive2.zip' )
1092+ zip_cmd = ['zip' , '-q' , '-r' , 'archive2.zip' , base_dir ]
1093+ with support .change_cwd (root_dir ):
1094+ spawn (zip_cmd )
1095+
1096+ self .assertTrue (os .path .isfile (archive2 ))
1097+ # let's compare both ZIP files
1098+ with zipfile .ZipFile (archive ) as zf :
1099+ names = zf .namelist ()
1100+ with zipfile .ZipFile (archive2 ) as zf :
1101+ names2 = zf .namelist ()
1102+ self .assertEqual (sorted (names ), sorted (names2 ))
10761103
10771104 def test_make_archive (self ):
10781105 tmpdir = self .mkdtemp ()
@@ -1183,11 +1210,9 @@ def test_unpack_archive(self):
11831210 formats .append ('bztar' )
11841211
11851212 root_dir , base_dir = self ._create_files ()
1213+ expected = rlistdir (root_dir )
1214+ expected .remove ('outer' )
11861215 for format in formats :
1187- expected = rlistdir (root_dir )
1188- expected .remove ('outer' )
1189- if format == 'zip' :
1190- expected .remove ('dist/sub2/' )
11911216 base_name = os .path .join (self .mkdtemp (), 'archive' )
11921217 filename = make_archive (base_name , format , root_dir , base_dir )
11931218
0 commit comments