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.



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

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

.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



74
75
76
# File 'lib/assert/test.rb', line 74

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

#codeObject



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

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

#configObject



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

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

#context_classObject



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

def context_class
  self.context_info.klass
end

#context_infoObject



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

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

#file_lineObject



28
29
30
# File 'lib/assert/test.rb', line 28

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

#file_nameObject



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

def file_name; self.file_line.file;      end

#inspectObject



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

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



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

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

#nameObject



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

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

#outputObject



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

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

#run(&result_callback) ⇒ Object



63
64
65
66
67
68
69
70
71
72
# File 'lib/assert/test.rb', line 63

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



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

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