lib/pork.rb in pork-1.3.1 vs lib/pork.rb in pork-1.4.0

- old
+ new

@@ -11,22 +11,36 @@ def describe desc=:default, &suite; Executor.describe(desc, &suite); end def would desc=:default, &test ; Executor.would( desc, &test ); end end # default to :shuffled while eliminating warnings for uninitialized ivar - def self.execute_mode execute=nil - @execute = execute || @execute ||= :shuffled + def self.execute_mode mode=nil + @execute_mode = mode || @execute_mode ||= :shuffled end + def self.report_mode mode=nil + @report_mode = mode || @report_mode ||= :dot + require "pork/report/#{@report_mode}" + @report_mode + end + + def self.report_class + const_get(report_mode.to_s.capitalize) + end + + def self.report_extensions + @report_extensions ||= [] + end + def self.Rainbows! require 'pork/extra/rainbows' - Pork::Stat.__send__(:include, Pork::Rainbows) + report_extensions << Rainbows end def self.show_source require 'pork/extra/show_source' - Pork::Stat.__send__(:include, Pork::ShowSource) + report_extensions << ShowSource end def self.stat @stat ||= Pork::Stat.new end @@ -37,38 +51,54 @@ else Thread.current.randomizer.seed # Rubinius (rbx) end end + def self.reseed + if ENV['PORK_SEED'] + seed + else + new_seed = Random.new_seed + Random.srand(new_seed) + new_seed + end + end + + def self.srand + case ENV['PORK_SEED'] + when nil, 'random' + Random.srand(seed) + else + Random.srand(Integer(ENV['PORK_SEED'])) + end + end + def self.trap sig='SIGINT' Signal.trap(sig) do stat.report puts "\nterminated by signal #{sig}" exit 255 end end def self.execute - Random.srand(ENV['PORK_SEED'].to_i) if ENV['PORK_SEED'] - seed if ENV['PORK_TEST'] - require 'pork/mode/shuffled' + require 'pork/isolate' if tests = Executor[ENV['PORK_TEST']] - paths, imps = - tests.group_by{ |p| p.kind_of?(Array) }.values_at(true, false) - @stat = Executor.execute(execute_mode, stat, paths) if paths - @stat = imps.inject(stat){ |s, i| i.execute(execute_mode, s) } if imps + @stat = Executor.execute(execute_mode, stat, tests) else puts "Cannot find test: #{ENV['PORK_TEST']}" exit 254 end else @stat = Executor.execute(execute_mode, stat) end end def self.run + srand execute_mode(ENV['PORK_MODE']) + report_mode(ENV['PORK_REPORT']) trap execute stat.report end