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