Class: Datadog::CI::Contrib::Cucumber::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/ci/contrib/cucumber/formatter.rb

Overview

Defines collection of instrumented Cucumber events

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Formatter

Returns a new instance of Formatter.



16
17
18
19
20
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 16

def initialize(config)
  @config = config

  bind_events(config)
end

Instance Method Details

#bind_events(config) ⇒ Object



22
23
24
25
26
27
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 22

def bind_events(config)
  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



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 43

def on_test_case_finished(event)
  test_span = CI.active_test
  return if test_span.nil?

  if event.result.skipped?
    test_span.skipped!
  elsif event.result.ok?
    test_span.passed!
  elsif event.result.failed?
    test_span.failed!
  end

  test_span.finish
end

#on_test_case_started(event) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 29

def on_test_case_started(event)
  CI.start_test(
    event.test_case.name,
    tags: {
      CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
      CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Cucumber::Integration.version.to_s,
      CI::Ext::Test::TAG_TYPE => Ext::TEST_TYPE,
      CI::Ext::Test::TAG_SUITE => event.test_case.location.file
    },
    service_name: configuration[:service_name],
    operation_name: configuration[:operation_name]
  )
end

#on_test_step_finished(event) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 62

def on_test_step_finished(event)
  current_step_span = CI.active_span(Ext::STEP_SPAN_TYPE)
  return if current_step_span.nil?

  if event.result.skipped?
    current_step_span.skipped!
  elsif event.result.ok?
    current_step_span.passed!
  elsif event.result.failed?
    current_step_span.failed!(exception: event.result.exception)
  end

  current_step_span.finish
end

#on_test_step_started(event) ⇒ Object



58
59
60
# File 'lib/datadog/ci/contrib/cucumber/formatter.rb', line 58

def on_test_step_started(event)
  CI.trace(Ext::STEP_SPAN_TYPE, event.test_step.to_s)
end