| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  | require 'test_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-15 23:23:48 +08:00
										 |  |  | class ZipFileExtractDirectoryTest < MiniTest::Test | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |   include CommonZipFileFixture | 
					
						
							| 
									
										
										
										
											2014-07-16 00:01:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-21 16:27:44 +08:00
										 |  |  |   TEST_OUT_NAME = 'test/data/generated/emptyOutDir' | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def open_zip(&aProc) | 
					
						
							|  |  |  |     assert(aProc != nil) | 
					
						
							|  |  |  |     ::Zip::File.open(TestZipFile::TEST_ZIP4.zip_name, &aProc) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def extract_test_dir(&aProc) | 
					
						
							| 
									
										
										
										
											2015-03-21 16:10:37 +08:00
										 |  |  |     open_zip do |zf| | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |       zf.extract(TestFiles::EMPTY_TEST_DIR, TEST_OUT_NAME, &aProc) | 
					
						
							| 
									
										
										
										
											2015-03-21 16:10:37 +08:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup | 
					
						
							|  |  |  |     super | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Dir.rmdir(TEST_OUT_NAME) if File.directory? TEST_OUT_NAME | 
					
						
							| 
									
										
										
										
											2014-02-07 07:00:38 +08:00
										 |  |  |     File.delete(TEST_OUT_NAME) if File.exist? TEST_OUT_NAME | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_extractDirectory | 
					
						
							|  |  |  |     extract_test_dir | 
					
						
							|  |  |  |     assert(File.directory?(TEST_OUT_NAME)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_extractDirectoryExistsAsDir | 
					
						
							|  |  |  |     Dir.mkdir TEST_OUT_NAME | 
					
						
							|  |  |  |     extract_test_dir | 
					
						
							|  |  |  |     assert(File.directory?(TEST_OUT_NAME)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_extractDirectoryExistsAsFile | 
					
						
							| 
									
										
										
										
											2015-03-21 16:27:44 +08:00
										 |  |  |     File.open(TEST_OUT_NAME, 'w') { |f| f.puts 'something' } | 
					
						
							| 
									
										
										
										
											2014-01-24 17:37:38 +08:00
										 |  |  |     assert_raises(::Zip::DestinationFileExistsError) { extract_test_dir } | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_extractDirectoryExistsAsFileOverwrite | 
					
						
							| 
									
										
										
										
											2015-03-21 16:27:44 +08:00
										 |  |  |     File.open(TEST_OUT_NAME, 'w') { |f| f.puts 'something' } | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |     gotCalled = false | 
					
						
							| 
									
										
										
										
											2015-03-21 16:10:37 +08:00
										 |  |  |     extract_test_dir do |entry, destPath| | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |       gotCalled = true | 
					
						
							|  |  |  |       assert_equal(TEST_OUT_NAME, destPath) | 
					
						
							|  |  |  |       assert(entry.directory?) | 
					
						
							|  |  |  |       true | 
					
						
							| 
									
										
										
										
											2015-03-21 16:10:37 +08:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2014-01-21 05:31:06 +08:00
										 |  |  |     assert(gotCalled) | 
					
						
							|  |  |  |     assert(File.directory?(TEST_OUT_NAME)) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |