class TestBench::Output::Raw

Constants

Error

Attributes

current_batch[RW]
detail_setting[W]
previous_byte_offset[W]
verbose[W]

Public Class Methods

assure_detail_setting(detail_setting) click to toggle source
# File lib/test_bench/output/raw.rb, line 328
def self.assure_detail_setting(detail_setting)
  unless detail_settings.include?(detail_setting)
    raise Error, "Invalid detail setting #{detail_setting.inspect} (Valid values: #{detail_settings.map(&:inspect).join(', ')})"
  end
end
build(verbose: nil, detail: nil, omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, device: nil, styling: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 57
def self.build(verbose: nil, detail: nil, omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, device: nil, styling: nil)
  instance = new
  instance.configure(verbose: verbose, detail: detail, omit_backtrace_pattern: omit_backtrace_pattern, reverse_backtraces: reverse_backtraces, writer: writer, device: device, styling: styling)
  instance
end
configure(receiver, attr_name: nil, **args) click to toggle source
# File lib/test_bench/output/raw.rb, line 63
def self.configure(receiver, attr_name: nil, **args)
  attr_name ||= :raw_output

  instance = build(**args)
  receiver.public_send(:"#{attr_name}=", instance)
  instance
end
default_detail_setting() click to toggle source
# File lib/test_bench/output/raw.rb, line 342
def self.default_detail_setting
  detail_settings.fetch(0)
end
detail_settings() click to toggle source
# File lib/test_bench/output/raw.rb, line 334
def self.detail_settings
  [
    :failure,
    :on,
    :off
  ]
end

Public Instance Methods

batch_finished(batch_data) click to toggle source
# File lib/test_bench/output/raw.rb, line 32
def batch_finished(batch_data)
  if batch_data.depth.zero?
    self.current_batch = nil
  end
end
batch_starting(batch_data) click to toggle source
# File lib/test_bench/output/raw.rb, line 26
def batch_starting(batch_data)
  if batch_data.depth.zero?
    self.current_batch = batch_data
  end
end
comment(text) click to toggle source
# File lib/test_bench/output/raw.rb, line 280
def comment(text)
  writer
    .indent
    .text(text)
    .newline
end
configure(verbose: nil, detail: nil, omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, device: nil, styling: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 43
def configure(verbose: nil, detail: nil, omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, device: nil, styling: nil)
  unless detail.nil?
    self.class.assure_detail_setting(detail)
  end

  self.detail_setting = detail unless detail.nil?
  self.verbose = verbose unless verbose.nil?

  self.omit_backtrace_pattern = omit_backtrace_pattern unless omit_backtrace_pattern.nil?
  self.reverse_backtraces = reverse_backtraces unless reverse_backtraces.nil?

  Writer.configure(self, writer: writer, styling: styling, device: device)
end
default_test_title() click to toggle source
# File lib/test_bench/output/raw.rb, line 324
def default_test_title
  'Test'
end
detail(text) click to toggle source
# File lib/test_bench/output/raw.rb, line 287
def detail(text)
  return unless verbose? || detail?

  if verbose? && !detail?
    text = "(detail omitted: #{text})"
  end

  writer
    .indent
    .text(text)
    .newline
end
detail?(result=nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 71
def detail?(result=nil)
  result ||= current_batch&.result

  case detail_setting
  when :failure
    result != true
  when :on
    true
  when :off
    false
  end
end
detail_setting() click to toggle source
# File lib/test_bench/output/raw.rb, line 19
def detail_setting
  @detail_setting ||= Defaults.detail
end
enter_context(title, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 84
def enter_context(title, batch_data: nil)
  batch_starting(batch_data) unless batch_data.nil?

  return if title.nil?

  writer
    .indent
    .escape_code(:green)
    .text(title)
    .escape_code(:reset_fg)
    .newline

  writer.increase_indentation
end
enter_file(path) click to toggle source
# File lib/test_bench/output/raw.rb, line 300
def enter_file(path)
  text = "Running #{path}"

  writer.text(text).newline

  self.previous_byte_offset = writer.byte_offset
end
error(error) click to toggle source
# File lib/test_bench/output/raw.rb, line 276
def error(error)
  print_error(error)
end
exit_context(title, result, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 99
def exit_context(title, result, batch_data: nil)
  return if title.nil?

  writer.decrease_indentation

  if verbose?
    text = "Finished context #{title.inspect} (Result: #{result_text(result)})"

    color = result ? :green : :red

    writer
      .indent
      .escape_code(:faint).escape_code(:italic).escape_code(color)
      .text(text)
      .escape_code(:reset_fg).escape_code(:reset_italic).escape_code(:reset_intensity)
      .newline
  end

  if writer.indentation_depth.zero?
    writer.newline
  end

ensure
  batch_finished(batch_data) unless batch_data.nil?
end
exit_file(path, result) click to toggle source
# File lib/test_bench/output/raw.rb, line 308
def exit_file(path, result)
  unless writer.byte_offset > previous_byte_offset
    writer
      .escape_code(:faint)
      .text("(Nothing written)")
      .escape_code(:reset_intensity)
      .newline

    writer.newline
  end
end
finish_fixture(fixture, result, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 256
def finish_fixture(fixture, result, batch_data: nil)
  return unless verbose?

  fixture_class = fixture.class.inspect

  text = "Finished fixture (Fixture: #{fixture_class}, Result: #{result_text(result)})"

  writer.decrease_indentation

  writer
    .indent
    .escape_code(:magenta)
    .text(text)
    .escape_code(:reset_fg)
    .newline

ensure
  batch_finished(batch_data) unless batch_data.nil?
end
finish_test(title, result, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 172
def finish_test(title, result, batch_data: nil)
  batch_data = nil if verbose?

  if batch_data&.passed? && title.nil?
    return
  end

  writer.decrease_indentation

  if batch_data.nil?
    print_test_result(title, result)
  end

ensure
  batch_finished(batch_data) unless batch_data.nil?
end
previous_byte_offset() click to toggle source
# File lib/test_bench/output/raw.rb, line 38
def previous_byte_offset
  @previous_byte_offset ||= 0
end
print_test_result(title, result) click to toggle source
result_text(result) click to toggle source
# File lib/test_bench/output/raw.rb, line 320
def result_text(result)
  result ? 'pass' : 'failure'
end
skip_context(title) click to toggle source
# File lib/test_bench/output/raw.rb, line 125
def skip_context(title)
  return if title.nil?

  writer
    .indent
    .escape_code(:yellow)
    .text(title)
    .escape_code(:reset_fg)
    .newline
end
skip_test(title) click to toggle source
# File lib/test_bench/output/raw.rb, line 220
def skip_test(title)
  title ||= default_test_title

  if writer.styling?
    text = title
  else
    text = "#{title} (skipped)"
  end

  writer
    .indent
    .escape_code(:yellow)
    .text(text)
    .escape_code(:reset_fg)
    .newline
end
start_fixture(fixture, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 237
def start_fixture(fixture, batch_data: nil)
  batch_starting(batch_data) unless batch_data.nil?

  return unless verbose?

  fixture_class = fixture.class.inspect

  text = "Starting fixture (Fixture: #{fixture_class})"

  writer
    .indent
    .escape_code(:blue)
    .text(text)
    .escape_code(:reset_fg)
    .newline

  writer.increase_indentation
end
start_test(title, batch_data: nil) click to toggle source
# File lib/test_bench/output/raw.rb, line 136
def start_test(title, batch_data: nil)
  batch_starting(batch_data) unless batch_data.nil?

  batch_data = nil if verbose

  if batch_data&.passed? && title.nil?
    return
  end

  if batch_data.nil?
    if title.nil?
      text = "Starting test"
    else
      text = "Starting test #{title.inspect}"
    end

    writer
      .indent
      .escape_code(:faint)
      .escape_code(:italic)
      .escape_code(:blue)
      .text(text)
      .escape_code(:reset_fg)
      .escape_code(:reset_italic)
      .escape_code(:reset_intensity)
      .newline

  else
    result = batch_data.result

    print_test_result(title, result)
  end

  writer.increase_indentation
end
verbose() click to toggle source
# File lib/test_bench/output/raw.rb, line 11
def verbose
  instance_variable_defined?(:@verbose) ?
    @verbose :
    @verbose = Defaults.verbose
end
Also aliased as: verbose?
verbose?()
Alias for: verbose