From acb75bf96e5be02641e0a3712f7846978255a7bc Mon Sep 17 00:00:00 2001 From: Grey Baker Date: Mon, 18 Mar 2019 17:34:18 +0000 Subject: [PATCH] Gradle: Handle multiple updates to a superstring --- .../gradle/file_updater/property_value_updater.rb | 9 ++++++++- .../file_updater/property_value_updater_spec.rb | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gradle/lib/dependabot/gradle/file_updater/property_value_updater.rb b/gradle/lib/dependabot/gradle/file_updater/property_value_updater.rb index 820459226f..19841aa6ff 100644 --- a/gradle/lib/dependabot/gradle/file_updater/property_value_updater.rb +++ b/gradle/lib/dependabot/gradle/file_updater/property_value_updater.rb @@ -25,7 +25,10 @@ def update_files_for_property_change(property_name:, file_to_update = dependency_files.find { |f| f.name == filename } updated_content = file_to_update.content.sub( declaration_string, - declaration_string.sub(previous_value, updated_value) + declaration_string.sub( + previous_value_regex(previous_value), + updated_value + ) ) updated_files = dependency_files.dup @@ -50,6 +53,10 @@ def update_file(file:, content:) updated_file.content = content updated_file end + + def previous_value_regex(previous_value) + /(?<=['"])#{Regexp.quote(previous_value)}(?=['"])/ + end end end end diff --git a/gradle/spec/dependabot/gradle/file_updater/property_value_updater_spec.rb b/gradle/spec/dependabot/gradle/file_updater/property_value_updater_spec.rb index 3b79e77611..b90498ee6f 100644 --- a/gradle/spec/dependabot/gradle/file_updater/property_value_updater_spec.rb +++ b/gradle/spec/dependabot/gradle/file_updater/property_value_updater_spec.rb @@ -46,5 +46,16 @@ expect(updated_files.first.content). to include("ext.kotlin_version = '3.2.1'") end + + context "when updating from a substring to the same value" do + let(:previous_value) { "1.1.4" } + let(:updated_value) { "1.1.4-3" } + + it "leaves the files alone" do + expect(updated_files.last).to eq(dependency_files.last) + expect(updated_files.first.content). + to include("ext.kotlin_version = '1.1.4-3'") + end + end end end