Class: Assert::Test

Inherits:
Object
  • Object
show all
Defined in:
lib/assert/test.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(build_data = nil) ⇒ Test

Returns a new instance of Test.



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

def initialize(build_data = nil)
  @build_data      = build_data || {}
  @result_callback = nil
end

Class Method Details

.for_block(name, context_info, config, &block) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/assert/test.rb', line 18

def self.for_block(name, context_info, config, &block)
  self.new(self.name_file_line_context_data(context_info, name).merge({
    :context_info => context_info,
    :config       => config,
    :code         => block
  }))
end

.for_method(method_name, context_info, config) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/assert/test.rb', line 26

def self.for_method(method_name, context_info, config)
  self.new(self.name_file_line_context_data(context_info, method_name).merge({
    :context_info => context_info,
    :config       => config,
    :code         => proc{ self.send(method_name) }
  }))
end

.name_file_line_context_data(ci, name) ⇒ Object

a Test is some code/method to run in the scope of a Context that may produce results



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

def self.name_file_line_context_data(ci, name)
  { :name      => ci.test_name(name),
    :file_line => ci.called_from
  }
end

Instance Method Details

#<=>(other_test) ⇒ Object



85
86
87
# File 'lib/assert/test.rb', line 85

def <=>(other_test)
  self.name <=> other_test.name
end

#codeObject



70
71
72
# File 'lib/assert/test.rb', line 70

def code
  @code ||= @build_data[:code]
end

#configObject



66
67
68
# File 'lib/assert/test.rb', line 66

def config
  @config ||= @build_data[:config]
end

#context_classObject



62
63
64
# File 'lib/assert/test.rb', line 62

def context_class
  self.context_info.klass
end

#context_infoObject



58
59
60
# File 'lib/assert/test.rb', line 58

def context_info
  @context_info ||= @build_data[:context_info]
end

#file_lineObject



39
40
41
# File 'lib/assert/test.rb', line 39

def file_line
  @file_line ||= FileLine.parse((@build_data[:file_line] || '').to_s)
end

#file_nameObject



43
# File 'lib/assert/test.rb', line 43

def file_name; self.file_line.file;      end

#inspectObject



89
90
91
92
93
94
# File 'lib/assert/test.rb', line 89

def inspect
  attributes_string = ([:name, :context_info].collect do |attr|
    "@#{attr}=#{self.send(attr).inspect}"
  end).join(" ")
  "#<#{self.class}:#{'0x0%x' % (object_id << 1)} #{attributes_string}>"
end

#line_numObject



44
# File 'lib/assert/test.rb', line 44

def line_num;  self.file_line.line.to_i; end

#nameObject



46
47
48
# File 'lib/assert/test.rb', line 46

def name
  @name ||= (@build_data[:name] || '')
end

#outputObject



50
51
52
# File 'lib/assert/test.rb', line 50

def output
  @output ||= (@build_data[:output] || '')
end

#run(&result_callback) ⇒ Object



74
75
76
77
78
79
80
81
82
83
# File 'lib/assert/test.rb', line 74

def run(&result_callback)
  @result_callback = result_callback || proc{ |result| } # noop by default
  scope = self.context_class.new(self, self.config, @result_callback)
  start_time = Time.now
  capture_output do
    self.context_class.run_arounds(scope){ run_test(scope) }
  end
  @result_callback = nil
  @run_time = Time.now - start_time
end

#run_timeObject



54
55
56
# File 'lib/assert/test.rb', line 54

def run_time
  @run_time ||= (@build_data[:run_time] || 0)
end