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.



31
32
33
34
# File 'lib/assert/test.rb', line 31

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

Class Method Details

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



15
16
17
18
19
20
21
# File 'lib/assert/test.rb', line 15

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



23
24
25
26
27
28
29
# File 'lib/assert/test.rb', line 23

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

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



9
10
11
12
13
# File 'lib/assert/test.rb', line 9

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



82
83
84
# File 'lib/assert/test.rb', line 82

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

#codeObject



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

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

#configObject



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

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

#context_classObject



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

def context_class
  self.context_info.klass
end

#context_infoObject



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

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

#file_lineObject



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

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

#file_nameObject



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

def file_name; self.file_line.file;      end

#inspectObject



86
87
88
89
90
91
# File 'lib/assert/test.rb', line 86

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



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

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

#nameObject



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

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

#outputObject



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

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

#run(&result_callback) ⇒ Object



71
72
73
74
75
76
77
78
79
80
# File 'lib/assert/test.rb', line 71

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



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

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