Unverified Commit f2d63c52 authored by Dimitris Koutsogiorgas's avatar Dimitris Koutsogiorgas Committed by GitHub

Merge pull request #7539 from CocoaPods/manu-fix-preserve-glob-order

Return list of files preserving given pattern order on glob
parents 0778a2aa 99a2f74f
...@@ -129,24 +129,26 @@ module Pod ...@@ -129,24 +129,26 @@ module Pod
full_list = files full_list = files
end end
patterns_array = Array(patterns) patterns_array = Array(patterns)
exact_matches = full_list & patterns_array exact_matches = (full_list & patterns_array).to_set
patterns_array -= exact_matches
all_patterns = patterns_array.map do |pattern| unless patterns_array.empty?
list = patterns_array.flat_map do |pattern|
if exact_matches.include?(pattern)
pattern
else
if directory?(pattern) && dir_pattern if directory?(pattern) && dir_pattern
pattern += '/' unless pattern.end_with?('/') pattern += '/' unless pattern.end_with?('/')
pattern += dir_pattern pattern += dir_pattern
end end
dir_glob_equivalent_patterns(pattern) expanded_patterns = dir_glob_equivalent_patterns(pattern)
end.flatten full_list.select do |path|
list = exact_matches expanded_patterns.any? do |p|
unless all_patterns.empty?
list += full_list.select do |path|
all_patterns.any? do |p|
File.fnmatch(p, path, File::FNM_CASEFOLD | File::FNM_PATHNAME) File.fnmatch(p, path, File::FNM_CASEFOLD | File::FNM_PATHNAME)
end end
end end
end end
end
end
list = list.map { |path| Pathname.new(path) } list = list.map { |path| Pathname.new(path) }
if exclude_patterns if exclude_patterns
......
...@@ -199,6 +199,21 @@ module Pod ...@@ -199,6 +199,21 @@ module Pod
libBananalib.a libBananalib.a
) )
end end
it 'preserves pattern order' do
patterns = %w(
Classes/BananaPrivate.h
Classes/Banana.h
Classes/Banana.m
)
paths = @path_list.relative_glob(patterns).map(&:to_s)
paths.should == %w(
Classes/BananaPrivate.h
Classes/Banana.h
Classes/Banana.m
)
end
end end
describe 'Reading file system' do describe 'Reading file system' do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment