Module: Pork

Defined in:
lib/pork.rb,
lib/pork/api.rb,
lib/pork/env.rb,
lib/pork/stat.rb,
lib/pork/error.rb,
lib/pork/suite.rb,
lib/pork/expect.rb,
lib/pork/report.rb,
lib/pork/runner.rb,
lib/pork/context.rb,
lib/pork/inspect.rb,
lib/pork/version.rb,
lib/pork/executor.rb,
lib/pork/isolator.rb,
lib/pork/more/color.rb,
lib/pork/report/dot.rb,
lib/pork/more/should.rb,
lib/pork/mode/parallel.rb,
lib/pork/mode/shuffled.rb,
lib/pork/extra/rainbows.rb,
lib/pork/mode/sequential.rb,
lib/pork/extra/show_source.rb,
lib/pork/report/description.rb,
lib/pork/report/progressbar.rb,
lib/pork/more/bottomup_backtrace.rb

Defined Under Namespace

Modules: API, BottomupBacktrace, Color, Context, Rainbows, Should, ShowSource Classes: Description, Dot, Env, Executor, Expect, Inspect, Isolator, Parallel, Progressbar, Report, Runner, Sequential, Shuffled, Stat, Suite

Constant Summary collapse

Error =
Class.new(StandardError)
Failure =
Class.new(Error)
Skip =
Class.new(Error)
VERSION =
'2.0.0'

Class Method Summary collapse

Class Method Details

.autorun(auto = true) ⇒ Object



111
112
113
114
115
116
117
118
# File 'lib/pork.rb', line 111

def self.autorun auto=true
  @auto = auto
  @autorun ||= at_exit do
    next unless @auto
    run
    exit stat.failures + stat.errors + ($! && 1).to_i
  end
end

.executeObject



83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/pork.rb', line 83

def self.execute
  if ENV['PORK_TEST']
    if tests = Executor[ENV['PORK_TEST']]
      @stat = Executor.execute(:paths => tests)
    else
      puts "Cannot find test: #{ENV['PORK_TEST']}"
      exit 254
    end
  else
    @stat = Executor.execute
  end
end

.execute_extensionsObject



26
27
28
# File 'lib/pork.rb', line 26

def self.execute_extensions
  @execute_extensions ||= []
end

.execute_mode(mode = nil) ⇒ Object

default to :shuffled while eliminating warnings for uninitialized ivar



8
9
10
# File 'lib/pork.rb', line 8

def self.execute_mode mode=nil
  @execute_mode = mode || @execute_mode ||= :shuffled
end

.inspect_failure_mode(inspect = nil) ⇒ Object

default to :auto while eliminating warnings for uninitialized ivar



4
5
6
# File 'lib/pork/inspect.rb', line 4

def self.inspect_failure_mode inspect=nil
  @inspect = inspect || @inspect ||= :auto
end

.loaded(at = Time.now) ⇒ Object



106
107
108
109
# File 'lib/pork.rb', line 106

def self.loaded at=Time.now
  @at = at
  @files = $LOADED_FEATURES.size
end

.protected_exceptionsObject



30
31
32
# File 'lib/pork.rb', line 30

def self.protected_exceptions
  @protected_exceptions ||= [Pork::Error, StandardError]
end

.Rainbows!Object



34
35
36
37
# File 'lib/pork.rb', line 34

def self.Rainbows!
  require 'pork/extra/rainbows'
  report_extensions << Rainbows
end

.report_classObject



18
19
20
# File 'lib/pork.rb', line 18

def self.report_class
  const_get(report_mode.to_s.capitalize)
end

.report_extensionsObject



22
23
24
# File 'lib/pork.rb', line 22

def self.report_extensions
  @report_extensions ||= []
end

.report_mode(mode = nil) ⇒ Object



12
13
14
15
16
# File 'lib/pork.rb', line 12

def self.report_mode mode=nil
  @report_mode = mode || @report_mode ||= :dot
  require "pork/report/#{@report_mode}"
  @report_mode
end

.reseedObject



56
57
58
59
60
61
62
63
64
# File 'lib/pork.rb', line 56

def self.reseed
  if ENV['PORK_SEED']
    seed
  else
    new_seed = Random.new_seed
    Random.srand(new_seed)
    new_seed
  end
end

.runObject



96
97
98
99
100
101
102
103
104
# File 'lib/pork.rb', line 96

def self.run
  srand
  execute_mode(ENV['PORK_MODE'])
  report_mode(ENV['PORK_REPORT'])
  trap
  stat.loaded(@at, @files) if instance_variable_defined?(:@at)
  execute
  stat.report
end

.seedObject



48
49
50
51
52
53
54
# File 'lib/pork.rb', line 48

def self.seed
  @seed ||= if Random.const_defined?(:DEFAULT)
              Random::DEFAULT.seed
            else
              Thread.current.randomizer.seed # Rubinius (rbx)
            end
end

.show_sourceObject



39
40
41
42
# File 'lib/pork.rb', line 39

def self.show_source
  require 'pork/extra/show_source'
  report_extensions << ShowSource
end

.srandObject



66
67
68
69
70
71
72
73
# File 'lib/pork.rb', line 66

def self.srand
  case ENV['PORK_SEED']
  when nil, 'random'
    Random.srand(seed)
  else
    Random.srand(Integer(ENV['PORK_SEED']))
  end
end

.statObject



44
45
46
# File 'lib/pork.rb', line 44

def self.stat
  @stat ||= Pork::Stat.new
end

.trap(sig = 'SIGINT') ⇒ Object



75
76
77
78
79
80
81
# File 'lib/pork.rb', line 75

def self.trap sig='SIGINT'
  Signal.trap(sig) do
    stat.report
    puts "\nterminated by signal #{sig}"
    exit 255
  end
end