diff --git a/spec/ameba/glob_utils_spec.cr b/spec/ameba/glob_utils_spec.cr index 41309195..153b7909 100644 --- a/spec/ameba/glob_utils_spec.cr +++ b/spec/ameba/glob_utils_spec.cr @@ -1,11 +1,7 @@ require "../spec_helper" module Ameba - struct GlobUtilsClass - include GlobUtils - end - - subject = GlobUtilsClass.new + subject = GlobUtils current_file_basename = File.basename(__FILE__) current_file_path = "spec/ameba/#{current_file_basename}" @@ -45,6 +41,12 @@ module Ameba subject.expand(["**/#{current_file_basename}", "**/#{current_file_basename}"]) .should eq [current_file_path] 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 diff --git a/src/ameba/glob_utils.cr b/src/ameba/glob_utils.cr index 71cd0cb5..63dd67cc 100644 --- a/src/ameba/glob_utils.cr +++ b/src/ameba/glob_utils.cr @@ -1,6 +1,8 @@ module Ameba # Helper module that is utilizes helpers for working with globs. module GlobUtils + extend self + # Returns all files that match specified globs. # 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 # ``` def expand(globs) - globs.flat_map do |glob| - glob += "/**/*.cr" if File.directory?(glob) - Dir[glob] - end.uniq! + globs + .flat_map do |glob| + glob += "/**/*.cr" if File.directory?(glob) + Dir[glob] + end + .uniq! + .select! { |path| File.file?(path) } end private def rejected_globs(globs)