From 6713cc06f68adb0589b207eee0c6c3734752a62b Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 26 Jul 2024 08:43:42 +0200 Subject: [PATCH] minitest instrumentation doesn't use public API anymore --- lib/datadog/ci/contrib/minitest/runnable.rb | 6 +++++- lib/datadog/ci/contrib/minitest/runner.rb | 8 ++++++-- lib/datadog/ci/contrib/minitest/test.rb | 10 +++++++--- sig/datadog/ci/contrib/minitest/runnable.rbs | 2 ++ sig/datadog/ci/contrib/minitest/runner.rbs | 2 ++ sig/datadog/ci/contrib/minitest/test.rbs | 2 ++ .../ci/contrib/minitest/instrumentation_spec.rb | 10 +++++++++- 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/lib/datadog/ci/contrib/minitest/runnable.rb b/lib/datadog/ci/contrib/minitest/runnable.rb index 61348ad8..5690c925 100644 --- a/lib/datadog/ci/contrib/minitest/runnable.rb +++ b/lib/datadog/ci/contrib/minitest/runnable.rb @@ -19,7 +19,7 @@ def run(*args) test_suite_name = Helpers.test_suite_name(self, method) - test_suite = Datadog::CI.start_test_suite(test_suite_name) + test_suite = test_visibility_component.start_test_suite(test_suite_name) results = super return results unless test_suite @@ -34,6 +34,10 @@ def run(*args) def datadog_configuration Datadog.configuration.ci[:minitest] end + + def test_visibility_component + Datadog.send(:components).test_visibility + end end end end diff --git a/lib/datadog/ci/contrib/minitest/runner.rb b/lib/datadog/ci/contrib/minitest/runner.rb index c4b37982..86c45d28 100644 --- a/lib/datadog/ci/contrib/minitest/runner.rb +++ b/lib/datadog/ci/contrib/minitest/runner.rb @@ -18,14 +18,14 @@ def init_plugins(*args) return unless datadog_configuration[:enabled] - 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::Minitest::Integration.version.to_s }, service: datadog_configuration[:service_name] ) - CI.start_test_module(Ext::FRAMEWORK) + test_visibility_component.start_test_module(Ext::FRAMEWORK) end private @@ -33,6 +33,10 @@ def init_plugins(*args) def datadog_configuration Datadog.configuration.ci[:minitest] end + + def test_visibility_component + Datadog.send(:components).test_visibility + end end end end diff --git a/lib/datadog/ci/contrib/minitest/test.rb b/lib/datadog/ci/contrib/minitest/test.rb index c80abfa0..27ed2056 100644 --- a/lib/datadog/ci/contrib/minitest/test.rb +++ b/lib/datadog/ci/contrib/minitest/test.rb @@ -26,12 +26,12 @@ def before_setup test_suite_name = "#{test_suite_name} (#{name} concurrently)" # for parallel execution we need to start a new test suite for each test - CI.start_test_suite(test_suite_name) + test_visibility_component.start_test_suite(test_suite_name) end source_file, line_number = method(name).source_location - test_span = CI.start_test( + test_span = test_visibility_component.trace_test( name, test_suite_name, tags: { @@ -47,7 +47,7 @@ def before_setup end def after_teardown - test_span = CI.active_test + test_span = test_visibility_component.active_test return super unless test_span finish_with_result(test_span, result_code) @@ -77,6 +77,10 @@ def finish_with_result(span, result_code) def datadog_configuration Datadog.configuration.ci[:minitest] end + + def test_visibility_component + Datadog.send(:components).test_visibility + end end module ClassMethods diff --git a/sig/datadog/ci/contrib/minitest/runnable.rbs b/sig/datadog/ci/contrib/minitest/runnable.rbs index a9e11f58..56b0dbaa 100644 --- a/sig/datadog/ci/contrib/minitest/runnable.rbs +++ b/sig/datadog/ci/contrib/minitest/runnable.rbs @@ -16,6 +16,8 @@ module Datadog def test_order: () -> (nil | :parallel | :random | :sorted | :alpha) def runnable_methods: () -> Array[String] + + def test_visibility_component: () -> Datadog::CI::TestVisibility::Component end end end diff --git a/sig/datadog/ci/contrib/minitest/runner.rbs b/sig/datadog/ci/contrib/minitest/runner.rbs index a4d56949..0af798e0 100644 --- a/sig/datadog/ci/contrib/minitest/runner.rbs +++ b/sig/datadog/ci/contrib/minitest/runner.rbs @@ -13,6 +13,8 @@ module Datadog private def datadog_configuration: () -> untyped + + def test_visibility_component: () -> Datadog::CI::TestVisibility::Component end end end diff --git a/sig/datadog/ci/contrib/minitest/test.rbs b/sig/datadog/ci/contrib/minitest/test.rbs index 2d3dd1fb..ee391cbc 100644 --- a/sig/datadog/ci/contrib/minitest/test.rbs +++ b/sig/datadog/ci/contrib/minitest/test.rbs @@ -23,6 +23,8 @@ module Datadog def datadog_configuration: () -> untyped + def test_visibility_component: () -> Datadog::CI::TestVisibility::Component + def finish_with_result: (Datadog::CI::Span? span, String result_code) -> void end end diff --git a/spec/datadog/ci/contrib/minitest/instrumentation_spec.rb b/spec/datadog/ci/contrib/minitest/instrumentation_spec.rb index 76e8f89c..67ede067 100644 --- a/spec/datadog/ci/contrib/minitest/instrumentation_spec.rb +++ b/spec/datadog/ci/contrib/minitest/instrumentation_spec.rb @@ -10,6 +10,14 @@ module Kernel end RSpec.describe "Minitest instrumentation" do + before do + # expect that public manual API isn't used + 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 + end + context "without service name configured" do include_context "CI mode activated" do let(:integration_name) { :minitest } @@ -78,7 +86,7 @@ def test_foo :source_file, "spec/datadog/ci/contrib/minitest/instrumentation_spec.rb" ) - expect(span).to have_test_tag(:source_start, "51") + expect(span).to have_test_tag(:source_start, "59") expect(span).to have_test_tag( :codeowners, "[\"@DataDog/ruby-guild\", \"@DataDog/ci-app-libraries\"]"