Class: Tryouts::CLI::OutputManager

Inherits:
Object
  • Object
show all
Defined in:
lib/tryouts/cli/formatters/output_manager.rb

Overview

Output manager that coordinates all output through formatters

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(formatter, options = {}) ⇒ OutputManager

Returns a new instance of OutputManager.



13
14
15
16
17
18
19
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 13

def initialize(formatter, options = {})
  @formatter = formatter
  @live_status_manager = LiveStatusManager.new(formatter, options)

  # Connect the formatter to the live status manager
  @formatter.set_live_status_manager(@live_status_manager)
end

Instance Attribute Details

#formatterObject (readonly)

Returns the value of attribute formatter.



11
12
13
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 11

def formatter
  @formatter
end

#live_status_managerObject (readonly)

Returns the value of attribute live_status_manager.



11
12
13
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 11

def live_status_manager
  @live_status_manager
end

Instance Method Details

#batch_summary(failure_collector) ⇒ Object

Summary methods



133
134
135
136
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 133

def batch_summary(failure_collector)
  @live_status_manager.handle_event(:batch_summary, failure_collector)
  @formatter.batch_summary(failure_collector)
end

#error(message, backtrace = nil) ⇒ Object



159
160
161
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 159

def error(message, backtrace = nil)
  @formatter.error_message(message, backtrace: backtrace)
end

#error_phaseObject



34
35
36
37
38
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 34

def error_phase
  message = 'ERROR DETAILS'
  @live_status_manager.handle_event(:phase_header, message, nil, 2)
  @formatter.phase_header(message)
end

#execution_phase(test_count) ⇒ Object



28
29
30
31
32
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 28

def execution_phase(test_count)
  message = "EXECUTING #{test_count} TESTS"
  @live_status_manager.handle_event(:phase_header, message, test_count, 1)
  @formatter.phase_header(message, file_count: test_count)
end

#file_end(file_path, framework: :direct, context: :fresh) ⇒ Object



47
48
49
50
51
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 47

def file_end(file_path, framework: :direct, context: :fresh)
  context_info = { framework: framework, context: context }
  @live_status_manager.handle_event(:file_end, file_path, context_info)
  @formatter.file_end(file_path, context_info: context_info)
end

#file_execution_start(file_path, test_count, context_mode) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 66

def file_execution_start(file_path, test_count, context_mode)
  @formatter.file_execution_start(
    file_path,
    test_count: test_count,
    context_mode: context_mode
  )
end

#file_failure(file_path, error_message, backtrace = nil) ⇒ Object



84
85
86
87
88
89
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 84

def file_failure(file_path, error_message, backtrace = nil)
  @formatter.error_message(
    "#{Console.pretty_path(file_path)}: #{error_message}",
    backtrace: backtrace
  )
end

#file_parsed(file_path, test_count, setup_present: false, teardown_present: false) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 53

def file_parsed(file_path, test_count, setup_present: false, teardown_present: false)
  @formatter.file_parsed(
    file_path,
    test_count: test_count,
    setup_present: setup_present,
    teardown_present: teardown_present
  )
end

#file_start(file_path, framework: :direct, context: :fresh) ⇒ Object

File-level methods



41
42
43
44
45
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 41

def file_start(file_path, framework: :direct, context: :fresh)
  context_info = { framework: framework, context: context }
  @live_status_manager.handle_event(:file_start, file_path, context_info)
  @formatter.file_start(file_path, context_info: context_info)
end

#file_success(file_path, total_tests, failed_count, error_count, elapsed_time) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 74

def file_success(file_path, total_tests, failed_count, error_count, elapsed_time)
  @formatter.file_result(
    file_path,
    total_tests: total_tests,
    failed_count: failed_count,
    error_count: error_count,
    elapsed_time: elapsed_time
  )
end

#grand_total(total_tests, failed_count, error_count, successful_files, total_files, elapsed_time) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 138

def grand_total(total_tests, failed_count, error_count, successful_files, total_files, elapsed_time)
  @live_status_manager.handle_event(:grand_total, total_tests, failed_count, error_count, successful_files, total_files, elapsed_time)
  @formatter.grand_total(
    total_tests: total_tests,
    failed_count: failed_count,
    error_count: error_count,
    successful_files: successful_files,
    total_files: total_files,
    elapsed_time: elapsed_time
  )
end

#info(message, level = 0) ⇒ Object

Debug methods



151
152
153
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 151

def info(message, level = 0)
  @formatter.debug_info(message, level: level)
end

#parser_warnings(file_path, warnings:) ⇒ Object



62
63
64
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 62

def parser_warnings(file_path, warnings:)
  @formatter.parser_warnings(file_path, warnings: warnings)
end

#processing_phase(file_count) ⇒ Object

Phase-level methods



22
23
24
25
26
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 22

def processing_phase(file_count)
  message = "PROCESSING #{file_count} FILES"
  @live_status_manager.handle_event(:phase_header, message, file_count, 0)
  @formatter.phase_header(message, file_count: file_count)
end

#raw(message) ⇒ Object

Raw output method (bypasses formatting)



164
165
166
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 164

def raw(message)
  @formatter.stdout.puts(message)
end

#setup_output(output_text) ⇒ Object



120
121
122
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 120

def setup_output(output_text)
  @formatter.setup_output(output_text)
end

#setup_start(line_range) ⇒ Object

Setup/teardown methods



116
117
118
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 116

def setup_start(line_range)
  @formatter.setup_start(line_range: line_range)
end

#teardown_output(output_text) ⇒ Object



128
129
130
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 128

def teardown_output(output_text)
  @formatter.teardown_output(output_text)
end

#teardown_start(line_range) ⇒ Object



124
125
126
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 124

def teardown_start(line_range)
  @formatter.teardown_start(line_range: line_range)
end

#test_end(test_case, index, total) ⇒ Object



97
98
99
100
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 97

def test_end(test_case, index, total)
  @live_status_manager.handle_event(:test_end, test_case, index, total)
  @formatter.test_end(test_case: test_case, index: index, total: total)
end

#test_output(test_case, output_text, result_packet) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 107

def test_output(test_case, output_text, result_packet)
  @formatter.test_output(
    test_case: test_case,
    output_text: output_text,
    result_packet: result_packet
  )
end

#test_result(result_packet) ⇒ Object



102
103
104
105
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 102

def test_result(result_packet)
  @live_status_manager.handle_event(:test_result, result_packet)
  @formatter.test_result(result_packet)
end

#test_start(test_case, index, total) ⇒ Object

Test-level methods



92
93
94
95
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 92

def test_start(test_case, index, total)
  @live_status_manager.handle_event(:test_start, test_case, index, total)
  @formatter.test_start(test_case: test_case, index: index, total: total)
end

#trace(message, level = 0) ⇒ Object



155
156
157
# File 'lib/tryouts/cli/formatters/output_manager.rb', line 155

def trace(message, level = 0)
  @formatter.trace_info(message, level: level)
end