lib/spec_postfix/plugin.rb in danger-spec_postfix-0.0.1 vs lib/spec_postfix/plugin.rb in danger-spec_postfix-0.0.2
- old
+ new
@@ -1,40 +1,42 @@
# frozen_string_literal: true
require 'active_support/configurable'
+# Adding plugin
module Danger
- # Check that all test files in spec/ folder have `_spec` postfix.
- # Results are passed out as a string with warning.
- #
- # @example Running linter
- #
- # # Runs a linter
- # spec_postfix.lint
- #
- class DangerSpecPostfix < Plugin
- # Lints the test files. Will fail if any has no '_spec' postfix.
- # Generates a `string` with warning.
- #
- # @param [String] files
- # A globbed string which should return the files that you want to lint, defaults to nil.
- # if nil, modified and added files from the diff will be used.
- # @return [void]
- #
- def self.configuration
- @configuration ||= Configuration.new
- end
+ def self.configuration
+ @configuration ||= Configuration.new
+ end
- def self.configure
- yield configuration
+ def self.configure
+ yield configuration
+ end
+
+ # Adding opportunity to maintain exceptions list for plugin.
+ class Configuration
+ include ::ActiveSupport::Configurable
+
+ config_accessor(:spec_postfix_exceptions) do
+ ['spec/shared_examples/', 'spec/factories/', 'spec/support/', 'spec/rails_helper.rb', 'spec/spec_helper.rb']
end
+ end
+ # Lints the test files. Will fail if any has no '_spec' postfix.
+ # Generates a `string` with warning.
+ #
+ # @param [String] files
+ # A globbed string which should return the files that you want to lint, defaults to nil.
+ # if nil, modified and added files from the diff will be used.
+ # @return [void]
+ #
+ class DangerSpecPostfix < Plugin
def lint
changed_files.select { |f| f.match?(%r{^spec/.*rb$}) }
- .reject { |f| f.end_with?('_spec.rb') }
- .reject { |f| DangerSpecPostfix.configuration.exceptions.any? { |e| f.start_with?(e) } }
- .each { |f| warn(warning_generator(f)) }
+ .reject { |f| f.end_with?('_spec.rb') }
+ .reject { |f| Danger.configuration.spec_postfix_exceptions.any? { |e| f.start_with?(e) } }
+ .each { |f| warn(warning_generator(f)) }
end
private
def changed_files
@@ -42,13 +44,7 @@
end
def warning_generator(file)
"Tests should have `_spec` postfix: #{file}"
end
- end
-
- class DangerSpecPostfix::Configuration
- include ::ActiveSupport::Configurable
-
- config_accessor(:exceptions) { ['spec/shared_examples/', 'spec/factories/', 'spec/support/', 'spec/rails_helper.rb', 'spec/spec_helper.rb'] }
end
end