Class: Datadog::CI::Contrib::Cucumber::Formatter
- Inherits:
-
Object
- Object
- Datadog::CI::Contrib::Cucumber::Formatter
- Defined in:
- lib/datadog/ci/contrib/cucumber/formatter.rb
Overview
Defines collection of instrumented Cucumber events
Instance Method Summary collapse
- #bind_events(config) ⇒ Object
-
#initialize(config) ⇒ Formatter
constructor
A new instance of Formatter.
- #on_test_case_finished(event) ⇒ Object
- #on_test_case_started(event) ⇒ Object
- #on_test_run_finished(event) ⇒ Object
- #on_test_run_started(event) ⇒ Object
- #on_test_step_finished(event) ⇒ Object
- #on_test_step_started(event) ⇒ Object
Constructor Details
#initialize(config) ⇒ Formatter
Returns a new instance of Formatter.
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 17 def initialize(config) @ast_lookup = ::Cucumber::Formatter::AstLookup.new(config) if defined?(::Cucumber::Formatter::AstLookup) @config = config @current_test_suite = nil @failed_test_suites_count = 0 bind_events(config) end |
Instance Method Details
#bind_events(config) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 28 def bind_events(config) config.on_event :test_run_started, &method(:on_test_run_started) config.on_event :test_run_finished, &method(:on_test_run_finished) config.on_event :test_case_started, &method(:on_test_case_started) config.on_event :test_case_finished, &method(:on_test_case_finished) config.on_event :test_step_started, &method(:on_test_step_started) config.on_event :test_step_finished, &method(:on_test_step_finished) end |
#on_test_case_finished(event) ⇒ Object
86 87 88 89 90 91 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 86 def on_test_case_finished(event) test_span = test_visibility_component.active_test return if test_span.nil? finish_span(test_span, event.result) end |
#on_test_case_started(event) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 58 def on_test_case_started(event) test_suite_name = test_suite_name(event.test_case) # @type var tags: Hash[String, String] = { CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK, CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Cucumber::Integration.version.to_s, CI::Ext::Test::TAG_SOURCE_FILE => Git::LocalRepository.relative_to_root(event.test_case.location.file), CI::Ext::Test::TAG_SOURCE_START => event.test_case.location.line.to_s } if (parameters = extract_parameters_hash(event.test_case)) [CI::Ext::Test::TAG_PARAMETERS] = Utils::TestRun.test_parameters(arguments: parameters) end start_test_suite(test_suite_name) unless same_test_suite_as_current?(test_suite_name) test_span = test_visibility_component.trace_test( event.test_case.name, test_suite_name, tags: , service: configuration[:service_name] ) if event.test_case.("@#{CI::Ext::Test::ITR_UNSKIPPABLE_OPTION}") test_span&.itr_unskippable! end end |
#on_test_run_finished(event) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 48 def on_test_run_finished(event) finish_current_test_suite if event.respond_to?(:success) finish_session(event.success) else finish_session(@failed_test_suites_count.zero?) end end |
#on_test_run_started(event) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 37 def on_test_run_started(event) test_visibility_component.start_test_session( tags: { CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK, CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Cucumber::Integration.version.to_s }, service: configuration[:service_name] ) test_visibility_component.start_test_module(Ext::FRAMEWORK) end |
#on_test_step_finished(event) ⇒ Object
97 98 99 100 101 102 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 97 def on_test_step_finished(event) current_step_span = test_visibility_component.active_span return if current_step_span.nil? finish_span(current_step_span, event.result) end |
#on_test_step_started(event) ⇒ Object
93 94 95 |
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 93 def on_test_step_started(event) test_visibility_component.trace(event.test_step.to_s, type: Ext::STEP_SPAN_TYPE) end |