From b17763c850fedefe9d29eb409590784a984875f0 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 15 Nov 2024 08:59:58 +0100 Subject: [PATCH] Integration#patch method now always returns Hash --- lib/datadog/ci/contrib/instrumentation.rb | 4 ++-- lib/datadog/ci/contrib/integration.rb | 3 ++- sig/datadog/ci/contrib/integration.rbs | 2 +- sig/datadog/ci/contrib/patcher.rbs | 12 +++++------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/datadog/ci/contrib/instrumentation.rb b/lib/datadog/ci/contrib/instrumentation.rb index 773ffa5b..a283fe6c 100644 --- a/lib/datadog/ci/contrib/instrumentation.rb +++ b/lib/datadog/ci/contrib/instrumentation.rb @@ -26,7 +26,7 @@ def self.instrument(integration_name, options = {}, &block) return unless integration.enabled patch_results = integration.patch - if patch_results == true + if patch_results[:ok] # try to patch dependant integrations (for example knapsack that depends on rspec) dependants = integration.dependants .map { |name| fetch_integration(name) } @@ -62,7 +62,7 @@ def self.instrument_on_session_start Datadog.logger.debug "#{name} is allowed to be late instrumented" patch_results = integration.patch - if patch_results == true + if patch_results[:ok] Datadog.logger.debug("#{name} is patched") else Datadog.logger.debug("#{name} is not patched (#{patch_results})") diff --git a/lib/datadog/ci/contrib/integration.rb b/lib/datadog/ci/contrib/integration.rb index c33a1a4e..8bb09dd5 100644 --- a/lib/datadog/ci/contrib/integration.rb +++ b/lib/datadog/ci/contrib/integration.rb @@ -97,6 +97,7 @@ def patch patcher_klass = patcher if !patchable? || patcher_klass.nil? return { + ok: false, available: available?, loaded: loaded?, compatible: compatible?, @@ -105,7 +106,7 @@ def patch end patcher_klass.patch - true + {ok: true} end # Can the patch for this integration be applied automatically? diff --git a/sig/datadog/ci/contrib/integration.rbs b/sig/datadog/ci/contrib/integration.rbs index e75fe2b6..96be033b 100644 --- a/sig/datadog/ci/contrib/integration.rbs +++ b/sig/datadog/ci/contrib/integration.rbs @@ -22,7 +22,7 @@ module Datadog def patcher: () -> Datadog::Tracing::Contrib::Patcher? - def patch: () -> (bool | Hash[Symbol, bool]) + def patch: () -> Hash[Symbol, bool] def late_instrument?: () -> bool diff --git a/sig/datadog/ci/contrib/patcher.rbs b/sig/datadog/ci/contrib/patcher.rbs index f63fd48c..1a37bcf0 100644 --- a/sig/datadog/ci/contrib/patcher.rbs +++ b/sig/datadog/ci/contrib/patcher.rbs @@ -2,12 +2,12 @@ module Datadog module CI module Contrib module Patcher - def self.included: (untyped base) -> untyped + def self.included: (Class base) -> void module CommonMethods - attr_accessor patch_error_result: untyped + attr_accessor patch_error_result: Hash[Symbol, untyped] - attr_accessor patch_successful: untyped + attr_accessor patch_successful: bool def patch_name: () -> String? @@ -17,13 +17,11 @@ module Datadog def patch: () -> void - def on_patch_error: (untyped e) -> untyped - - def default_tags: () -> untyped + def on_patch_error: (StandardError e) -> Hash[Symbol, untyped] private - def patch_only_once: () -> untyped + def patch_only_once: () -> Datadog::Core::Utils::OnlyOnce @patch_only_once: Datadog::Core::Utils::OnlyOnce end