Module: TestBench

Defined in:
lib/test_bench/cli.rb,
lib/test_bench/run.rb,
lib/test_bench/output.rb,
lib/test_bench/output/log.rb,
lib/test_bench/output/raw.rb,
lib/test_bench/test_bench.rb,
lib/test_bench/output/timer.rb,
lib/test_bench/controls/path.rb,
lib/test_bench/controls/time.rb,
lib/test_bench/output/buffer.rb,
lib/test_bench/output/writer.rb,
lib/test_bench/controls/depth.rb,
lib/test_bench/controls/error.rb,
lib/test_bench/output/summary.rb,
lib/test_bench/run/substitute.rb,
lib/test_bench/controls/device.rb,
lib/test_bench/controls/result.rb,
lib/test_bench/controls/fixture.rb,
lib/test_bench/controls/pattern.rb,
lib/test_bench/output/batch_data.rb,
lib/test_bench/output/writer/sgr.rb,
lib/test_bench/controls/directory.rb,
lib/test_bench/controls/test_file.rb,
lib/test_bench/output/print_error.rb,
lib/test_bench/cli/parse_arguments.rb,
lib/test_bench/environment/boolean.rb,
lib/test_bench/deactivation_variants.rb,
lib/test_bench/output/summary/session.rb,
lib/test_bench/controls/output/styling.rb,
lib/test_bench/output/timer/substitute.rb,
lib/test_bench/controls/caller_location.rb,
lib/test_bench/controls/output/exercise.rb,
lib/test_bench/output/writer/dependency.rb,
lib/test_bench/output/writer/substitute.rb,
lib/test_bench/controls/output/log_level.rb,
lib/test_bench/controls/output/batch_data.rb,
lib/test_bench/controls/output/escape_code.rb,
lib/test_bench/controls/output/print_error.rb,
lib/test_bench/fixtures/configure_receiver.rb,
lib/test_bench/controls/output/summary/error.rb,
lib/test_bench/controls/output/detail_setting.rb,
lib/test_bench/controls/output/summary/session.rb,
lib/test_bench/controls/output/newline_character.rb

Defined Under Namespace

Modules: CLI, Controls, DeactivationVariants, Defaults, Environment, Fixtures, Output Classes: Run

Constant Summary collapse

Session =
Fixture::Session

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#session=(value) ⇒ Object (writeonly)

Sets the attribute session

Parameters:

  • value

    the value to set the attribute session to.



11
12
13
# File 'lib/test_bench/test_bench.rb', line 11

def session=(value)
  @session = value
end

Class Method Details

.activate(receiver = nil, session: nil) ⇒ Object



28
29
30
31
32
# File 'lib/test_bench/test_bench.rb', line 28

def self.activate(receiver=nil, session: nil)
  receiver ||= TOPLEVEL_BINDING.receiver

  fixture(session, receiver: receiver)
end

.build_session(output: nil, abort_on_error: nil, **args) ⇒ Object



62
63
64
65
66
67
# File 'lib/test_bench/test_bench.rb', line 62

def self.build_session(output: nil, abort_on_error: nil, **args)
  output ||= Output.build
  error_policy = session_error_policy(abort_on_error)

  Fixture::Session.build(output: output, error_policy: error_policy, **args)
end

.context(title = nil, session: nil, &block) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/test_bench/test_bench.rb', line 42

def self.context(title=nil, session: nil, &block)
  evaluate(session: session) do
    context(title) do
      instance_exec(&block)
    end
  end
end

.evaluate(session: nil, &block) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/test_bench/test_bench.rb', line 34

def self.evaluate(session: nil, &block)
  fixture = fixture(session)

  fixture.context do
    fixture.instance_exec(&block)
  end
end

.exit_code(session, fail_deactivated_tests: nil) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/test_bench/test_bench.rb', line 79

def self.exit_code(session, fail_deactivated_tests: nil)
  if fail_deactivated_tests.nil?
    fail_deactivated_tests = Defaults.fail_deactivated_tests
  end

  if session.failed?
    1
  elsif session.skip?
    fail_deactivated_tests ? 2 : 0
  else
    0
  end
end

.fixture(session = nil, receiver: nil) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/test_bench/test_bench.rb', line 50

def self.fixture(session=nil, receiver: nil)
  session ||= self.session
  receiver ||= Object.new

  receiver.extend(Fixture)
  receiver.extend(DeactivationVariants)

  receiver.test_session = session

  receiver
end

.outputObject



13
14
15
# File 'lib/test_bench/test_bench.rb', line 13

def self.output
  session.output
end

.sessionObject



2
3
4
5
6
7
8
9
10
# File 'lib/test_bench/test_bench.rb', line 2

def self.session
  @session ||= build_session.tap do |session|
    at_exit do
      exit_code = exit_code(session)

      exit(exit_code) unless exit_code.zero?
    end
  end
end

.session_error_policy(abort_on_error = nil) ⇒ Object



69
70
71
72
73
74
75
76
77
# File 'lib/test_bench/test_bench.rb', line 69

def self.session_error_policy(abort_on_error=nil)
  abort_on_error = Defaults.abort_on_error if abort_on_error.nil?

  if abort_on_error
    :abort
  else
    :rescue
  end
end

.set_output(output, session: nil) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/test_bench/test_bench.rb', line 17

def self.set_output(output, session: nil)
  session ||= self.session

  if output.is_a?(Array)
    output = Fixture::Output::Multiple.build(*output)
  end

  session.output = output
end