diff --git a/common/lib/dependabot/config/file.rb b/common/lib/dependabot/config/file.rb index c572b446aab..e133cbff331 100644 --- a/common/lib/dependabot/config/file.rb +++ b/common/lib/dependabot/config/file.rb @@ -55,22 +55,13 @@ def self.parse(config) "terraform" => "terraform" }.freeze - UPDATE_TYPE_LOOKUP = { - "version-update:semver-patch" => :ignore_patch_versions, - "version-update:semver-minor" => :ignore_minor_versions, - "version-update:semver-major" => :ignore_major_versions - }.freeze - def ignore_conditions(cfg) ignores = cfg&.dig(:ignore) || [] ignores.map do |ic| - update_types = ic[:"update-types"]&. - map { |t| UPDATE_TYPE_LOOKUP[t.downcase.strip] }&. - compact Dependabot::Config::IgnoreCondition.new( dependency_name: ic[:"dependency-name"], versions: ic[:versions], - update_types: update_types + update_types: ic[:"update-types"] ) end end diff --git a/common/lib/dependabot/config/ignore_condition.rb b/common/lib/dependabot/config/ignore_condition.rb index f2c33e4043e..4873a5c84d3 100644 --- a/common/lib/dependabot/config/ignore_condition.rb +++ b/common/lib/dependabot/config/ignore_condition.rb @@ -4,15 +4,14 @@ module Dependabot module Config # Filters versions that should not be considered for dependency updates class IgnoreCondition - UPDATE_TYPES = %i( - ignore_major_versions - ignore_minor_versions - ignore_patch_versions - ).freeze + PATCH_VERSION_TYPE = "version-update:semver-patch" + MINOR_VERSION_TYPE = "version-update:semver-minor" + MAJOR_VERSION_TYPE = "version-update:semver-major" ALL_VERSIONS = ">= 0" attr_reader :dependency_name, :versions, :update_types + def initialize(dependency_name:, versions: nil, update_types: nil) @dependency_name = dependency_name @versions = versions || [] @@ -20,21 +19,25 @@ def initialize(dependency_name:, versions: nil, update_types: nil) end def ignored_versions(dependency) - return [ALL_VERSIONS] if @versions.empty? && @update_types.empty? + return [ALL_VERSIONS] if versions.empty? && transformed_update_types.empty? - versions_by_type(dependency) + @versions + versions_by_type(dependency) + versions end private + def transformed_update_types + update_types.map(&:downcase).map(&:strip).compact + end + def versions_by_type(dependency) - @update_types.flat_map do |t| + transformed_update_types.flat_map do |t| case t - when :ignore_patch_versions + when PATCH_VERSION_TYPE ignore_patch(dependency.version) - when :ignore_minor_versions + when MINOR_VERSION_TYPE ignore_minor(dependency.version) - when :ignore_major_versions + when MAJOR_VERSION_TYPE ignore_major(dependency.version) else [] diff --git a/common/spec/dependabot/config/file_spec.rb b/common/spec/dependabot/config/file_spec.rb index d6fac9fc2d1..f64f55fc8cd 100644 --- a/common/spec/dependabot/config/file_spec.rb +++ b/common/spec/dependabot/config/file_spec.rb @@ -55,9 +55,9 @@ expect(update_config.ignore_conditions.length).to eq(3) end - it "maps update-types string" do + it "passes update-types" do types_ignore = update_config.ignore_conditions.find { |ic| ic.dependency_name == "@types/node" } - expect(types_ignore.update_types).to eq([:ignore_patch_versions]) + expect(types_ignore.update_types).to eq(["version-update:semver-patch"]) end end end diff --git a/common/spec/dependabot/config/ignore_condition_spec.rb b/common/spec/dependabot/config/ignore_condition_spec.rb index 55156dbe1a6..89a13969640 100644 --- a/common/spec/dependabot/config/ignore_condition_spec.rb +++ b/common/spec/dependabot/config/ignore_condition_spec.rb @@ -68,7 +68,7 @@ def expect_ignored(versions) let(:major_upgrades) { %w(2 2.0 2.0.0) } context "with ignore_patch_versions" do - let(:update_types) { [:ignore_patch_versions] } + let(:update_types) { ["version-update:semver-patch"] } it "ignores expected versions" do expect_allowed(minor_upgrades + major_upgrades) @@ -81,7 +81,7 @@ def expect_ignored(versions) end context "with ignore_minor_versions" do - let(:update_types) { [:ignore_minor_versions] } + let(:update_types) { ["version-update:semver-minor"] } it "ignores expected versions" do expect_allowed(patch_upgrades + major_upgrades) @@ -94,7 +94,7 @@ def expect_ignored(versions) end context "with ignore_major_versions" do - let(:update_types) { [:ignore_major_versions] } + let(:update_types) { ["version-update:semver-major"] } it "ignores expected versions" do expect_allowed(patch_upgrades + minor_upgrades) @@ -107,7 +107,7 @@ def expect_ignored(versions) end context "with ignore_major_versions and ignore_patch_versions" do - let(:update_types) { %i(ignore_major_versions ignore_patch_versions) } + let(:update_types) { %w(version-update:semver-major version-update:semver-patch) } it "ignores expected versions" do expect_allowed(minor_upgrades) @@ -119,7 +119,7 @@ def expect_ignored(versions) let(:dependency_version) { "1.2" } context "with ignore_major_versions" do - let(:update_types) { [:ignore_major_versions] } + let(:update_types) { ["version-update:semver-major"] } it "ignores expected versions" do expect_allowed(patch_upgrades + minor_upgrades) @@ -132,7 +132,7 @@ def expect_ignored(versions) end context "with ignore_minor_versions" do - let(:update_types) { [:ignore_minor_versions] } + let(:update_types) { ["version-update:semver-minor"] } it "ignores expected versions" do expect_allowed(patch_upgrades + major_upgrades) @@ -145,7 +145,7 @@ def expect_ignored(versions) end context "with ignore_patch_versions" do - let(:update_types) { [:ignore_patch_versions] } + let(:update_types) { ["version-update:semver-patch"] } it "ignores expected versions" do expect_allowed(patch_upgrades + major_upgrades + minor_upgrades) @@ -161,7 +161,7 @@ def expect_ignored(versions) let(:dependency_version) { "1" } context "with ignore_major_versions" do - let(:update_types) { [:ignore_major_versions] } + let(:update_types) { ["version-update:semver-major"] } it "returns the expected range" do expect(ignored_versions).to eq([]) @@ -169,7 +169,7 @@ def expect_ignored(versions) end context "with ignore_minor_versions" do - let(:update_types) { [:ignore_minor_versions] } + let(:update_types) { ["version-update:semver-minor"] } it "returns the expected range" do expect(ignored_versions).to eq([]) @@ -177,7 +177,7 @@ def expect_ignored(versions) end context "with ignore_patch_versions" do - let(:update_types) { [:ignore_patch_versions] } + let(:update_types) { ["version-update:semver-patch"] } it "returns the expected range" do expect(ignored_versions).to eq([]) @@ -189,14 +189,14 @@ def expect_ignored(versions) let(:dependency_version) { "Finchley.SR3" } context "with ignore_patch_versions" do - let(:update_types) { [:ignore_patch_versions] } + let(:update_types) { ["version-update:semver-patch"] } it "returns the expected range" do expect(ignored_versions).to eq([]) end end context "with ignore_minor_versions" do - let(:update_types) { [:ignore_minor_versions] } + let(:update_types) { ["version-update:semver-minor"] } it "returns the expected range" do expect(ignored_versions).to eq([">= Finchley.a, < Finchley.999999"]) end diff --git a/common/spec/dependabot/config/update_config_spec.rb b/common/spec/dependabot/config/update_config_spec.rb index e5c185a611b..efeb6a8b78b 100644 --- a/common/spec/dependabot/config/update_config_spec.rb +++ b/common/spec/dependabot/config/update_config_spec.rb @@ -61,7 +61,7 @@ let(:ignore_conditions) do [Dependabot::Config::IgnoreCondition.new(dependency_name: "@types/node", versions: [">= 14.14.x, < 15"], - update_types: [:ignore_minor_versions])] + update_types: ["version-update:semver-minor"])] end it "returns versions" do @@ -74,11 +74,11 @@ [ Dependabot::Config::IgnoreCondition.new( dependency_name: "@types/node", - update_types: [:ignore_minor_versions] + update_types: ["version-update:semver-minor"] ), Dependabot::Config::IgnoreCondition.new( dependency_name: "@types/node", - update_types: [:ignore_minor_versions] + update_types: ["version-update:semver-minor"] ) ] end @@ -93,11 +93,11 @@ [ Dependabot::Config::IgnoreCondition.new( dependency_name: "@types/*", - update_types: [:ignore_major_versions] + update_types: ["version-update:semver-major"] ), Dependabot::Config::IgnoreCondition.new( dependency_name: "@types/node", - update_types: [:ignore_minor_versions] + update_types: ["version-update:semver-minor"] ) ] end