Class: Ruptr::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/ruptr/report.rb

Defined Under Namespace

Classes: Builder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeReport

Returns a new instance of Report.



9
10
11
12
13
14
15
16
17
# File 'lib/ruptr/report.rb', line 9

def initialize
  @results = {}
  @failed = false
  @total_assertions = @total_ineffective_assertions = 0
  @total_test_cases = 0
  @total_test_cases_by_status = Hash.new(0)
  @total_test_groups = 0
  @total_test_groups_by_status = Hash.new(0)
end

Instance Attribute Details

#total_assertionsObject (readonly)

Returns the value of attribute total_assertions.



19
20
21
# File 'lib/ruptr/report.rb', line 19

def total_assertions
  @total_assertions
end

#total_ineffective_assertionsObject (readonly)

Returns the value of attribute total_ineffective_assertions.



19
20
21
# File 'lib/ruptr/report.rb', line 19

def total_ineffective_assertions
  @total_ineffective_assertions
end

#total_test_casesObject (readonly)

Returns the value of attribute total_test_cases.



19
20
21
# File 'lib/ruptr/report.rb', line 19

def total_test_cases
  @total_test_cases
end

#total_test_groupsObject (readonly)

Returns the value of attribute total_test_groups.



19
20
21
# File 'lib/ruptr/report.rb', line 19

def total_test_groups
  @total_test_groups
end

Instance Method Details

#[](k) ⇒ Object



42
# File 'lib/ruptr/report.rb', line 42

def [](k) = @results[k]

#[]=(k, v) ⇒ Object

Raises:

  • (ArgumentError)


44
45
46
47
# File 'lib/ruptr/report.rb', line 44

def []=(k, v)
  raise ArgumentError unless k.is_a?(Symbol)
  @results[k] = v
end

#bump(k, n = 1) ⇒ Object

Raises:

  • (ArgumentError)


49
50
51
52
# File 'lib/ruptr/report.rb', line 49

def bump(k, n = 1)
  raise ArgumentError unless k.is_a?(Symbol)
  @results[k] = (v = @results[k]).nil? ? n : v + n
end

#each_test_case_resultObject



39
# File 'lib/ruptr/report.rb', line 39

def each_test_case_result(&) = each_test_element_result(TestCase, &)

#each_test_element_result(klass = TestElement) ⇒ Object



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

def each_test_element_result(klass = TestElement, &)
  return to_enum __method__, klass unless block_given?
  @results.each { |te, tr| yield te, tr if te.is_a?(klass) }
end

#each_test_group_resultObject



40
# File 'lib/ruptr/report.rb', line 40

def each_test_group_result(&) = each_test_element_result(TestGroup, &)

#emit(sink) ⇒ Object



79
80
81
82
83
84
# File 'lib/ruptr/report.rb', line 79

def emit(sink)
  sink.begin_plan({ planned_test_case_count: @total_test_cases })
  each_test_group_result { |tg, tr| sink.submit_group(tg, tr) }
  each_test_case_result { |tc, tr| sink.submit_case(tc, tr) }
  sink.finish_plan(@results.filter { |k, _v| k.is_a?(Symbol) })
end

#failed?Boolean

Returns:

  • (Boolean)


23
# File 'lib/ruptr/report.rb', line 23

def failed? = @failed

#freezeObject



72
73
74
75
76
77
# File 'lib/ruptr/report.rb', line 72

def freeze
  @results.freeze
  @total_test_cases_by_status.freeze
  @total_test_groups_by_status.freeze
  super
end

#passed?Boolean

Returns:

  • (Boolean)


24
# File 'lib/ruptr/report.rb', line 24

def passed? = !failed?

#record_result(te, tr) ⇒ Object

Raises:

  • (ArgumentError)


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/ruptr/report.rb', line 54

def record_result(te, tr)
  raise ArgumentError, "result already recorded" if @results[te]
  case
  when te.test_case?
    @total_test_cases += 1
    @total_test_cases_by_status[tr.status] += 1
  when te.test_group?
    @total_test_groups += 1
    @total_test_groups_by_status[tr.status] += 1
  else
    raise ArgumentError
  end
  @total_assertions += tr.assertions
  @total_ineffective_assertions += tr.ineffective_assertions
  @failed ||= tr.failed?
  @results[te] = tr
end

#total_test_cases_by_status(status) ⇒ Object



26
# File 'lib/ruptr/report.rb', line 26

def total_test_cases_by_status(status) = @total_test_cases_by_status[status]

#total_test_groups_by_status(status) ⇒ Object



27
# File 'lib/ruptr/report.rb', line 27

def total_test_groups_by_status(status) = @total_test_groups_by_status[status]