lib/rails-audit/runner.rb in rails-audit-0.14.0 vs lib/rails-audit/runner.rb in rails-audit-0.15.0

- old
+ new

@@ -1,58 +1,62 @@ require 'yaml' module RailsAudit - def self.load_config - File.exist?('config/audit.yml') && YAML.load_file('config/audit.yml') || {} - end + class Runner + def initialize + @config = { 'Concurrency' => true, 'Rails' => true } + if File.exist? 'config/audit.yml' + @config = @config.merge YAML.load_file('config/audit.yml') + end + end - def self.get_config(config, name) - c = config[name] - { - rails: config['Rails'].nil? && true || config['Rails'], - params: c && c['Parameters'] || '', - enabled: (c.nil? || c['Enabled'].nil?) && true || c['Enabled'] - } - end + def get_config(name) + defaults = { 'Parameters' => '', 'Enabled' => true } + config = defaults.merge(@config[name] || {}) + { + rails: @config['Rails'], + params: config['Parameters'], + enabled: config['Enabled'] + } + end - def self.run - config = load_config + def run + concurrency = @config['Concurrency'] - concurrency = config['Concurrency'].nil? && true || config['Concurrency'] + failures = concurrency && run_threads || run_sequence - failures = concurrency && run_threads(config) || run_sequence(config) + if failures.any? + puts 'Failed tests:' + failures.each { |f| puts f } + end - if failures.any? - puts 'Failed tests:' - failures.each { |f| puts f } + failures.none? end - failures.none? - end + def run_sequence + failures = [] - def self.run_sequence(config) - failures = [] + Audits::ALL.each do |audit| + success = audit.run get_config(audit.get_name) + failures << audit.get_name unless success + end - Audits::ALL.each do |audit| - success = audit.run get_config(config, audit.get_name) - failures << audit.get_name unless success + failures end - failures - end + def run_threads + failures = [] + mutex = Mutex.new - def self.run_threads(config) - failures = [] - mutex = Mutex.new - - threads = Audits::ALL.map do |audit| - Thread.new do - success = audit.run get_config(config, audit.get_name) - mutex.synchronize { failures << audit.get_name unless success } + threads = Audits::ALL.map do |audit| + Thread.new do + success = audit.run get_config(audit.get_name) + mutex.synchronize { failures << audit.get_name unless success } + end end - end - threads.each { |t| t.join } + threads.each { |t| t.join } - failures + failures + end end end