Class: Rpruby::Cucumber::Report Private
- Inherits:
-
Object
- Object
- Rpruby::Cucumber::Report
- Defined in:
- lib/rpruby/cucumber/report.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Direct Known Subclasses
Instance Method Summary collapse
- #attach_to_launch? ⇒ Boolean private
- #embed(path_or_src, mime_type, label, desired_time = Rpruby.now) ⇒ Object private
-
#initialize ⇒ Report
constructor
private
A new instance of Report.
- #parallel? ⇒ Boolean private
- #puts(message, desired_time = Rpruby.now) ⇒ Object private
- #start_launch(desired_time = Rpruby.now) ⇒ Object private
- #test_case_finished(event, desired_time = Rpruby.now) ⇒ Object private
-
#test_case_started(event, desired_time = Rpruby.now) ⇒ Object
private
TODO: time should be a required argument.
- #test_run_finished(_event, desired_time = Rpruby.now) ⇒ Object private
- #test_step_finished(event, desired_time = Rpruby.now) ⇒ Object private
- #test_step_started(event, desired_time = Rpruby.now) ⇒ Object private
Constructor Details
#initialize ⇒ Report
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Report.
21 22 23 24 25 26 |
# File 'lib/rpruby/cucumber/report.rb', line 21 def initialize @last_used_time = 0 @root_node = Tree::TreeNode.new('') @parent_item_node = @root_node start_launch end |
Instance Method Details
#attach_to_launch? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
17 18 19 |
# File 'lib/rpruby/cucumber/report.rb', line 17 def attach_to_launch? Rpruby::Settings.instance.formatter_modes.include?('attach_to_launch') end |
#embed(path_or_src, mime_type, label, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
133 134 135 |
# File 'lib/rpruby/cucumber/report.rb', line 133 def (path_or_src, mime_type, label, desired_time = Rpruby.now) Rpruby.send_file(:info, path_or_src, label, time_to_send(desired_time), mime_type) end |
#parallel? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
13 14 15 |
# File 'lib/rpruby/cucumber/report.rb', line 13 def parallel? false end |
#puts(message, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
129 130 131 |
# File 'lib/rpruby/cucumber/report.rb', line 129 def puts(, desired_time = Rpruby.now) Rpruby.send_log(:info, , time_to_send(desired_time)) end |
#start_launch(desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rpruby/cucumber/report.rb', line 28 def start_launch(desired_time = Rpruby.now) if attach_to_launch? Rpruby.launch_id = if Rpruby::Settings.instance.launch_id Rpruby::Settings.instance.launch_id else file_path = Rpruby::Settings.instance.file_with_launch_id || (Pathname(Dir.tmpdir) + 'rp_launch_id.tmp') File.read(file_path) end $stdout.puts "Attaching to launch #{Rpruby.launch_id}" else description = Rpruby::Settings.instance.description description ||= ARGV.map { |arg| arg.gsub(/rp_uuid=.+/, 'rp_uuid=[FILTERED]') }.join(' ') Rpruby.start_launch(description, time_to_send(desired_time)) end end |
#test_case_finished(event, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/rpruby/cucumber/report.rb', line 65 def test_case_finished(event, desired_time = Rpruby.now) result = event.result status = result.to_sym issue = nil if %i[undefined pending].include?(status) status = :failed issue = result. end Rpruby.finish_item(Rpruby.current_scenario, status, time_to_send(desired_time), issue) Rpruby.current_scenario = nil end |
#test_case_started(event, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
TODO: time should be a required argument
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rpruby/cucumber/report.rb', line 46 def test_case_started(event, desired_time = Rpruby.now) test_case = event.test_case feature = test_case.feature if report_hierarchy? && !same_feature_as_previous_test_case?(feature) end_feature(desired_time) unless @parent_item_node.is_root? start_feature_with_parentage(feature, desired_time) end name = "#{test_case.keyword}: #{test_case.name}" description = test_case.location.to_s = test_case..map(&:name) type = :STEP Rpruby.current_scenario = Rpruby::TestItem.new(name: name, type: type, id: nil, start_time: time_to_send(desired_time), description: description, closed: false, tags: ) scenario_node = Tree::TreeNode.new(SecureRandom.hex, Rpruby.current_scenario) @parent_item_node << scenario_node Rpruby.current_scenario.id = Rpruby.start_item(scenario_node) end |
#test_run_finished(_event, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
119 120 121 122 123 124 125 126 127 |
# File 'lib/rpruby/cucumber/report.rb', line 119 def test_run_finished(_event, desired_time = Rpruby.now) end_feature(desired_time) unless @parent_item_node.is_root? unless attach_to_launch? close_all_children_of(@root_node) # Folder items are closed here as they can't be closed after finishing a feature time_to_send = time_to_send(desired_time) Rpruby.finish_launch(time_to_send) end end |
#test_step_finished(event, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rpruby/cucumber/report.rb', line 91 def test_step_finished(event, desired_time = Rpruby.now) test_step = event.test_step result = event.result status = result.to_sym if %i[failed pending undefined].include?(status) exception_info = if %i[failed pending].include?(status) ex = result.exception format("%s: %s\n %s", ex.class.name, ex., ex.backtrace.join("\n ")) else format("Undefined step: %s:\n%s", test_step.text, test_step.source.last.backtrace_line) end Rpruby.send_log(:error, exception_info, time_to_send(desired_time)) end if status != :passed log_level = status == :skipped ? :warn : :error step_type = if step?(test_step) 'Step' else hook_class_name = test_step.source.last.class.name.split('::').last location = test_step.location "#{hook_class_name} at `#{location}`" end Rpruby.send_log(log_level, "#{step_type} #{status}", time_to_send(desired_time)) end end |
#test_step_started(event, desired_time = Rpruby.now) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rpruby/cucumber/report.rb', line 77 def test_step_started(event, desired_time = Rpruby.now) test_step = event.test_step if step?(test_step) # `after_test_step` is also invoked for hooks step_source = test_step.source.last = "-- #{step_source.keyword}#{step_source.text} --" if step_source.multiline_arg.doc_string? << %(\n"""\n#{step_source.multiline_arg.content}\n""") elsif step_source.multiline_arg.data_table? << step_source.multiline_arg.raw.reduce("\n") { |acc, row| acc << "| #{row.join(' | ')} |\n" } end Rpruby.send_log(:trace, , time_to_send(desired_time)) end end |