From 7a41b721b5b008b07ac45ae8e5e56549e9b2d937 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 26 Jul 2024 08:20:48 +0200 Subject: [PATCH] Cucumber contrib doesn't use public API anymore --- lib/datadog/ci.rb | 2 ++ lib/datadog/ci/contrib/cucumber/formatter.rb | 22 +++++++++++-------- sig/datadog/ci/contrib/cucumber/formatter.rbs | 2 ++ .../contrib/cucumber/instrumentation_spec.rb | 6 +++++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/datadog/ci.rb b/lib/datadog/ci.rb index 6c7302cf..2a9764a3 100644 --- a/lib/datadog/ci.rb +++ b/lib/datadog/ci.rb @@ -2,7 +2,9 @@ require_relative "ci/version" require_relative "ci/utils/configuration" +require_relative "ci/utils/telemetry" require_relative "ci/ext/app_types" +require_relative "ci/ext/telemetry" require "datadog/core" diff --git a/lib/datadog/ci/contrib/cucumber/formatter.rb b/lib/datadog/ci/contrib/cucumber/formatter.rb index e105ddac..2089408e 100644 --- a/lib/datadog/ci/contrib/cucumber/formatter.rb +++ b/lib/datadog/ci/contrib/cucumber/formatter.rb @@ -35,14 +35,14 @@ def bind_events(config) end def on_test_run_started(event) - CI.start_test_session( + 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] ) - CI.start_test_module(Ext::FRAMEWORK) + test_visibility_component.start_test_module(Ext::FRAMEWORK) end def on_test_run_finished(event) @@ -70,7 +70,7 @@ def on_test_case_started(event) start_test_suite(test_suite_name) unless same_test_suite_as_current?(test_suite_name) - test_span = CI.start_test( + test_span = test_visibility_component.trace_test( event.test_case.name, test_suite_name, tags: tags, @@ -82,7 +82,7 @@ def on_test_case_started(event) end def on_test_case_finished(event) - test_span = CI.active_test + test_span = test_visibility_component.active_test return if test_span.nil? finish_span(test_span, event.result) @@ -90,11 +90,11 @@ def on_test_case_finished(event) end def on_test_step_started(event) - CI.trace(event.test_step.to_s, type: Ext::STEP_SPAN_TYPE) + test_visibility_component.trace(event.test_step.to_s, type: Ext::STEP_SPAN_TYPE) end def on_test_step_finished(event) - current_step_span = CI.active_span + current_step_span = test_visibility_component.active_span return if current_step_span.nil? finish_span(current_step_span, event.result) @@ -130,8 +130,8 @@ def finish_span(span, result) def finish_session(result) finish_current_test_suite - test_session = CI.active_test_session - test_module = CI.active_test_module + test_session = test_visibility_component.active_test_session + test_module = test_visibility_component.active_test_module return unless test_session && test_module @@ -150,7 +150,7 @@ def finish_session(result) def start_test_suite(test_suite_name) finish_current_test_suite - @current_test_suite = CI.start_test_suite(test_suite_name) + @current_test_suite = test_visibility_component.start_test_suite(test_suite_name) end def finish_current_test_suite @@ -197,6 +197,10 @@ def ok?(result, strict) def configuration Datadog.configuration.ci[:cucumber] end + + def test_visibility_component + Datadog.send(:components).test_visibility + end end end end diff --git a/sig/datadog/ci/contrib/cucumber/formatter.rbs b/sig/datadog/ci/contrib/cucumber/formatter.rbs index 1accd4a4..76826611 100644 --- a/sig/datadog/ci/contrib/cucumber/formatter.rbs +++ b/sig/datadog/ci/contrib/cucumber/formatter.rbs @@ -50,6 +50,8 @@ module Datadog def ok?: (Cucumber::Core::Test::Result result, untyped strict) -> bool def configuration: () -> untyped + + def test_visibility_component: () -> Datadog::CI::TestVisibility::Component end end end diff --git a/spec/datadog/ci/contrib/cucumber/instrumentation_spec.rb b/spec/datadog/ci/contrib/cucumber/instrumentation_spec.rb index af96fdc2..8387d879 100644 --- a/spec/datadog/ci/contrib/cucumber/instrumentation_spec.rb +++ b/spec/datadog/ci/contrib/cucumber/instrumentation_spec.rb @@ -69,6 +69,12 @@ expect(Datadog::CI::Ext::Environment).to receive(:tags).never expect(kernel).to receive(:exit).with(expected_test_run_code) + # do not use manual API + expect(Datadog::CI).to receive(:start_test_session).never + expect(Datadog::CI).to receive(:start_test_module).never + expect(Datadog::CI).to receive(:start_test_suite).never + expect(Datadog::CI).to receive(:start_test).never + cli.execute!(existing_runtime) end