Skip to content

Commit 2a54d08

Browse files
author
Bilal Al
committed
polish and test update
1 parent 50fe596 commit 2a54d08

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ def initialize(attribute, list_value, logger, validator)
2020
end
2121

2222
def match?(args)
23-
return false unless verify_semver_arg?(args, 'InListSemverMatcher')
23+
return false if @semver_list.empty? || !verify_semver_arg?(args, 'InListSemverMatcher')
2424

2525
value_to_match = SplitIoClient::Semver.build(args[:attributes][@attribute.to_sym], @logger)
2626
if value_to_match.nil?
2727
@logger.error('whitelistMatcherData is required for IN_LIST_SEMVER matcher type')
2828
return false
29+
2930
end
3031
matches = (@semver_list.map { |item| item.version == value_to_match.version }).any? { |item| item == true }
3132
@logger.debug("[InListSemverMatcher] #{value_to_match} matches -> #{matches}")

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def verify_semver_arg?(args, matcher_name)
4141
end
4242

4343
def check_semver_value_to_match(value_to_match, matcher_spec_name)
44-
unless !value_to_match.nil? && !@semver.nil?
44+
if value_to_match.nil? || @semver.nil?
4545
@logger.error("stringMatcherData is required for #{matcher_spec_name} matcher type")
4646
return false
4747

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def compare(to_compare)
7070
private
7171

7272
def integer?(value)
73-
value.to_i.to_s == value
73+
!!value.match(/^(\d)+$/)
7474
end
7575

7676
#
@@ -107,10 +107,21 @@ def assign_major_minor_and_patch(version)
107107
@minor = parts[1].to_i
108108
@patch = parts[2].to_i
109109
@version = "#{@major}#{VALUE_DELIMITER}#{@minor}#{VALUE_DELIMITER}#{@patch}"
110-
@version += "#{PRE_RELEASE_DELIMITER}#{@pre_release.join('.')}" unless @pre_release.empty?
110+
@version += parse_pre_release
111111
@version += "#{METADATA_DELIMITER}#{@metadata}" unless @metadata.empty?
112112
end
113113

114+
def parse_pre_release
115+
return '' if @pre_release.empty?
116+
117+
pre_parsed = []
118+
@pre_release.each do |pre_digit|
119+
pre_digit = pre_digit.to_i if integer?(pre_digit)
120+
pre_parsed << pre_digit
121+
end
122+
"#{PRE_RELEASE_DELIMITER}#{pre_parsed.join('.')}"
123+
end
124+
114125
#
115126
# Compare 2 variables and return int as follows:
116127
# 0: if var1 == var2
@@ -169,6 +180,7 @@ def compare_pre_release(to_compare)
169180

170181
if integer?(@pre_release[i]) && integer?(to_compare.pre_release[i])
171182
return compare_vars(@pre_release[i].to_i, to_compare.pre_release[i].to_i)
183+
172184
end
173185

174186
return compare_vars(@pre_release[i], to_compare.pre_release[i])

spec/engine/matchers/semver_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333
expect(described_class.build(version[0], logger)).to eq(nil)
3434
end
3535
end
36+
37+
it 'verify leading-zero integers are converted' do
38+
semver = described_class.build('1.01.2', logger)
39+
expect(semver.version).to eq('1.1.2')
40+
expect(described_class.build('1.01.2-rc.04', logger).version).to eq('1.1.2-rc.4')
41+
end
42+
3643
end
3744

3845
context 'compare versions' do

0 commit comments

Comments
 (0)