File tree Expand file tree Collapse file tree 4 files changed +43
-6
lines changed Expand file tree Collapse file tree 4 files changed +43
-6
lines changed Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ def set_default_vars_values
34
34
end
35
35
@follow_symlinks = false
36
36
37
- @restore_times = true
37
+ @restore_times = false
38
38
@restore_permissions = false
39
39
@restore_ownership = false
40
40
# BUG: need an extra field to support uid/gid's
Original file line number Diff line number Diff line change @@ -376,7 +376,13 @@ def commit_required?
376
376
# Searches for entry with the specified name. Returns nil if
377
377
# no entry is found. See also get_entry
378
378
def find_entry ( entry_name )
379
- @entry_set . find_entry ( entry_name )
379
+ selected_entry = @entry_set . find_entry ( entry_name )
380
+ return if selected_entry . nil?
381
+
382
+ selected_entry . restore_ownership = @restore_ownership
383
+ selected_entry . restore_permissions = @restore_permissions
384
+ selected_entry . restore_times = @restore_times
385
+ selected_entry
380
386
end
381
387
382
388
# Searches for entries given a glob
@@ -388,10 +394,8 @@ def glob(*args, &block)
388
394
# if no entry is found.
389
395
def get_entry ( entry )
390
396
selected_entry = find_entry ( entry )
391
- raise Errno ::ENOENT , entry unless selected_entry
392
- selected_entry . restore_ownership = @restore_ownership
393
- selected_entry . restore_permissions = @restore_permissions
394
- selected_entry . restore_times = @restore_times
397
+ raise Errno ::ENOENT , entry if selected_entry . nil?
398
+
395
399
selected_entry
396
400
end
397
401
Original file line number Diff line number Diff line change @@ -75,6 +75,24 @@ def test_restore_times_false
75
75
assert_time_equal ( ::Time . now , ::File . mtime ( EXTPATH_2 ) )
76
76
end
77
77
78
+ def test_get_find_consistency
79
+ testzip = ::File . expand_path ( ::File . join ( 'data' , 'globTest.zip' ) , __dir__ )
80
+ file_f = ::File . expand_path ( 'f_test.txt' , Dir . tmpdir )
81
+ file_g = ::File . expand_path ( 'g_test.txt' , Dir . tmpdir )
82
+
83
+ ::Zip ::File . open ( testzip ) do |zip |
84
+ e1 = zip . find_entry ( 'globTest/food.txt' )
85
+ e1 . extract ( file_f )
86
+ e2 = zip . get_entry ( 'globTest/food.txt' )
87
+ e2 . extract ( file_g )
88
+ end
89
+
90
+ assert_time_equal ( ::File . mtime ( file_f ) , ::File . mtime ( file_g ) )
91
+ ensure
92
+ ::File . unlink ( file_f )
93
+ ::File . unlink ( file_g )
94
+ end
95
+
78
96
private
79
97
80
98
# Method to compare file times. DOS times only have 2 second accuracy.
Original file line number Diff line number Diff line change @@ -653,6 +653,21 @@ def test_open_xls_does_not_raise_type_error
653
653
::Zip ::File . open ( 'test/data/test.xls' )
654
654
end
655
655
656
+ def test_find_get_entry
657
+ ::Zip ::File . open ( TEST_ZIP . zip_name ) do |zf |
658
+ assert_nil zf . find_entry ( 'not_in_here.txt' )
659
+
660
+ refute_nil zf . find_entry ( 'test/data/generated/empty.txt' )
661
+
662
+ assert_raises ( Errno ::ENOENT ) do
663
+ zf . get_entry ( 'not_in_here.txt' )
664
+ end
665
+
666
+ # Should not raise anything.
667
+ zf . get_entry ( 'test/data/generated/empty.txt' )
668
+ end
669
+ end
670
+
656
671
private
657
672
658
673
def assert_contains ( zf , entryName , filename = entryName )
You can’t perform that action at this time.
0 commit comments