@@ -251,25 +251,45 @@ func TestIsVersionSatisfied(t *testing.T) {
251
251
252
252
func TestNormalizeVersion (t * testing.T ) {
253
253
tests := []struct {
254
- input string
255
- expected string
254
+ input string
255
+ sourceType SourceType
256
+ expected string
257
+ description string
256
258
}{
257
- {"1.5.0" , "1.5.0" },
258
- {"^1.5.0" , "1.5.0" },
259
- {"~1.5.0" , "1.5.0" },
260
- {">=1.5.0" , ">=1.5.0" },
261
- {"<2.0.0" , "<2.0.0" },
262
- {"==1.5.0" , "==1.5.0" },
263
- {" 1.5.0 " , "1.5.0" },
264
- {`"1.5.0"` , "1.5.0" },
265
- {`'1.5.0'` , "1.5.0" },
266
- {"*" , "*" },
267
- {"latest" , "latest" },
259
+ // Lock file tests (should remove ^ and ~)
260
+ {"1.5.0" , SourceTypeLock , "1.5.0" , "exact version" },
261
+ {"^1.5.0" , SourceTypeLock , "1.5.0" , "npm caret removed for lock file" },
262
+ {"~1.5.0" , SourceTypeLock , "1.5.0" , "npm tilde removed for lock file" },
263
+ {">=1.5.0" , SourceTypeLock , ">=1.5.0" , "semver operators preserved for lock file" },
264
+ {"<2.0.0" , SourceTypeLock , "<2.0.0" , "semver operators preserved for lock file" },
265
+ {"==1.5.0" , SourceTypeLock , "==1.5.0" , "semver operators preserved for lock file" },
266
+ {" 1.5.0 " , SourceTypeLock , "1.5.0" , "whitespace removed" },
267
+ {`"1.5.0"` , SourceTypeLock , "1.5.0" , "quotes removed" },
268
+ {`'1.5.0'` , SourceTypeLock , "1.5.0" , "quotes removed" },
269
+ {"*" , SourceTypeLock , "*" , "wildcard preserved" },
270
+ {"latest" , SourceTypeLock , "latest" , "latest preserved" },
271
+
272
+ // Package file tests (should preserve ^ and ~)
273
+ {"1.5.0" , SourceTypePackage , "1.5.0" , "exact version" },
274
+ {"^1.5.0" , SourceTypePackage , "^1.5.0" , "npm caret preserved for package file" },
275
+ {"~1.5.0" , SourceTypePackage , "~1.5.0" , "npm tilde preserved for package file" },
276
+ {">=1.5.0" , SourceTypePackage , ">=1.5.0" , "semver operators preserved for package file" },
277
+ {"<2.0.0" , SourceTypePackage , "<2.0.0" , "semver operators preserved for package file" },
278
+ {"==1.5.0" , SourceTypePackage , "==1.5.0" , "semver operators preserved for package file" },
279
+ {" 1.5.0 " , SourceTypePackage , "1.5.0" , "whitespace removed" },
280
+ {`"1.5.0"` , SourceTypePackage , "1.5.0" , "quotes removed" },
281
+ {`'1.5.0'` , SourceTypePackage , "1.5.0" , "quotes removed" },
282
+ {"*" , SourceTypePackage , "*" , "wildcard preserved" },
283
+ {"latest" , SourceTypePackage , "latest" , "latest preserved" },
268
284
}
269
285
270
286
for _ , tt := range tests {
271
- t .Run (tt .input , func (t * testing.T ) {
272
- result := normalizeVersion (tt .input )
287
+ sourceTypeStr := "Package"
288
+ if tt .sourceType == SourceTypeLock {
289
+ sourceTypeStr = "Lock"
290
+ }
291
+ t .Run (fmt .Sprintf ("%s_%s_%s" , tt .input , sourceTypeStr , tt .description ), func (t * testing.T ) {
292
+ result := normalizeVersion (tt .input , tt .sourceType )
273
293
if result != tt .expected {
274
294
t .Errorf ("Expected %s but got %s" , tt .expected , result )
275
295
}
0 commit comments