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.



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

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

Class Method Details

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



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

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.



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

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



76
77
78
# File 'lib/assert/test.rb', line 76

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

#codeObject



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

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

#configObject



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

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

#context_classObject



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

def context_class
  self.context_info.klass
end

#context_infoObject



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

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

#file_lineObject



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

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

#file_nameObject



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

def file_name; self.file_line.file;      end

#inspectObject



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

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



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

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

#nameObject



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

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

#outputObject



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

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

#run(&result_callback) ⇒ Object



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

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



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

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