diff --git a/lib/zip/entry_set.rb b/lib/zip/entry_set.rb index ddf39c1..21bfd38 100644 --- a/lib/zip/entry_set.rb +++ b/lib/zip/entry_set.rb @@ -57,7 +57,7 @@ module Zip @entry_set[to_key(entry.parent_as_string)] end - def glob(pattern, flags = ::File::FNM_PATHNAME | ::File::FNM_DOTMATCH) + def glob(pattern, flags = ::File::FNM_PATHNAME | ::File::FNM_DOTMATCH | ::File::FNM_EXTGLOB) entries.map do |entry| next nil unless ::File.fnmatch(pattern, entry.name.chomp('/'), flags) yield(entry) if block_given? diff --git a/test/entry_set_test.rb b/test/entry_set_test.rb index d47e49c..287d97a 100644 --- a/test/entry_set_test.rb +++ b/test/entry_set_test.rb @@ -149,4 +149,15 @@ class ZipEntrySetTest < MiniTest::Test # assert_equal(entries.size, res.size) # assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name }) end + + def test_glob3 + entries = [ + ::Zip::Entry.new('zf.zip', 'a/a'), + ::Zip::Entry.new('zf.zip', 'a/b'), + ::Zip::Entry.new('zf.zip', 'a/c') + ] + entrySet = ::Zip::EntrySet.new(entries) + + assert_equal(entries[0, 2].sort, entrySet.glob('a/{a,b}').sort) + end end