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