Skip to content

Commit b9e8fd8

Browse files
author
Bilal Al
committed
updated semver spec
1 parent 980c272 commit b9e8fd8

1 file changed

Lines changed: 31 additions & 72 deletions

File tree

Lines changed: 31 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,51 @@
11
require 'spec_helper'
2+
require 'csv'
23

34
describe SplitIoClient::Semver do
4-
let(:valid_versions) { ["1.1.2", "1.1.1", "1.0.0", "1.0.0-rc.1", "1.0.0-beta.11", "1.0.0-beta.2",
5-
"1.0.0-beta", "1.0.0-alpha.beta", "1.0.0-alpha.1", "1.0.0-alpha", "2.2.2-rc.2+metadata-lalala", "2.2.2-rc.1.2",
6-
"1.2.3", "0.0.4", "1.1.2+meta", "1.1.2-prerelease+meta", "1.0.0-beta", "1.0.0-alpha", "1.0.0-alpha0.valid",
7-
"1.0.0-alpha.0valid", "1.0.0-rc.1+build.1", "1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay",
8-
"10.2.3-DEV-SNAPSHOT", "1.2.3-SNAPSHOT-123", "1.1.1-rc2", "1.0.0-0A.is.legal", "1.2.3----RC-SNAPSHOT.12.9.1--.12+788",
9-
"1.2.3----R-S.12.9.1--.12+meta", "1.2.3----RC-SNAPSHOT.12.9.1--.12.88", "1.2.3----RC-SNAPSHOT.12.9.1--.12",
10-
"9223372036854775807.9223372036854775807.9223372036854775807", "9223372036854775807.9223372036854775807.9223372036854775806",
11-
"1.1.1-alpha.beta.rc.build.java.pr.support.10", "1.1.1-alpha.beta.rc.build.java.pr.support"] }
5+
let(:valid_versions) do
6+
CSV.parse(File.read(File.expand_path(File.join(File.dirname(__FILE__),
7+
'../../test_data/splits/semver/valid-semantic-versions.csv'))))
8+
end
9+
let(:invalid_versions) do
10+
CSV.parse(File.read(File.expand_path(File.join(File.dirname(__FILE__),
11+
'../../test_data/splits/semver/invalid-semantic-versions.csv'))))
12+
end
13+
let(:equal_to_versions) do
14+
CSV.parse(File.read(File.expand_path(File.join(File.dirname(__FILE__),
15+
'../../test_data/splits/semver/equal-to-semver.csv'))))
16+
end
17+
18+
let(:logger) { Logger.new('/dev/null') }
1219

1320
context 'check versions' do
1421
it 'accept valid versions' do
15-
major = [1, 1, 1, 1, 1, 1,
16-
1, 1, 1, 1, 2, 2,
17-
1, 0, 1, 1, 1, 1, 1,
18-
1, 1, 1,
19-
10, 1, 1, 1, 1,
20-
1, 1, 1,
21-
9223372036854775807, 9223372036854775807,
22-
1,1]
23-
minor = [1, 1, 0, 0, 0, 0,
24-
0, 0, 0, 0, 2, 2,
25-
2, 0, 1, 1, 0, 0, 0,
26-
0, 0, 0,
27-
2, 2, 1, 0, 2,
28-
2, 2, 2,
29-
9223372036854775807, 9223372036854775807,
30-
1, 1]
31-
patch = [2, 1, 0, 0, 0, 0,
32-
0, 0, 0, 0, 2, 2,
33-
3, 4, 2, 2, 0, 0, 0,
34-
0, 0, 0,
35-
3, 3, 1, 0, 3,
36-
3, 3, 3,
37-
9223372036854775807, 9223372036854775806,
38-
1, 1]
39-
pre_release = [[], [], [], ["rc","1"], ["beta","11"],["beta","2"],
40-
["beta"], ["alpha","beta"], ["alpha","1"], ["alpha"], ["rc","2"], ["rc","1","2"],
41-
[], [], [], ["prerelease"], ["beta"], ["alpha"], ["alpha0","valid"],
42-
["alpha","0valid"], ["rc","1"], ["alpha-a","b-c-somethinglong"],
43-
["DEV-SNAPSHOT"], ["SNAPSHOT-123"], ["rc2"], ["0A","is","legal"], ["---RC-SNAPSHOT","12","9","1--","12"],
44-
["---R-S","12","9","1--","12"], ["---RC-SNAPSHOT","12","9","1--","12","88"], ["---RC-SNAPSHOT","12","9","1--","12"],
45-
[], [],
46-
["alpha","beta","rc","build","java","pr","support","10"], ["alpha","beta","rc","build","java","pr","support"]]
47-
48-
for i in (0..major.length-1)
49-
semver = described_class.new(valid_versions[i])
50-
expect(verify_version(semver, major[i], minor[i], patch[i], pre_release[i], pre_release[i]==[])).to eq(true)
22+
for i in (0..valid_versions.length-1)
23+
expect(described_class.build(valid_versions[i][0], logger)).should_not be_nil
5124
end
5225
end
5326
it 'reject invalid versions' do
54-
invalid_versions = [
55-
"1", "1.2", "1.alpha.2", "+invalid", "-invalid", "-invalid+invalid", "+justmeta",
56-
"-invalid.01", "alpha", "alpha.beta", "alpha.beta.1", "alpha.1", "alpha+beta",
57-
"alpha_beta", "alpha.", "alpha..", "beta", "-alpha.", "1.2", "1.2.3.DEV", "-1.0.3-gamma+b7718",
58-
"1.2-SNAPSHOT", "1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788", "1.2-RC-SNAPSHOT"]
59-
6027
for version in invalid_versions
61-
expect{ described_class.new(version) }.to raise_error(RuntimeError)
28+
expect(described_class.build(version[0], logger)).to eq(nil)
6229
end
6330
end
6431
end
6532

6633
context 'compare versions' do
67-
it 'higher, lower and equal' do
68-
cnt = 0
69-
for i in (0..(valid_versions.length/2).to_i-1)
70-
expect(described_class.new(valid_versions[cnt]).compare(described_class.new(valid_versions[cnt+1]))).to eq(1)
71-
expect(described_class.new(valid_versions[cnt+1]).compare(described_class.new(valid_versions[cnt]))).to eq(-1)
72-
expect(described_class.new(valid_versions[cnt]).compare(described_class.new(valid_versions[cnt]))).to eq(0)
73-
expect(described_class.new(valid_versions[cnt+1]).compare(described_class.new(valid_versions[cnt+1]))).to eq(0)
74-
cnt = cnt + 2
34+
it 'equal and not equal' do
35+
for i in (1..valid_versions.length-1)
36+
expect(described_class.build(valid_versions[i][0], logger).compare(described_class.build(valid_versions[i][1], logger))).to eq(1)
37+
expect(described_class.build(valid_versions[i][1], logger).compare(described_class.build(valid_versions[i][0], logger))).to eq(-1)
38+
expect(described_class.build(valid_versions[i][0], logger).compare(described_class.build(valid_versions[i][0], logger))).to eq(0)
39+
expect(described_class.build(valid_versions[i][1], logger).compare(described_class.build(valid_versions[i][1], logger))).to eq(0)
40+
end
41+
for i in (1..equal_to_versions.length-1)
42+
if valid_versions[i][2]
43+
expect(described_class.build(valid_versions[i][0], logger).compare(described_class.build(valid_versions[i][1], logger))).to eq(0)
44+
else
45+
expect(described_class.build(valid_versions[i][0], logger).compare(described_class.build(valid_versions[i][1], logger))).not_to eq(0)
46+
end
7547
end
76-
expect(described_class.new("1.1.1").compare(described_class.new("1.1.1"))).to eq(0)
77-
expect(described_class.new("1.1.1").compare(described_class.new("1.1.1+metadata"))).to eq(0)
78-
expect(described_class.new("1.1.1").compare(described_class.new("1.1.1-rc.1"))).to eq(1)
79-
expect(described_class.new("88.88.88").compare(described_class.new("88.88.88"))).to eq(0)
80-
expect(described_class.new("1.2.3----RC-SNAPSHOT.12.9.1--.12").compare(described_class.new("1.2.3----RC-SNAPSHOT.12.9.1--.12"))).to eq(0)
81-
expect(described_class.new("10.2.3-DEV-SNAPSHOT").compare(described_class.new("10.2.3-SNAPSHOT-123"))).to eq(-1)
82-
end
83-
end
8448

85-
def verify_version(semver, major, minor, patch, pre_release="", is_stable=True)
86-
if semver.major == major && semver.minor == minor &&d semver.patch == patch &&
87-
semver.pre_release == pre_release && semver.is_stable == is_stable
88-
return true
8949
end
90-
return false
9150
end
9251
end

0 commit comments

Comments
 (0)