github.com/ava-labs/avalanchego@v1.11.11/version/parser_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package version
     5  
     6  import (
     7  	"strconv"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestParse(t *testing.T) {
    14  	v, err := Parse("v1.2.3")
    15  
    16  	require.NoError(t, err)
    17  	require.NotNil(t, v)
    18  	require.Equal(t, "v1.2.3", v.String())
    19  	require.Equal(t, 1, v.Major)
    20  	require.Equal(t, 2, v.Minor)
    21  	require.Equal(t, 3, v.Patch)
    22  
    23  	tests := []struct {
    24  		version     string
    25  		expectedErr error
    26  	}{
    27  		{
    28  			version:     "",
    29  			expectedErr: errMissingVersionPrefix,
    30  		},
    31  		{
    32  			version:     "1.2.3",
    33  			expectedErr: errMissingVersionPrefix,
    34  		},
    35  		{
    36  			version:     "z1.2.3",
    37  			expectedErr: errMissingVersionPrefix,
    38  		},
    39  		{
    40  			version:     "v1.2",
    41  			expectedErr: errMissingVersions,
    42  		},
    43  		{
    44  			version:     "vz.2.3",
    45  			expectedErr: strconv.ErrSyntax,
    46  		},
    47  		{
    48  			version:     "v1.z.3",
    49  			expectedErr: strconv.ErrSyntax,
    50  		},
    51  		{
    52  			version:     "v1.2.z",
    53  			expectedErr: strconv.ErrSyntax,
    54  		},
    55  		{
    56  			version:     "v1.2.3.4",
    57  			expectedErr: strconv.ErrSyntax,
    58  		},
    59  	}
    60  	for _, test := range tests {
    61  		t.Run(test.version, func(t *testing.T) {
    62  			_, err := Parse(test.version)
    63  			require.ErrorIs(t, err, test.expectedErr)
    64  		})
    65  	}
    66  }