@@ -52,44 +52,53 @@ final class SemanticVersionTests: XCTestCase {
52
52
XCTAssert ( semVerRegex. matches ( " 1.0.0-0A.is.legal " ) )
53
53
}
54
54
55
+ #if swift(>=5.7)
55
56
func test_semVerPattern_valid( ) throws {
56
- XCTAssert ( " 0.0.4 " . contains ( semVerPattern) )
57
- XCTAssert ( " 0.0.4 " . contains ( semVerPattern) )
58
- XCTAssert ( " 1.2.3 " . contains ( semVerPattern) )
59
- XCTAssert ( " 10.20.30 " . contains ( semVerPattern) )
60
- XCTAssert ( " 1.1.2-prerelease+meta " . contains ( semVerPattern) )
61
- XCTAssert ( " 1.1.2+meta " . contains ( semVerPattern) )
62
- XCTAssert ( " 1.1.2+meta-valid " . contains ( semVerPattern) )
63
- XCTAssert ( " 1.0.0-alpha " . contains ( semVerPattern) )
64
- XCTAssert ( " 1.0.0-beta " . contains ( semVerPattern) )
65
- XCTAssert ( " 1.0.0-alpha.beta " . contains ( semVerPattern) )
66
- XCTAssert ( " 1.0.0-alpha.beta.1 " . contains ( semVerPattern) )
67
- XCTAssert ( " 1.0.0-alpha.1 " . contains ( semVerPattern) )
68
- XCTAssert ( " 1.0.0-alpha0.valid " . contains ( semVerPattern) )
69
- XCTAssert ( " 1.0.0-alpha.0valid " . contains ( semVerPattern) )
70
- XCTAssert ( " 1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay " . contains ( semVerPattern) )
71
- XCTAssert ( " 1.0.0-rc.1+build.1 " . contains ( semVerPattern) )
72
- XCTAssert ( " 2.0.0-rc.1+build.123 " . contains ( semVerPattern) )
73
- XCTAssert ( " 1.2.3-beta " . contains ( semVerPattern) )
74
- XCTAssert ( " 10.2.3-DEV-SNAPSHOT " . contains ( semVerPattern) )
75
- XCTAssert ( " 1.2.3-SNAPSHOT-123 " . contains ( semVerPattern) )
76
- XCTAssert ( " 1.0.0 " . contains ( semVerPattern) )
77
- XCTAssert ( " 2.0.0 " . contains ( semVerPattern) )
78
- XCTAssert ( " 1.1.7 " . contains ( semVerPattern) )
79
- XCTAssert ( " 2.0.0+build.1848 " . contains ( semVerPattern) )
80
- XCTAssert ( " 2.0.1-alpha.1227 " . contains ( semVerPattern) )
81
- XCTAssert ( " 1.0.0-alpha+beta " . contains ( semVerPattern) )
82
- XCTAssert ( " 1.2.3----RC-SNAPSHOT.12.9.1--.12+788 " . contains ( semVerPattern) )
83
- XCTAssert ( " 1.2.3----R-S.12.9.1--.12+meta " . contains ( semVerPattern) )
84
- XCTAssert ( " 1.2.3----RC-SNAPSHOT.12.9.1--.12 " . contains ( semVerPattern) )
85
- XCTAssert ( " 1.0.0+0.build.1-rc.10000aaa-kk-0.1 " . contains ( semVerPattern) )
86
- XCTAssert ( " 99999999999999999999999.999999999999999999.99999999999999999 " . contains ( semVerPattern) )
87
- XCTAssert ( " 1.0.0-0A.is.legal " . contains ( semVerPattern) )
57
+ if #available( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * ) {
58
+ XCTAssertNotNil ( " 0.0.4 " . wholeMatch ( of: semVerPattern) )
59
+ XCTAssertNotNil ( " 0.0.4 " . wholeMatch ( of: semVerPattern) )
60
+ XCTAssertNotNil ( " 1.2.3 " . wholeMatch ( of: semVerPattern) )
61
+ XCTAssertNotNil ( " 10.20.30 " . wholeMatch ( of: semVerPattern) )
62
+ XCTAssertNotNil ( " 1.1.2-prerelease+meta " . wholeMatch ( of: semVerPattern) )
63
+ XCTAssertNotNil ( " 1.1.2+meta " . wholeMatch ( of: semVerPattern) )
64
+ XCTAssertNotNil ( " 1.1.2+meta-valid " . wholeMatch ( of: semVerPattern) )
65
+ XCTAssertNotNil ( " 1.0.0-alpha " . wholeMatch ( of: semVerPattern) )
66
+ XCTAssertNotNil ( " 1.0.0-beta " . wholeMatch ( of: semVerPattern) )
67
+ XCTAssertNotNil ( " 1.0.0-alpha.beta " . wholeMatch ( of: semVerPattern) )
68
+ XCTAssertNotNil ( " 1.0.0-alpha.beta.1 " . wholeMatch ( of: semVerPattern) )
69
+ XCTAssertNotNil ( " 1.0.0-alpha.1 " . wholeMatch ( of: semVerPattern) )
70
+ XCTAssertNotNil ( " 1.0.0-alpha0.valid " . wholeMatch ( of: semVerPattern) )
71
+ XCTAssertNotNil ( " 1.0.0-alpha.0valid " . wholeMatch ( of: semVerPattern) )
72
+ XCTAssertNotNil ( " 1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay " . wholeMatch ( of: semVerPattern) )
73
+ XCTAssertNotNil ( " 1.0.0-rc.1+build.1 " . wholeMatch ( of: semVerPattern) )
74
+ XCTAssertNotNil ( " 2.0.0-rc.1+build.123 " . wholeMatch ( of: semVerPattern) )
75
+ XCTAssertNotNil ( " 1.2.3-beta " . wholeMatch ( of: semVerPattern) )
76
+ XCTAssertNotNil ( " 10.2.3-DEV-SNAPSHOT " . wholeMatch ( of: semVerPattern) )
77
+ XCTAssertNotNil ( " 1.2.3-SNAPSHOT-123 " . wholeMatch ( of: semVerPattern) )
78
+ XCTAssertNotNil ( " 1.0.0 " . wholeMatch ( of: semVerPattern) )
79
+ XCTAssertNotNil ( " 2.0.0 " . wholeMatch ( of: semVerPattern) )
80
+ XCTAssertNotNil ( " 1.1.7 " . wholeMatch ( of: semVerPattern) )
81
+ XCTAssertNotNil ( " 2.0.0+build.1848 " . wholeMatch ( of: semVerPattern) )
82
+ XCTAssertNotNil ( " 2.0.1-alpha.1227 " . wholeMatch ( of: semVerPattern) )
83
+ XCTAssertNotNil ( " 1.0.0-alpha+beta " . wholeMatch ( of: semVerPattern) )
84
+ XCTAssertNotNil ( " 1.2.3----RC-SNAPSHOT.12.9.1--.12+788 " . wholeMatch ( of: semVerPattern) )
85
+ XCTAssertNotNil ( " 1.2.3----R-S.12.9.1--.12+meta " . wholeMatch ( of: semVerPattern) )
86
+ XCTAssertNotNil ( " 1.2.3----RC-SNAPSHOT.12.9.1--.12 " . wholeMatch ( of: semVerPattern) )
87
+ XCTAssertNotNil ( " 1.0.0+0.build.1-rc.10000aaa-kk-0.1 " . wholeMatch ( of: semVerPattern) )
88
+ XCTAssertNotNil ( " 99999999999999999999999.999999999999999999.99999999999999999 " . wholeMatch ( of: semVerPattern) )
89
+ XCTAssertNotNil ( " 1.0.0-0A.is.legal " . wholeMatch ( of: semVerPattern) )
90
+ }
88
91
}
92
+ #endif
89
93
90
94
func test_allow_leading_v( ) throws {
91
95
XCTAssert ( semVerRegex. matches ( " v0.0.4 " ) )
92
- XCTAssert ( " v0.0.4 " . contains ( semVerPattern) )
96
+
97
+ #if swift(>=5.7)
98
+ if #available( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * ) {
99
+ XCTAssert ( " v0.0.4 " . contains ( semVerPattern) )
100
+ }
101
+ #endif
93
102
}
94
103
95
104
func test_semVerRegex_invalid( ) throws {
@@ -134,47 +143,51 @@ final class SemanticVersionTests: XCTestCase {
134
143
XCTAssertFalse ( semVerRegex. matches ( " 9.8.7-whatever+meta+meta " ) )
135
144
}
136
145
146
+ #if swift(>=5.7)
137
147
func test_semVerPattern_invalid( ) throws {
138
- XCTAssertFalse ( " 1 " . contains ( semVerPattern) )
139
- XCTAssertFalse ( " 1.2 " . contains ( semVerPattern) )
140
- XCTAssertFalse ( " 1.2.3-0123 " . contains ( semVerPattern) )
141
- XCTAssertFalse ( " 1.2.3-0123.0123 " . contains ( semVerPattern) )
142
- XCTAssertFalse ( " 1.1.2+.123 " . contains ( semVerPattern) )
143
- XCTAssertFalse ( " +invalid " . contains ( semVerPattern) )
144
- XCTAssertFalse ( " -invalid " . contains ( semVerPattern) )
145
- XCTAssertFalse ( " -invalid+invalid " . contains ( semVerPattern) )
146
- XCTAssertFalse ( " -invalid.01 " . contains ( semVerPattern) )
147
- XCTAssertFalse ( " alpha " . contains ( semVerPattern) )
148
- XCTAssertFalse ( " alpha.beta " . contains ( semVerPattern) )
149
- XCTAssertFalse ( " alpha.beta.1 " . contains ( semVerPattern) )
150
- XCTAssertFalse ( " alpha.1 " . contains ( semVerPattern) )
151
- XCTAssertFalse ( " alpha+beta " . contains ( semVerPattern) )
152
- XCTAssertFalse ( " alpha_beta " . contains ( semVerPattern) )
153
- XCTAssertFalse ( " alpha. " . contains ( semVerPattern) )
154
- XCTAssertFalse ( " alpha.. " . contains ( semVerPattern) )
155
- XCTAssertFalse ( " beta " . contains ( semVerPattern) )
156
- XCTAssertFalse ( " 1.0.0-alpha_beta " . contains ( semVerPattern) )
157
- XCTAssertFalse ( " -alpha. " . contains ( semVerPattern) )
158
- XCTAssertFalse ( " 1.0.0-alpha.. " . contains ( semVerPattern) )
159
- XCTAssertFalse ( " 1.0.0-alpha..1 " . contains ( semVerPattern) )
160
- XCTAssertFalse ( " 1.0.0-alpha...1 " . contains ( semVerPattern) )
161
- XCTAssertFalse ( " 1.0.0-alpha....1 " . contains ( semVerPattern) )
162
- XCTAssertFalse ( " 1.0.0-alpha.....1 " . contains ( semVerPattern) )
163
- XCTAssertFalse ( " 1.0.0-alpha......1 " . contains ( semVerPattern) )
164
- XCTAssertFalse ( " 1.0.0-alpha.......1 " . contains ( semVerPattern) )
165
- XCTAssertFalse ( " 01.1.1 " . contains ( semVerPattern) )
166
- XCTAssertFalse ( " 1.01.1 " . contains ( semVerPattern) )
167
- XCTAssertFalse ( " 1.1.01 " . contains ( semVerPattern) )
168
- XCTAssertFalse ( " 1.2 " . contains ( semVerPattern) )
169
- XCTAssertFalse ( " 1.2.3.DEV " . contains ( semVerPattern) )
170
- XCTAssertFalse ( " 1.2-SNAPSHOT " . contains ( semVerPattern) )
171
- XCTAssertFalse ( " 1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788 " . contains ( semVerPattern) )
172
- XCTAssertFalse ( " 1.2-RC-SNAPSHOT " . contains ( semVerPattern) )
173
- XCTAssertFalse ( " -1.0.3-gamma+b7718 " . contains ( semVerPattern) )
174
- XCTAssertFalse ( " +justmeta " . contains ( semVerPattern) )
175
- XCTAssertFalse ( " 9.8.7+meta+meta " . contains ( semVerPattern) )
176
- XCTAssertFalse ( " 9.8.7-whatever+meta+meta " . contains ( semVerPattern) )
148
+ if #available( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * ) {
149
+ XCTAssertFalse ( " 1 " . contains ( semVerPattern) )
150
+ XCTAssertFalse ( " 1.2 " . contains ( semVerPattern) )
151
+ XCTAssertFalse ( " 1.2.3-0123 " . contains ( semVerPattern) )
152
+ XCTAssertFalse ( " 1.2.3-0123.0123 " . contains ( semVerPattern) )
153
+ XCTAssertFalse ( " 1.1.2+.123 " . contains ( semVerPattern) )
154
+ XCTAssertFalse ( " +invalid " . contains ( semVerPattern) )
155
+ XCTAssertFalse ( " -invalid " . contains ( semVerPattern) )
156
+ XCTAssertFalse ( " -invalid+invalid " . contains ( semVerPattern) )
157
+ XCTAssertFalse ( " -invalid.01 " . contains ( semVerPattern) )
158
+ XCTAssertFalse ( " alpha " . contains ( semVerPattern) )
159
+ XCTAssertFalse ( " alpha.beta " . contains ( semVerPattern) )
160
+ XCTAssertFalse ( " alpha.beta.1 " . contains ( semVerPattern) )
161
+ XCTAssertFalse ( " alpha.1 " . contains ( semVerPattern) )
162
+ XCTAssertFalse ( " alpha+beta " . contains ( semVerPattern) )
163
+ XCTAssertFalse ( " alpha_beta " . contains ( semVerPattern) )
164
+ XCTAssertFalse ( " alpha. " . contains ( semVerPattern) )
165
+ XCTAssertFalse ( " alpha.. " . contains ( semVerPattern) )
166
+ XCTAssertFalse ( " beta " . contains ( semVerPattern) )
167
+ XCTAssertFalse ( " 1.0.0-alpha_beta " . contains ( semVerPattern) )
168
+ XCTAssertFalse ( " -alpha. " . contains ( semVerPattern) )
169
+ XCTAssertFalse ( " 1.0.0-alpha.. " . contains ( semVerPattern) )
170
+ XCTAssertFalse ( " 1.0.0-alpha..1 " . contains ( semVerPattern) )
171
+ XCTAssertFalse ( " 1.0.0-alpha...1 " . contains ( semVerPattern) )
172
+ XCTAssertFalse ( " 1.0.0-alpha....1 " . contains ( semVerPattern) )
173
+ XCTAssertFalse ( " 1.0.0-alpha.....1 " . contains ( semVerPattern) )
174
+ XCTAssertFalse ( " 1.0.0-alpha......1 " . contains ( semVerPattern) )
175
+ XCTAssertFalse ( " 1.0.0-alpha.......1 " . contains ( semVerPattern) )
176
+ XCTAssertFalse ( " 01.1.1 " . contains ( semVerPattern) )
177
+ XCTAssertFalse ( " 1.01.1 " . contains ( semVerPattern) )
178
+ XCTAssertFalse ( " 1.1.01 " . contains ( semVerPattern) )
179
+ XCTAssertFalse ( " 1.2 " . contains ( semVerPattern) )
180
+ XCTAssertFalse ( " 1.2.3.DEV " . contains ( semVerPattern) )
181
+ XCTAssertFalse ( " 1.2-SNAPSHOT " . contains ( semVerPattern) )
182
+ XCTAssertFalse ( " 1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788 " . contains ( semVerPattern) )
183
+ XCTAssertFalse ( " 1.2-RC-SNAPSHOT " . contains ( semVerPattern) )
184
+ XCTAssertFalse ( " -1.0.3-gamma+b7718 " . contains ( semVerPattern) )
185
+ XCTAssertFalse ( " +justmeta " . contains ( semVerPattern) )
186
+ XCTAssertFalse ( " 9.8.7+meta+meta " . contains ( semVerPattern) )
187
+ XCTAssertFalse ( " 9.8.7-whatever+meta+meta " . contains ( semVerPattern) )
188
+ }
177
189
}
190
+ #endif
178
191
179
192
func test_init( ) throws {
180
193
XCTAssertEqual ( SemanticVersion ( " 1.2.3 " ) , SemanticVersion ( 1 , 2 , 3 ) )
0 commit comments