From cc7ae6df7b36c0c4e188529f2f1a6e6eb019435e Mon Sep 17 00:00:00 2001 From: Andrey Marchenko Date: Tue, 16 Jan 2024 14:15:12 +0100 Subject: [PATCH] extract service name logic --- .../cucumber/configuration/settings.rb | 4 +- .../minitest/configuration/settings.rb | 4 +- .../contrib/rspec/configuration/settings.rb | 4 +- lib/datadog/ci/utils/configuration.rb | 15 ++++++++ sig/datadog/ci/utils/configuration.rbs | 9 +++++ spec/datadog/ci/utils/configuration_spec.rb | 37 +++++++++++++++++++ 6 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 lib/datadog/ci/utils/configuration.rb create mode 100644 sig/datadog/ci/utils/configuration.rbs create mode 100644 spec/datadog/ci/utils/configuration_spec.rb diff --git a/lib/datadog/ci/contrib/cucumber/configuration/settings.rb b/lib/datadog/ci/contrib/cucumber/configuration/settings.rb index 9f24d833..5a84ad29 100644 --- a/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +++ b/lib/datadog/ci/contrib/cucumber/configuration/settings.rb @@ -4,7 +4,7 @@ require_relative "../ext" require_relative "../../settings" -require_relative "../../../utils/git" +require_relative "../../../utils/configuration" module Datadog module CI @@ -23,7 +23,7 @@ class Settings < Datadog::CI::Contrib::Settings option :service_name do |o| o.type :string o.default do - Datadog.configuration.service_without_fallback || Utils::Git.repository_name || Ext::DEFAULT_SERVICE_NAME + Utils::Configuration.fetch_service_name(Ext::DEFAULT_SERVICE_NAME) end end diff --git a/lib/datadog/ci/contrib/minitest/configuration/settings.rb b/lib/datadog/ci/contrib/minitest/configuration/settings.rb index 32c973e8..d6bd0a61 100644 --- a/lib/datadog/ci/contrib/minitest/configuration/settings.rb +++ b/lib/datadog/ci/contrib/minitest/configuration/settings.rb @@ -2,7 +2,7 @@ require_relative "../ext" require_relative "../../settings" -require_relative "../../../utils/git" +require_relative "../../../utils/configuration" module Datadog module CI @@ -21,7 +21,7 @@ class Settings < Datadog::CI::Contrib::Settings option :service_name do |o| o.type :string o.default do - Datadog.configuration.service_without_fallback || Utils::Git.repository_name || Ext::DEFAULT_SERVICE_NAME + Utils::Configuration.fetch_service_name(Ext::DEFAULT_SERVICE_NAME) end end diff --git a/lib/datadog/ci/contrib/rspec/configuration/settings.rb b/lib/datadog/ci/contrib/rspec/configuration/settings.rb index 1bbb1d2c..6195c2be 100644 --- a/lib/datadog/ci/contrib/rspec/configuration/settings.rb +++ b/lib/datadog/ci/contrib/rspec/configuration/settings.rb @@ -2,7 +2,7 @@ require_relative "../ext" require_relative "../../settings" -require_relative "../../../utils/git" +require_relative "../../../utils/configuration" module Datadog module CI @@ -21,7 +21,7 @@ class Settings < Datadog::CI::Contrib::Settings option :service_name do |o| o.type :string o.default do - Datadog.configuration.service_without_fallback || Utils::Git.repository_name || Ext::DEFAULT_SERVICE_NAME + Utils::Configuration.fetch_service_name(Ext::DEFAULT_SERVICE_NAME) end end diff --git a/lib/datadog/ci/utils/configuration.rb b/lib/datadog/ci/utils/configuration.rb new file mode 100644 index 00000000..36450320 --- /dev/null +++ b/lib/datadog/ci/utils/configuration.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require_relative "git" + +module Datadog + module CI + module Utils + module Configuration + def self.fetch_service_name(default) + Datadog.configuration.service_without_fallback || Git.repository_name || default + end + end + end + end +end diff --git a/sig/datadog/ci/utils/configuration.rbs b/sig/datadog/ci/utils/configuration.rbs new file mode 100644 index 00000000..16977dac --- /dev/null +++ b/sig/datadog/ci/utils/configuration.rbs @@ -0,0 +1,9 @@ +module Datadog + module CI + module Utils + module Configuration + def self.fetch_service_name: (String default) -> String + end + end + end +end diff --git a/spec/datadog/ci/utils/configuration_spec.rb b/spec/datadog/ci/utils/configuration_spec.rb new file mode 100644 index 00000000..3a3dd358 --- /dev/null +++ b/spec/datadog/ci/utils/configuration_spec.rb @@ -0,0 +1,37 @@ +RSpec.describe ::Datadog::CI::Utils::Configuration do + describe ".fetch_service_name" do + subject { described_class.fetch_service_name(default) } + + let(:default) { "default" } + + before do + allow(::Datadog.configuration).to receive(:service_without_fallback).and_return(service) + end + + context "when service is set in Datadog config" do + let(:service) { "service_without_fallback" } + + it { is_expected.to eq(service) } + end + + context "when service is not set" do + let(:service) { nil } + + before do + expect(::Datadog::CI::Utils::Git).to receive(:repository_name).and_return(repository_name) + end + + context "when repository_name can be fetched" do + let(:repository_name) { "repository_name" } + + it { is_expected.to eq(repository_name) } + end + + context "when repository_name can not be fetched" do + let(:repository_name) { nil } + + it { is_expected.to eq(default) } + end + end + end +end