Skip to content

Commit 8fc101c

Browse files
fix tests that failed on FSC (#352)
1 parent 9b68575 commit 8fc101c

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

Sources/Data Model/Audience/SemanticVersion.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ extension SemanticVersion {
3535
// Up to the precision of targetedVersion, expect version to match exactly.
3636
for (idx, _) in targetedVersionParts.enumerated() {
3737
if versionParts.count <= idx {
38-
return -1;
38+
// even if they are equal at this point. if the target is a prerelease then it must be greater than the pre release.
39+
return targetedVersion.isPreRelease ? 1 : -1
3940
} else if !versionParts[idx].isNumber {
4041
//Compare strings
4142
if versionParts[idx] < targetedVersionParts[idx] {
@@ -55,7 +56,11 @@ extension SemanticVersion {
5556
return -1;
5657
}
5758
}
58-
59+
60+
if self.isPreRelease && !targetedVersion.isPreRelease {
61+
return -1;
62+
}
63+
5964
return 0;
6065
}
6166

@@ -78,8 +83,12 @@ extension SemanticVersion {
7883
targetSuffix = targetParts[1...]
7984
}
8085
// Expect a version string of the form x.y.z
86+
let dotCount = targetPrefix.filter({$0 == "."}).count
87+
if dotCount > 3 {
88+
throw OptimizelyError.attributeFormatInvalid
89+
}
8190
var targetedVersionParts = targetPrefix.split(separator: ".")
82-
guard targetedVersionParts.count > 0 else {
91+
guard targetedVersionParts.count == dotCount + 1 else {
8392
throw OptimizelyError.attributeFormatInvalid
8493
}
8594
if let targetSuffix = targetSuffix {

Tests/OptimizelyTests-DataModel/SemanticVersionTests.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,18 @@ class SemanticVersionTests: XCTestCase {
140140
XCTAssert(try version.compareVersion(targetedVersion: target) > 0)
141141
}
142142

143-
func testTargetWithVersionBetaEqual() {
143+
func testTargetWithVersionBetaLess() {
144144
let target = "2.1.3"
145145
let version = "2.1.3-beta"
146146

147-
XCTAssert(try version.compareVersion(targetedVersion: target) == 0)
147+
XCTAssert(try version.compareVersion(targetedVersion: target) < 0)
148148
}
149149

150-
func testVersionBetaLess() {
151-
let target = "2.1.4"
152-
let version = "2.1.3-beta"
150+
func testTargetBetaLess() {
151+
let target = "2.1.3-beta"
152+
let version = "2.1.3"
153153

154-
XCTAssert(try version.compareVersion(targetedVersion: target) < 0)
154+
XCTAssert(try version.compareVersion(targetedVersion: target) > 0)
155155
}
156156

157157
func testOtherTests() {
@@ -165,7 +165,7 @@ class SemanticVersionTests: XCTestCase {
165165

166166
func testInvalidAttributes() {
167167
let target = "2.1.0"
168-
let versions = ["-", ".", "..", "+", "+test", " ", "2 .3. 0"]
168+
let versions = ["-", ".", "..", "+", "+test", " ", "2 .3. 0", "2.", ".2.2"]
169169
for (_, version) in versions.enumerated() {
170170
XCTAssert(((try? (version.compareVersion(targetedVersion: target)) < 0) == nil))
171171
}

0 commit comments

Comments
 (0)