@@ -2,6 +2,7 @@ package registry
22
33import (
44"encoding/json"
5+ "github.com/blang/semver"
56"testing"
67
78"github.com/stretchr/testify/assert"
@@ -312,3 +313,73 @@ func TestBundleGraphLoader(t *testing.T) {
312313})
313314}
314315}
316+
317+ func TestIsSkipPatchCandidate (t * testing.T ) {
318+ tests := []struct {
319+ name string
320+ added string
321+ compare string
322+ expected bool
323+ commutative bool
324+ }{
325+ {
326+ name : "equal versions" ,
327+ added : "0.0.0" ,
328+ compare : "0.0.0" ,
329+ expected : false ,
330+ commutative : true ,
331+ },
332+ {
333+ name : "do not accept different major/minor version" ,
334+ added : "0.1.0" ,
335+ compare : "0.2.0" ,
336+ expected : false ,
337+ commutative : true ,
338+ },
339+ {
340+ name : "accept larger patch version" ,
341+ added : "0.0.1" ,
342+ compare : "0.0.0" ,
343+ expected : true ,
344+ },
345+ {
346+ name : "accept patch version without pre-release" ,
347+ added : "0.0.0" ,
348+ compare : "0.0.0-1" ,
349+ expected : true ,
350+ },
351+ {
352+ name : "accept longer pre-release with same prefix" ,
353+ added : "0.0.1-1.2" ,
354+ compare : "0.0.1-1" ,
355+ expected : true ,
356+ },
357+ {
358+ name : "accept numerically larger pre-release" ,
359+ added : "0.0.1-11" ,
360+ compare : "0.0.1-2" ,
361+ expected : true ,
362+ },
363+ {
364+ name : "accept lexicographically larger pre-release" ,
365+ added : "0.0.1-beta.1" ,
366+ compare : "0.0.1-alpha.1" ,
367+ expected : true ,
368+ },
369+ }
370+ for _ , tt := range tests {
371+ t .Run (tt .name , func (t * testing.T ) {
372+ added , err := semver .Make (tt .added )
373+ require .NoError (t , err )
374+ compare , err := semver .Make (tt .compare )
375+ require .NoError (t , err )
376+ actual := isSkipPatchCandidate (added , compare )
377+ assert .Equal (t , tt .expected , actual )
378+
379+ if ! tt .commutative {
380+ reverse := isSkipPatchCandidate (compare , added )
381+ assert .Equal (t , ! tt .expected , reverse )
382+ }
383+ })
384+ }
385+ }
0 commit comments