@@ -89,6 +89,8 @@ final class SemanticVersionTests: XCTestCase {
89
89
XCTAssertEqual ( SemanticVersion ( " 1.2.3-rc " ) , SemanticVersion ( 1 , 2 , 3 , " rc " ) )
90
90
XCTAssertEqual ( SemanticVersion ( " v1.2.3-beta1 " ) , SemanticVersion ( 1 , 2 , 3 , " beta1 " ) )
91
91
XCTAssertEqual ( SemanticVersion ( " v1.2.3-beta1+build5 " ) , SemanticVersion ( 1 , 2 , 3 , " beta1 " , " build5 " ) )
92
+ XCTAssertEqual ( SemanticVersion ( " 1.2.3-beta-foo " ) , SemanticVersion ( 1 , 2 , 3 , " beta-foo " ) )
93
+ XCTAssertEqual ( SemanticVersion ( " 1.2.3-beta-foo+build-42 " ) , SemanticVersion ( 1 , 2 , 3 , " beta-foo " , " build-42 " ) )
92
94
XCTAssertEqual ( SemanticVersion ( " " ) , nil )
93
95
XCTAssertEqual ( SemanticVersion ( " 1 " ) , nil )
94
96
XCTAssertEqual ( SemanticVersion ( " 1.2 " ) , nil )
@@ -109,6 +111,14 @@ final class SemanticVersionTests: XCTestCase {
109
111
XCTAssert ( SemanticVersion ( 1 , 0 , 0 ) < SemanticVersion ( 1 , 0 , 1 ) )
110
112
XCTAssert ( SemanticVersion ( 1 , 0 , 0 , " a " ) < SemanticVersion ( 1 , 0 , 0 , " b " ) )
111
113
XCTAssert ( SemanticVersion ( 1 , 0 , 0 , " a " , " a " ) < SemanticVersion ( 1 , 0 , 0 , " a " , " b " ) )
114
+
115
+ // ensure betas come before releases
116
+ XCTAssert ( SemanticVersion ( 1 , 0 , 0 , " b1 " ) < SemanticVersion ( 1 , 0 , 0 ) )
117
+ XCTAssertFalse ( SemanticVersion ( 1 , 0 , 0 , " b1 " ) > SemanticVersion ( 1 , 0 , 0 ) )
118
+ // but only if major/minor/patch are the same
119
+ XCTAssert ( SemanticVersion ( 1 , 0 , 0 ) < SemanticVersion ( 1 , 0 , 1 , " b1 " ) )
120
+ // once the patch bumps up to the beta level again, it sorts higher
121
+ XCTAssert ( SemanticVersion ( 1 , 0 , 1 ) > SemanticVersion ( 1 , 0 , 1 , " b1 " ) )
112
122
}
113
123
114
124
func test_isStable( ) throws {
0 commit comments