Class: Tryouts::TestCaseResultPacket

Inherits:
Data
  • Object
show all
Defined in:
lib/tryouts/test_case.rb

Overview

Test case result packet for formatters Replaces the simple Hash aggregation with a rich, immutable data structure containing all execution context and results needed by formatters

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#actual_resultsObject (readonly)

Returns the value of attribute actual_results

Returns:

  • (Object)

    the current value of actual_results



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def actual_results
  @actual_results
end

#captured_outputObject (readonly)

Returns the value of attribute captured_output

Returns:

  • (Object)

    the current value of captured_output



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def captured_output
  @captured_output
end

#elapsed_timeObject (readonly)

Returns the value of attribute elapsed_time

Returns:

  • (Object)

    the current value of elapsed_time



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def elapsed_time
  @elapsed_time
end

#errorObject (readonly)

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def error
  @error
end

#expected_resultsObject (readonly)

Returns the value of attribute expected_results

Returns:

  • (Object)

    the current value of expected_results



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def expected_results
  @expected_results
end

#metadataObject (readonly)

Returns the value of attribute metadata

Returns:

  • (Object)

    the current value of metadata



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def 
  @metadata
end

#result_valueObject (readonly)

Returns the value of attribute result_value

Returns:

  • (Object)

    the current value of result_value



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def result_value
  @result_value
end

#statusObject (readonly)

Returns the value of attribute status

Returns:

  • (Object)

    the current value of status



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def status
  @status
end

#test_caseObject (readonly)

Returns the value of attribute test_case

Returns:

  • (Object)

    the current value of test_case



131
132
133
# File 'lib/tryouts/test_case.rb', line 131

def test_case
  @test_case
end

Class Method Details

.from_error(test_case, error, captured_output: nil, elapsed_time: nil, metadata: {}) ⇒ Object

Create a result packet for error cases



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# File 'lib/tryouts/test_case.rb', line 202

def self.from_error(test_case, error, captured_output: nil, elapsed_time: nil, metadata: {})
  error_message = error ? error.message : '<exception is nil>'

  # Include backtrace in error message when stack traces are enabled
  error_display = if error && Tryouts.stack_traces?
    backtrace_preview = Console.pretty_backtrace(error.backtrace, limit: 3).join("\n    ")
    "(#{error.class}) #{error_message}\n    #{backtrace_preview}"
  else
    "(#{error.class}) #{error_message}"
  end

  new(
    test_case: test_case,
    status: :error,
    result_value: nil,
    actual_results: [error_display],
    expected_results: [],
    error: error,
    captured_output: captured_output,
    elapsed_time: elapsed_time,
    metadata: ,
  )
end

.from_failure(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {}) ⇒ Object

Create a result packet for failed tests



187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/tryouts/test_case.rb', line 187

def self.from_failure(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {})
  new(
    test_case: test_case,
    status: :failed,
    result_value: result_value,
    actual_results: actual_results,
    expected_results: expected_results,
    error: nil,
    captured_output: captured_output,
    elapsed_time: elapsed_time,
    metadata: ,
  )
end

.from_success(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {}) ⇒ Object

Create a basic result packet for successful tests



172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/tryouts/test_case.rb', line 172

def self.from_success(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {})
  new(
    test_case: test_case,
    status: :passed,
    result_value: result_value,
    actual_results: actual_results,
    expected_results: expected_results,
    error: nil,
    captured_output: captured_output,
    elapsed_time: elapsed_time,
    metadata: ,
  )
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


150
151
152
# File 'lib/tryouts/test_case.rb', line 150

def error?
  status == :error
end

#failed?Boolean

Returns:

  • (Boolean)


146
147
148
# File 'lib/tryouts/test_case.rb', line 146

def failed?
  status == :failed
end

#first_actualObject

Helper for formatter access to first actual/expected values



163
164
165
# File 'lib/tryouts/test_case.rb', line 163

def first_actual
  actual_results&.first
end

#first_expectedObject



167
168
169
# File 'lib/tryouts/test_case.rb', line 167

def first_expected
  expected_results&.first
end

#has_error?Boolean

Returns:

  • (Boolean)


158
159
160
# File 'lib/tryouts/test_case.rb', line 158

def has_error?
  !error.nil?
end

#has_output?Boolean

Returns:

  • (Boolean)


154
155
156
# File 'lib/tryouts/test_case.rb', line 154

def has_output?
  captured_output && !captured_output.empty?
end

#passed?Boolean

Returns:

  • (Boolean)


142
143
144
# File 'lib/tryouts/test_case.rb', line 142

def passed?
  status == :passed
end