Merge pull request #460 from crystal-ameba/fix-issue-459

Make sure we only return files from `GlobUtils#expand` method
This commit is contained in:
Sijawusz Pur Rahnama 2024-04-17 23:46:44 +02:00 committed by GitHub
commit 6d03cef6df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 9 deletions

View File

@ -1,11 +1,7 @@
require "../spec_helper" require "../spec_helper"
module Ameba module Ameba
struct GlobUtilsClass subject = GlobUtils
include GlobUtils
end
subject = GlobUtilsClass.new
current_file_basename = File.basename(__FILE__) current_file_basename = File.basename(__FILE__)
current_file_path = "spec/ameba/#{current_file_basename}" current_file_path = "spec/ameba/#{current_file_basename}"
@ -45,6 +41,12 @@ module Ameba
subject.expand(["**/#{current_file_basename}", "**/#{current_file_basename}"]) subject.expand(["**/#{current_file_basename}", "**/#{current_file_basename}"])
.should eq [current_file_path] .should eq [current_file_path]
end end
it "does not list folders" do
subject.expand(["**/*"]).each do |path|
fail "#{path.inspect} should be a file" unless File.file?(path)
end
end
end end
end end
end end

View File

@ -1,6 +1,8 @@
module Ameba module Ameba
# Helper module that is utilizes helpers for working with globs. # Helper module that is utilizes helpers for working with globs.
module GlobUtils module GlobUtils
extend self
# Returns all files that match specified globs. # Returns all files that match specified globs.
# Globs can have wildcards or be rejected: # Globs can have wildcards or be rejected:
# #
@ -20,10 +22,13 @@ module Ameba
# expand(["spec/*.cr", "src"]) # => all files in src folder + first level specs # expand(["spec/*.cr", "src"]) # => all files in src folder + first level specs
# ``` # ```
def expand(globs) def expand(globs)
globs.flat_map do |glob| globs
glob += "/**/*.cr" if File.directory?(glob) .flat_map do |glob|
Dir[glob] glob += "/**/*.cr" if File.directory?(glob)
end.uniq! Dir[glob]
end
.uniq!
.select! { |path| File.file?(path) }
end end
private def rejected_globs(globs) private def rejected_globs(globs)