Skip to content

Commit b1529d2

Browse files
author
Bilal Al
committed
Fixed compare logic in semver, equalto and inlist matchers.
1 parent b9e8fd8 commit b1529d2

8 files changed

Lines changed: 28 additions & 27 deletions

lib/splitclient-rb/engine/matchers/equal_to_semver_matcher.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def match?(args)
2323
@logger.log_if_debug('stringMatcherData is required for EQUAL_TO_SEMVER matcher type')
2424
return false
2525
end
26-
matches = @semver.compare(SplitIoClient::Semver.new(value_to_match)).zero?
26+
matches = (@semver.version == SplitIoClient::Semver.new(value_to_match).version)
2727
@logger.log_if_debug("[EqualsToSemverMatcher] #{value_to_match} matches -> #{matches}")
2828
matches
2929
end

lib/splitclient-rb/engine/matchers/in_list_semver_matcher.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def match?(args)
2323
@logger.log_if_debug('whitelistMatcherData is required for IN_LIST_SEMVER matcher type')
2424
return false
2525
end
26-
matches = (@semver_list.map { |item| item.compare(value_to_match) }).any?(&:zero?)
26+
matches = (@semver_list.map { |item| item.version == value_to_match.version }).any? { |item| item == true }
2727
@logger.log_if_debug("[InListSemverMatcher] #{value_to_match} matches -> #{matches}")
2828
matches
2929
end

lib/splitclient-rb/engine/matchers/semver.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@ class Semver
66
PRE_RELEASE_DELIMITER = '-'
77
VALUE_DELIMITER = '.'
88

9-
attr_reader :major, :minor, :patch, :pre_release, :is_stable, :old_version, :version
9+
attr_reader :major, :minor, :patch, :pre_release, :is_stable, :version
1010

1111
def initialize(version)
1212
@major = 0
1313
@minor = 0
1414
@patch = 0
1515
@pre_release = []
1616
@is_stable = false
17-
@old_version = version
18-
@version = ""
19-
@metadata = ""
20-
parse
17+
@version = ''
18+
@metadata = ''
19+
parse(version)
2120
end
2221

2322
#
@@ -34,15 +33,16 @@ def self.build(version, logger)
3433
end
3534

3635
#
37-
# Check if there is any metadata characters in self._old_version.
36+
# Check if there is any metadata characters in version.
3837
#
3938
# @return [type] String semver without the metadata
4039
#
41-
def remove_metadata_if_exists
42-
index = @old_version.index(METADATA_DELIMITER)
43-
return @old_version if index.nil?
44-
@metadata = @old_version[index+1,@old_version.length]
45-
@old_version[0, index]
40+
def remove_metadata_if_exists(old_version)
41+
index = old_version.index(METADATA_DELIMITER)
42+
return old_version if index.nil?
43+
44+
@metadata = old_version[index + 1, old_version.length]
45+
old_version[0, index]
4646
end
4747

4848
# Compare the current Semver object to a given Semver object, return:
@@ -70,10 +70,10 @@ def integer?(value)
7070
end
7171

7272
#
73-
# Parse the string in self._old_version to update the other internal variables
73+
# Parse the string in version to update the other internal variables
7474
#
75-
def parse
76-
without_metadata = remove_metadata_if_exists
75+
def parse(old_version)
76+
without_metadata = remove_metadata_if_exists(old_version)
7777

7878
index = without_metadata.index(PRE_RELEASE_DELIMITER)
7979
if index.nil?
@@ -103,8 +103,8 @@ def assign_major_minor_and_patch(version)
103103
@minor = parts[1].to_i
104104
@patch = parts[2].to_i
105105
@version = "#{@major}#{VALUE_DELIMITER}#{@minor}#{VALUE_DELIMITER}#{@patch}"
106-
@version += "#{PRE_RELEASE_DELIMITER}#{@pre_release.join('.')}" if !@pre_release.empty?
107-
@version += "#{METADATA_DELIMITER}#{@metadata}" if !@metadata.empty?
106+
@version += "#{PRE_RELEASE_DELIMITER}#{@pre_release.join('.')}" unless @pre_release.empty?
107+
@version += "#{METADATA_DELIMITER}#{@metadata}" unless @metadata.empty?
108108
end
109109

110110
#

spec/engine/matchers/matches_between_semver_matcher_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
matcher = described_class.new("version", raw[:betweenStringMatcherData][:start], raw[:betweenStringMatcherData][:end], config.split_logger, config.split_validator)
1515
expect(matcher.attribute).to eq("version")
1616
semver_start = matcher.instance_variable_get(:@semver_start)
17-
expect(semver_start.instance_variable_get(:@old_version)).to eq("2.1.8")
17+
expect(semver_start.instance_variable_get(:@version)).to eq("2.1.8")
1818
semver_end = matcher.instance_variable_get(:@semver_end)
19-
expect(semver_end.instance_variable_get(:@old_version)).to eq("2.1.11")
19+
expect(semver_end.instance_variable_get(:@version)).to eq("2.1.11")
2020
end
2121

2222
it 'matches' do

spec/engine/matchers/matches_equal_to_semver_matcher_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
matcher = described_class.new("version", raw[:stringMatcherData], config.split_logger, config.split_validator)
1515
expect(matcher.attribute).to eq("version")
1616
semver = matcher.instance_variable_get(:@semver)
17-
expect(semver.instance_variable_get(:@old_version)).to eq("2.1.8")
17+
expect(semver.instance_variable_get(:@version)).to eq("2.1.8")
1818
end
1919

2020
it 'matches' do
2121
matcher = described_class.new("version", raw[:stringMatcherData], config.split_logger, config.split_validator)
22-
expect(matcher.match?(:attributes=>{"version": "2.1.8+rc"})).to eq(true)
2322
expect(matcher.match?(:attributes=>{"version": "2.1.8"})).to eq(true)
2423
end
2524

2625
it 'does not match' do
2726
matcher = described_class.new("version", raw[:stringMatcherData], config.split_logger, config.split_validator)
27+
expect(matcher.match?(:attributes=>{"version": "2.1.8+rc"})).to eq(false)
2828
expect(matcher.match?(:attributes=>{"version": "2.1.5"})).to eq(false)
2929
expect(matcher.match?(:attributes=>{"version": "2.1.5-rc1"})).to eq(false)
3030
end

spec/engine/matchers/matches_greater_than_or_equal_to_semver_matcher_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
matcher = described_class.new("version", raw[:stringMatcherData], config.split_logger, config.split_validator)
1515
expect(matcher.attribute).to eq("version")
1616
semver = matcher.instance_variable_get(:@semver)
17-
expect(semver.instance_variable_get(:@old_version)).to eq("2.1.8")
17+
expect(semver.instance_variable_get(:@version)).to eq("2.1.8")
1818
end
1919

2020
it 'matches' do

spec/engine/matchers/matches_in_list_semver_matcher_spec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,19 @@
1414
matcher = described_class.new("version", raw[:whitelistMatcherData][:whitelist], config.split_logger, config.split_validator)
1515
expect(matcher.attribute).to eq("version")
1616
semver_list = matcher.instance_variable_get(:@semver_list)
17-
expect(semver_list[0].instance_variable_get(:@old_version)).to eq("2.1.8")
18-
expect(semver_list[1].instance_variable_get(:@old_version)).to eq("2.1.11")
17+
expect(semver_list[0].instance_variable_get(:@version)).to eq("2.1.8")
18+
expect(semver_list[1].instance_variable_get(:@version)).to eq("2.1.11")
1919
end
2020

2121
it 'matches' do
2222
matcher = described_class.new("version", raw[:whitelistMatcherData][:whitelist], config.split_logger, config.split_validator)
23-
expect(matcher.match?(:attributes=>{"version": "2.1.8+rc"})).to eq(true)
23+
expect(matcher.match?(:attributes=>{"version": "2.1.8"})).to eq(true)
2424
expect(matcher.match?(:attributes=>{"version": "2.1.11"})).to eq(true)
2525
end
2626

2727
it 'does not match' do
2828
matcher = described_class.new("version", raw[:whitelistMatcherData][:whitelist], config.split_logger, config.split_validator)
29+
expect(matcher.match?(:attributes=>{"version": "2.1.8+rc"})).to eq(false)
2930
expect(matcher.match?(:attributes=>{"version": "2.1.7"})).to eq(false)
3031
expect(matcher.match?(:attributes=>{"version": "2.1.11-rc12"})).to eq(false)
3132
expect(matcher.match?(:attributes=>{"version": "2.1.8-rc1"})).to eq(false)

spec/engine/matchers/matches_less_than_or_equal_to_semver_matcher_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
matcher = described_class.new("version", raw[:stringMatcherData], config.split_logger, config.split_validator)
1515
expect(matcher.attribute).to eq("version")
1616
semver = matcher.instance_variable_get(:@semver)
17-
expect(semver.instance_variable_get(:@old_version)).to eq("2.1.8")
17+
expect(semver.instance_variable_get(:@version)).to eq("2.1.8")
1818
end
1919

2020
it 'matches' do

0 commit comments

Comments
 (0)