8000 Merge pull request #363 from hainesr/fix-dir-glob · rubyzip/rubyzip@6ea4a71 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6ea4a71

Browse files
authored
Merge pull request #363 from hainesr/fix-dir-glob
Fix Zip::FileSystem::ZipFsDir#glob
2 parents 8887b70 + aa6284d commit 6ea4a71

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

lib/zip/filesystem.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,10 @@ def get_output_stream(fileName, permissionInt = nil, &aProc)
573573
@zipFile.get_output_stream(expand_to_entry(fileName), permissionInt, &aProc)
574574
end
575575

576+
def glob(pattern, *flags, &block)
577+
@zipFile.glob(expand_to_entry(pattern), *flags, &block)
578+
end
579+
576580
def read(fileName)
577581
@zipFile.read(expand_to_entry(fileName))
578582
end

test/filesystem/directory_test.rb

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class ZipFsDirectoryTest < MiniTest::Test
55
TEST_ZIP = 'test/data/generated/zipWithDirs_copy.zip'
6+
GLOB_TEST_ZIP = 'test/data/globTest.zip'
67

78
def setup
89
FileUtils.cp('test/data/zipWithDirs.zip', TEST_ZIP)
@@ -93,11 +94,28 @@ def test_chroot
9394
end
9495
end
9596

96-
# Globbing not supported yet
97-
# def test_glob
98-
# # test alias []-operator too
99-
# fail "implement test"
100-
# end
97+
def test_glob
98+
globbed_files = [
99+
'globTest/foo/bar/baz/foo.txt',
100+
'globTest/foo.txt',
101+
'globTest/food.txt'
102+
]
103+
104+
::Zip::File.open(GLOB_TEST_ZIP) do |zf|
105+
zf.dir.glob('**/*.txt') do |f|
106+
assert globbed_files.include?(f.name)
107+
end
108+
109+
zf.dir.glob('globTest/foo/**/*.txt') do |f|
110+
assert_equal globbed_files[0], f.name
111+
end
112+
113+
zf.dir.chdir('globTest/foo')
114+
zf.dir.glob('**/*.txt') do |f|
115+
assert_equal globbed_files[0], f.name
116+
end
117+
end
118+
end
101119

102120
def test_open_new
103121
::Zip::File.open(TEST_ZIP) do |zf|

0 commit comments

Comments
 (0)
0