diff --git a/lib/face_control/checker_runner.rb b/lib/face_control/checker_runner.rb index b5c0c9a..698abfb 100644 --- a/lib/face_control/checker_runner.rb +++ b/lib/face_control/checker_runner.rb @@ -18,6 +18,8 @@ def comments private def relevant_filenames + return @filenames unless @checker.respond_to?(:relevant_globs) + @relevant_filenames ||= @checker.relevant_globs.map do |glob| @filenames.select do |filename| File.fnmatch?(glob, filename) diff --git a/lib/face_control/checkers/_example.rb b/lib/face_control/checkers/_example.rb index f620016..b54eeae 100644 --- a/lib/face_control/checkers/_example.rb +++ b/lib/face_control/checkers/_example.rb @@ -7,6 +7,7 @@ class Example # Define only if you use @options in the following methods attr_writer :options + # @optional # @return [Array] Shell globs to filter only files relevant to this checker # out of all files with added lines in the pull request def relevant_globs diff --git a/test/face_control/checker_runner_test.rb b/test/face_control/checker_runner_test.rb index ecacef7..faeba6d 100644 --- a/test/face_control/checker_runner_test.rb +++ b/test/face_control/checker_runner_test.rb @@ -1,17 +1,22 @@ require 'test_helper' -class TestChecker +class CheckerWithoutGlobs +end + +class CheckerWithGlobs def relevant_globs %w(*.rb Rakefile) end end class CheckerRunnerTest < Minitest::Test - def setup - @runner = FaceControl::CheckerRunner.new(TestChecker, %w(config/file.yml Rakefile assets/foo.coffee lib/foo.rb)) + def test_relevant_filenames_without_globs + runner = FaceControl::CheckerRunner.new(CheckerWithoutGlobs, %w(config/file.yml lib/foo.rb)) + assert_equal %w(config/file.yml lib/foo.rb), runner.send(:relevant_filenames) end - def test_relevant_filenames - assert_equal %w(lib/foo.rb Rakefile), @runner.send(:relevant_filenames) + def test_relevant_filenames_with_globs + runner = FaceControl::CheckerRunner.new(CheckerWithGlobs, %w(config/file.yml Rakefile assets/foo.coffee lib/foo.rb)) + assert_equal %w(lib/foo.rb Rakefile), runner.send(:relevant_filenames) end end