diff --git a/lib/zip/filesystem.rb b/lib/zip/filesystem.rb index fb64325b..692017ef 100644 --- a/lib/zip/filesystem.rb +++ b/lib/zip/filesystem.rb @@ -573,6 +573,10 @@ def get_output_stream(fileName, permissionInt = nil, &aProc) @zipFile.get_output_stream(expand_to_entry(fileName), permissionInt, &aProc) end + def glob(*args, &block) + @zipFile.glob(*args, &block) + end + def read(fileName) @zipFile.read(expand_to_entry(fileName)) end diff --git a/test/filesystem/directory_test.rb b/test/filesystem/directory_test.rb index ec0a7371..f20a6dc1 100644 --- a/test/filesystem/directory_test.rb +++ b/test/filesystem/directory_test.rb @@ -3,6 +3,7 @@ class ZipFsDirectoryTest < MiniTest::Test TEST_ZIP = 'test/data/generated/zipWithDirs_copy.zip' + GLOB_TEST_ZIP = 'test/data/globTest.zip' def setup FileUtils.cp('test/data/zipWithDirs.zip', TEST_ZIP) @@ -93,11 +94,23 @@ def test_chroot end end - # Globbing not supported yet - # def test_glob - # # test alias []-operator too - # fail "implement test" - # end + def test_glob + globbed_files = [ + 'globTest/foo/bar/baz/foo.txt', + 'globTest/foo.txt', + 'globTest/food.txt' + ] + + ::Zip::File.open(GLOB_TEST_ZIP) do |zf| + zf.dir.glob('**/*.txt') do |f| + assert globbed_files.include?(f.name) + end + + zf.dir.glob('globTest/foo/**/*.txt') do |f| + assert_equal globbed_files[0], f.name + end + end + end def test_open_new ::Zip::File.open(TEST_ZIP) do |zf|