Top Level Namespace
Defined Under Namespace
Modules: PlainColorizer, RSpec Classes: String, TrunkAnalyticsListener
Instance Method Summary collapse
- #escape(str) ⇒ Object
- #exception_backtrace_lines(exception, example) ⇒ Object
-
#format_exception_backtrace(exception, example) ⇒ Object
trunk-ignore(rubocop/Metrics/MethodLength).
-
#format_exception_message(exception, example) ⇒ Object
Defer to RSpec’s own ExceptionPresenter so the failure_message field matches what users see in their RSpec console output (Failure/Error: <source line>, the exception class and message, and any “Caused by:” chain).
- #knapsack_detector_command? ⇒ Boolean
-
#knapsack_detector_mode? ⇒ Boolean
Knapsack example detector instantiates all test cases in order to determine how to shard them These instantiations should not generate test bundles, so we disable the gem when running under knapsack_pro:rspec_test_example_detector.
-
#legacy_format_exception_backtrace(exception) ⇒ Object
trunk-ignore(rubocop/Metrics/MethodLength).
- #legacy_format_exception_message(exception) ⇒ Object
- #trunk_disabled ⇒ Object
Instance Method Details
#escape(str) ⇒ Object
57 58 59 |
# File 'lib/trunk_spec_helper.rb', line 57 def escape(str) str.dump[1..-2] end |
#exception_backtrace_lines(exception, example) ⇒ Object
238 239 240 241 242 243 |
# File 'lib/trunk_spec_helper.rb', line 238 def exception_backtrace_lines(exception, example) presenter = RSpec::Core::Formatters::ExceptionPresenter.new(exception, example) Array(presenter.formatted_backtrace) rescue StandardError Array(exception.backtrace) end |
#format_exception_backtrace(exception, example) ⇒ Object
trunk-ignore(rubocop/Metrics/MethodLength)
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/trunk_spec_helper.rb', line 213 def format_exception_backtrace(exception, example) return '' unless exception lines = exception_backtrace_lines(exception, example) cause = exception.cause depth = 0 while cause && depth < 10 lines << '' lines << "Caused by: #{cause.class}: #{cause.}" lines.concat(exception_backtrace_lines(cause, example)) cause = cause.cause depth += 1 end result = lines.join("\n") # The exception presenter may choke on MultipleExceptionError, such as errors in before # and after hooks, so we fall back to the legacy formatter return legacy_format_exception_backtrace(exception) if result.strip.empty? result rescue StandardError legacy_format_exception_backtrace(exception) end |
#format_exception_message(exception, example) ⇒ Object
Defer to RSpec’s own ExceptionPresenter so the failure_message field matches what users see in their RSpec console output (Failure/Error: <source line>, the exception class and message, and any “Caused by:” chain).
203 204 205 206 207 208 209 210 |
# File 'lib/trunk_spec_helper.rb', line 203 def (exception, example) return '' unless exception presenter = RSpec::Core::Formatters::ExceptionPresenter.new(exception, example) presenter.fully_formatted(nil, PlainColorizer) rescue StandardError (exception) end |
#knapsack_detector_command? ⇒ Boolean
68 69 70 71 72 |
# File 'lib/trunk_spec_helper.rb', line 68 def knapsack_detector_command? command_line = "#{$PROGRAM_NAME} #{ARGV.join(' ')}".strip command_line.include?('knapsack_pro:rspec_test_example_detector') || command_line.include?('knapsack_pro:queue:rspec:initialize') end |
#knapsack_detector_mode? ⇒ Boolean
Knapsack example detector instantiates all test cases in order to determine how to shard them These instantiations should not generate test bundles, so we disable the gem when running under knapsack_pro:rspec_test_example_detector
64 65 66 |
# File 'lib/trunk_spec_helper.rb', line 64 def knapsack_detector_mode? knapsack_detector_command? end |
#legacy_format_exception_backtrace(exception) ⇒ Object
trunk-ignore(rubocop/Metrics/MethodLength)
256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/trunk_spec_helper.rb', line 256 def legacy_format_exception_backtrace(exception) case exception when RSpec::Core::MultipleExceptionError exception.all_exceptions.map do |e| if e.backtrace && !e.backtrace.empty? "#{e.class}: #{e.}\n#{e.backtrace.join("\n")}" else "#{e.class}: #{e.}" end end.join("\n\n") else exception.backtrace&.join("\n") || '' end end |
#legacy_format_exception_message(exception) ⇒ Object
245 246 247 248 249 250 251 252 253 |
# File 'lib/trunk_spec_helper.rb', line 245 def (exception) case exception when RSpec::Core::MultipleExceptionError = exception.all_exceptions.map { |e| "#{e.class}: #{e.}" } "#{exception.class}: #{.join(' | ')}" else exception.to_s end end |
#trunk_disabled ⇒ Object
74 75 76 77 |
# File 'lib/trunk_spec_helper.rb', line 74 def trunk_disabled knapsack_detector_mode? || ENV['DISABLE_RSPEC_TRUNK_FLAKY_TESTS'] == 'true' || ENV['TRUNK_ORG_URL_SLUG'].nil? || ENV['TRUNK_API_TOKEN'].nil? end |