go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/core/resources/versions/apk/version_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package apk_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"go.mondoo.com/cnquery/providers/core/resources/versions/apk"
    11  	"go.mondoo.com/cnquery/providers/core/resources/versions/generic"
    12  )
    13  
    14  const (
    15  	LESS    = -1
    16  	EQUAL   = 0
    17  	GREATER = 1
    18  )
    19  
    20  func TestParseAndCompare(t *testing.T) {
    21  	cases := []struct {
    22  		v1       string
    23  		expected int
    24  		v2       string
    25  	}{
    26  		// Alpine Linux corner cases.
    27  		{"1.2.2-r7", GREATER, "1.2.2_pre2-r0"},
    28  		// Test version with epoch
    29  		{generic.VersionWithoutEpoch("1632431095:1.2.2-r7"), GREATER, "1.2.2_pre2-r0"},
    30  	}
    31  
    32  	var (
    33  		p   apk.Parser
    34  		cmp int
    35  		err error
    36  	)
    37  	for _, c := range cases {
    38  		cmp, err = p.Compare(c.v1, c.v2)
    39  		assert.Nil(t, err)
    40  		assert.Equal(t, c.expected, cmp, "%s vs. %s, = %d, expected %d", c.v1, c.v2, cmp, c.expected)
    41  
    42  		cmp, err = p.Compare(c.v2, c.v1)
    43  		assert.Nil(t, err)
    44  		assert.Equal(t, -c.expected, cmp, "%s vs. %s, = %d, expected %d", c.v2, c.v1, cmp, -c.expected)
    45  	}
    46  }