From a07aa22c4d86a974fa6b100ae37302613ebee81b Mon Sep 17 00:00:00 2001 From: Landon Grindheim Date: Tue, 12 Mar 2024 18:37:29 +0000 Subject: [PATCH] Use constants to keep keys consistent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should help those of us who don't always type so well 😅 --- common/lib/dependabot/errors.rb | 11 +++++ updater/lib/dependabot/base_command.rb | 15 ++++--- .../lib/dependabot/file_fetcher_command.rb | 15 ++++--- updater/lib/dependabot/service.rb | 15 ++++--- .../lib/dependabot/update_files_command.rb | 15 ++++--- .../lib/dependabot/updater/error_handler.rb | 14 +++--- .../dependabot/file_fetcher_command_spec.rb | 37 ++++++++-------- updater/spec/dependabot/service_spec.rb | 24 +++++------ .../dependabot/update_files_command_spec.rb | 36 ++++++++-------- .../dependabot/updater/error_handler_spec.rb | 43 ++++++++++--------- updater/spec/dependabot/updater_spec.rb | 12 +++--- 11 files changed, 127 insertions(+), 110 deletions(-) diff --git a/common/lib/dependabot/errors.rb b/common/lib/dependabot/errors.rb index bfa062ce7d6..4085a93c15b 100644 --- a/common/lib/dependabot/errors.rb +++ b/common/lib/dependabot/errors.rb @@ -7,6 +7,17 @@ module Dependabot extend T::Sig + module ErrorAttributes + BACKTRACE = "error-backtrace" + CLASS = "error-class" + DETAILS = "error-details" + MESSAGE = "error-message" + DEPENDENCIES = "job-dependencies" + DEPENDENCY_GROUP = "job-dependency-group" + JOB_ID = "job-id" + PACKAGE_MANAGER = "package-manager" + end + # rubocop:disable Metrics/MethodLength sig { params(error: StandardError).returns(T.nilable(T::Hash[Symbol, T.untyped])) } def self.fetcher_error_details(error) diff --git a/updater/lib/dependabot/base_command.rb b/updater/lib/dependabot/base_command.rb index 3a0fd0da55f..c5aaf9aff65 100644 --- a/updater/lib/dependabot/base_command.rb +++ b/updater/lib/dependabot/base_command.rb @@ -2,6 +2,7 @@ # frozen_string_literal: true require "dependabot/api_client" +require "dependabot/errors" require "dependabot/service" require "dependabot/logger" require "dependabot/logger/formats" @@ -57,13 +58,13 @@ def handle_exception(err) def handle_unknown_error(err) error_details = { - "error-class" => err.class.to_s, - "error-message" => err.message, - "error-backtrace" => err.backtrace.join("\n"), - "package-manager" => job.package_manager, - "job-id" => job.id, - "job-dependencies" => job.dependencies, - "job-dependency-group" => job.dependency_groups + ErrorAttributes::CLASS => err.class.to_s, + ErrorAttributes::MESSAGE => err.message, + ErrorAttributes::BACKTRACE => err.backtrace.join("\n"), + ErrorAttributes::PACKAGE_MANAGER => job.package_manager, + ErrorAttributes::JOB_ID => job.id, + ErrorAttributes::DEPENDENCIES => job.dependencies, + ErrorAttributes::DEPENDENCY_GROUP => job.dependency_groups }.compact service.record_update_job_unknown_error(error_type: "updater_error", error_details: error_details) service.increment_metric("updater.update_job_unknown_error", tags: { diff --git a/updater/lib/dependabot/file_fetcher_command.rb b/updater/lib/dependabot/file_fetcher_command.rb index b19148e9afb..50c5e37959a 100644 --- a/updater/lib/dependabot/file_fetcher_command.rb +++ b/updater/lib/dependabot/file_fetcher_command.rb @@ -3,6 +3,7 @@ require "base64" require "dependabot/base_command" +require "dependabot/errors" require "dependabot/opentelemetry" require "dependabot/updater" require "octokit" @@ -173,13 +174,13 @@ def handle_file_fetcher_error(error) log_error(error) unknown_error_details = { - "error-class" => error.class.to_s, - "error-message" => error.message, - "error-backtrace" => error.backtrace.join("\n"), - "package-manager" => job.package_manager, - "job-id" => job.id, - "job-dependencies" => job.dependencies, - "job-dependency-group" => job.dependency_groups + ErrorAttributes::CLASS => error.class.to_s, + ErrorAttributes::MESSAGE => error.message, + ErrorAttributes::BACKTRACE => error.backtrace.join("\n"), + ErrorAttributes::PACKAGE_MANAGER => job.package_manager, + ErrorAttributes::JOB_ID => job.id, + ErrorAttributes::DEPENDENCIES => job.dependencies, + ErrorAttributes::DEPENDENCY_GROUP => job.dependency_groups }.compact error_details = { diff --git a/updater/lib/dependabot/service.rb b/updater/lib/dependabot/service.rb index ba19cb00541..8dc6099ba93 100644 --- a/updater/lib/dependabot/service.rb +++ b/updater/lib/dependabot/service.rb @@ -6,6 +6,7 @@ require "terminal-table" require "dependabot/api_client" +require "dependabot/errors" require "dependabot/opentelemetry" # This class provides an output adapter for the Dependabot Service which manages @@ -105,13 +106,13 @@ def capture_exception(error:, job: nil, dependency: nil, dependency_group: nil, return unless Experiments.enabled?(:record_update_job_unknown_error) error_details = { - "error-class" => error.class.to_s, - "error-message" => error.message, - "error-backtrace" => error.backtrace&.join("\n"), - "package-manager" => job&.package_manager, - "job-id" => job&.id, - "job-dependencies" => dependency&.name || job&.dependencies, - "job-dependency-group" => dependency_group&.name || job&.dependency_groups + ErrorAttributes::CLASS => error.class.to_s, + ErrorAttributes::MESSAGE => error.message, + ErrorAttributes::BACKTRACE => error.backtrace&.join("\n"), + ErrorAttributes::PACKAGE_MANAGER => job&.package_manager, + ErrorAttributes::JOB_ID => job&.id, + ErrorAttributes::DEPENDENCIES => dependency&.name || job&.dependencies, + ErrorAttributes::DEPENDENCY_GROUP => dependency_group&.name || job&.dependency_groups }.compact record_update_job_unknown_error(error_type: "unknown_error", error_details: error_details) end diff --git a/updater/lib/dependabot/update_files_command.rb b/updater/lib/dependabot/update_files_command.rb index 059cfae6f22..53d7d32489a 100644 --- a/updater/lib/dependabot/update_files_command.rb +++ b/updater/lib/dependabot/update_files_command.rb @@ -4,6 +4,7 @@ require "base64" require "dependabot/base_command" require "dependabot/dependency_snapshot" +require "dependabot/errors" require "dependabot/opentelemetry" require "dependabot/updater" @@ -82,13 +83,13 @@ def handle_parser_error(error) Dependabot.logger.error error.message error.backtrace.each { |line| Dependabot.logger.error line } unknown_error_details = { - "error-class" => error.class.to_s, - "error-message" => error.message, - "error-backtrace" => error.backtrace.join("\n"), - "package-manager" => job.package_manager, - "job-id" => job.id, - "job-dependencies" => job.dependencies, - "job-dependency-group" => job.dependency_groups + ErrorAttributes::CLASS => error.class.to_s, + ErrorAttributes::MESSAGE => error.message, + ErrorAttributes::BACKTRACE => error.backtrace.join("\n"), + ErrorAttributes::PACKAGE_MANAGER => job.package_manager, + ErrorAttributes::JOB_ID => job.id, + ErrorAttributes::DEPENDENCIES => job.dependencies, + ErrorAttributes::DEPENDENCY_GROUP => job.dependency_groups }.compact service.capture_exception(error: error, job: job) diff --git a/updater/lib/dependabot/updater/error_handler.rb b/updater/lib/dependabot/updater/error_handler.rb index b91dc023e7a..aa774b1db1b 100644 --- a/updater/lib/dependabot/updater/error_handler.rb +++ b/updater/lib/dependabot/updater/error_handler.rb @@ -154,13 +154,13 @@ def error_details_for(error, dependency: nil, dependency_group: nil) def log_unknown_error_with_backtrace(error) error_details = { - "error-class" => error.class.to_s, - "error-message" => error.message, - "error-backtrace" => error.backtrace.join("\n"), - "package-manager" => job.package_manager, - "job-id" => job.id, - "job-dependencies" => job.dependencies, - "job-dependency-group" => job.dependency_groups + ErrorAttributes::CLASS => error.class.to_s, + ErrorAttributes::MESSAGE => error.message, + ErrorAttributes::BACKTRACE => error.backtrace.join("\n"), + ErrorAttributes::PACKAGE_MANAGER => job.package_manager, + ErrorAttributes::JOB_ID => job.id, + ErrorAttributes::DEPENDENCIES => job.dependencies, + ErrorAttributes::DEPENDENCY_GROUP => job.dependency_groups }.compact service.increment_metric("updater.update_job_unknown_error", tags: { diff --git a/updater/spec/dependabot/file_fetcher_command_spec.rb b/updater/spec/dependabot/file_fetcher_command_spec.rb index 316b8809523..e2ac6791f85 100644 --- a/updater/spec/dependabot/file_fetcher_command_spec.rb +++ b/updater/spec/dependabot/file_fetcher_command_spec.rb @@ -3,6 +3,7 @@ require "spec_helper" require "dependabot/file_fetcher_command" +require "dependabot/errors" require "tmpdir" require "support/dummy_package_manager/dummy" @@ -139,12 +140,12 @@ expect(api_client).to receive(:record_update_job_error).with( error_type: "file_fetcher_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "my_branch", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "my_branch", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) expect(api_client).to receive(:record_update_job_unknown_error) @@ -157,12 +158,12 @@ expect(api_client).to receive(:record_update_job_unknown_error).with( error_type: "unknown_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "my_branch", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "my_branch", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) expect(api_client).to receive(:mark_job_as_processed) @@ -182,12 +183,12 @@ expect(api_client).to receive(:record_update_job_error).with( error_type: "file_fetcher_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "my_branch", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "my_branch", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) expect(api_client).to receive(:mark_job_as_processed) diff --git a/updater/spec/dependabot/service_spec.rb b/updater/spec/dependabot/service_spec.rb index 2493c3c9c91..50051fd6ef4 100644 --- a/updater/spec/dependabot/service_spec.rb +++ b/updater/spec/dependabot/service_spec.rb @@ -302,8 +302,8 @@ .with( error_type: "unknown_error", error_details: hash_including( - "error-message" => "Something went wrong", - "error-class" => "Dependabot::DependabotError" + Dependabot::ErrorAttributes::MESSAGE => "Something went wrong", + Dependabot::ErrorAttributes::CLASS => "Dependabot::DependabotError" ) ) end @@ -317,10 +317,10 @@ .with( error_type: "unknown_error", error_details: hash_including( - "error-class" => "Dependabot::DependabotError", - "error-message" => "Something went wrong", - "job-id" => job.id, - "package-manager" => job.package_manager + Dependabot::ErrorAttributes::CLASS => "Dependabot::DependabotError", + Dependabot::ErrorAttributes::MESSAGE => "Something went wrong", + Dependabot::ErrorAttributes::JOB_ID => job.id, + Dependabot::ErrorAttributes::PACKAGE_MANAGER => job.package_manager ) ) end @@ -334,9 +334,9 @@ .with( error_type: "unknown_error", error_details: hash_including( - "error-message" => "Something went wrong", - "error-class" => "Dependabot::DependabotError", - "job-dependencies" => "lodash" + Dependabot::ErrorAttributes::MESSAGE => "Something went wrong", + Dependabot::ErrorAttributes::CLASS => "Dependabot::DependabotError", + Dependabot::ErrorAttributes::DEPENDENCIES => "lodash" ) ) end @@ -351,9 +351,9 @@ .with( error_type: "unknown_error", error_details: hash_including( - "error-message" => "Something went wrong", - "error-class" => "Dependabot::DependabotError", - "job-dependency-group" => "all-the-things" + Dependabot::ErrorAttributes::MESSAGE => "Something went wrong", + Dependabot::ErrorAttributes::CLASS => "Dependabot::DependabotError", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => "all-the-things" ) ) end diff --git a/updater/spec/dependabot/update_files_command_spec.rb b/updater/spec/dependabot/update_files_command_spec.rb index 9d4034de6c1..fa940bc7b8c 100644 --- a/updater/spec/dependabot/update_files_command_spec.rb +++ b/updater/spec/dependabot/update_files_command_spec.rb @@ -130,12 +130,12 @@ expect(service).to receive(:record_update_job_error).with( error_type: "update_files_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "hell", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "hell", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) @@ -147,12 +147,12 @@ expect(service).to receive(:record_update_job_unknown_error).with( error_type: "update_files_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "hell", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "hell", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) @@ -171,12 +171,12 @@ expect(service).to receive(:record_update_job_error).with( error_type: "update_files_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "hell", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "hell", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) diff --git a/updater/spec/dependabot/updater/error_handler_spec.rb b/updater/spec/dependabot/updater/error_handler_spec.rb index cbcca563d9c..ad24b1b5b1b 100644 --- a/updater/spec/dependabot/updater/error_handler_spec.rb +++ b/updater/spec/dependabot/updater/error_handler_spec.rb @@ -5,6 +5,7 @@ require "dependabot/dependency" require "dependabot/dependency_group" +require "dependabot/errors" require "dependabot/job" require "dependabot/service" require "dependabot/shared_helpers" @@ -82,13 +83,13 @@ expect(mock_service).to receive(:record_update_job_unknown_error).with( error_type: "unknown_error", error_details: { - "error-backtrace" => "bees.rb:5:in `buzz`", - "error-message" => "There are bees everywhere", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependencies" => [], - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => "bees.rb:5:in `buzz`", + Dependabot::ErrorAttributes::MESSAGE => "There are bees everywhere", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCIES => [], + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) @@ -180,13 +181,13 @@ expect(mock_service).to receive(:record_update_job_unknown_error).with( error_type: "unknown_error", error_details: { - "error-backtrace" => "****** ERROR 8335 -- 101", - "error-message" => "the kernal is full of bees", - "error-class" => "Dependabot::SharedHelpers::HelperSubprocessFailed", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependencies" => [], - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => "****** ERROR 8335 -- 101", + Dependabot::ErrorAttributes::MESSAGE => "the kernal is full of bees", + Dependabot::ErrorAttributes::CLASS => "Dependabot::SharedHelpers::HelperSubprocessFailed", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCIES => [], + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) @@ -327,13 +328,13 @@ expect(mock_service).to receive(:record_update_job_unknown_error).with( error_type: "unknown_error", error_details: { - "error-backtrace" => "bees.rb:5:in `buzz`", - "error-message" => "There are bees everywhere", - "error-class" => "StandardError", - "package-manager" => "bundler", - "job-id" => "123123", - "job-dependencies" => [], - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => "bees.rb:5:in `buzz`", + Dependabot::ErrorAttributes::MESSAGE => "There are bees everywhere", + Dependabot::ErrorAttributes::CLASS => "StandardError", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "123123", + Dependabot::ErrorAttributes::DEPENDENCIES => [], + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) diff --git a/updater/spec/dependabot/updater_spec.rb b/updater/spec/dependabot/updater_spec.rb index 3cdff2c6a1c..691bd640a54 100644 --- a/updater/spec/dependabot/updater_spec.rb +++ b/updater/spec/dependabot/updater_spec.rb @@ -1815,12 +1815,12 @@ def expect_update_checker_with_ignored_versions(versions, dependency_matcher: an .with( error_type: "unknown_error", error_details: { - "error-backtrace" => an_instance_of(String), - "error-message" => "Potentially sensitive log content goes here", - "error-class" => "Dependabot::SharedHelpers::HelperSubprocessFailed", - "package-manager" => "bundler", - "job-id" => "1", - "job-dependency-group" => [] + Dependabot::ErrorAttributes::BACKTRACE => an_instance_of(String), + Dependabot::ErrorAttributes::MESSAGE => "Potentially sensitive log content goes here", + Dependabot::ErrorAttributes::CLASS => "Dependabot::SharedHelpers::HelperSubprocessFailed", + Dependabot::ErrorAttributes::PACKAGE_MANAGER => "bundler", + Dependabot::ErrorAttributes::JOB_ID => "1", + Dependabot::ErrorAttributes::DEPENDENCY_GROUP => [] } ) updater.run