...

Source file src/github.com/linkerd/linkerd2/pkg/version/version_test.go

Documentation: github.com/linkerd/linkerd2/pkg/version

     1  package version
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"testing"
     7  )
     8  
     9  func TestMatch(t *testing.T) {
    10  	testCases := []struct {
    11  		name     string
    12  		expected string
    13  		actual   string
    14  		err      error
    15  	}{
    16  		{
    17  			name:     "up-to-date",
    18  			expected: "dev-0.1.2",
    19  			actual:   "dev-0.1.2",
    20  		},
    21  		{
    22  			name:     "up-to-date with same build info",
    23  			expected: "dev-0.1.2-bar",
    24  			actual:   "dev-0.1.2-bar",
    25  		},
    26  		{
    27  			name:     "up-to-date with different build info",
    28  			expected: "dev-0.1.2-bar",
    29  			actual:   "dev-0.1.2-baz",
    30  		},
    31  		{
    32  			name:     "up-to-date with hotpatch",
    33  			expected: "dev-0.1.2-3",
    34  			actual:   "dev-0.1.2-3",
    35  		},
    36  		{
    37  			name:     "up-to-date with hotpatch and different build info",
    38  			expected: "dev-0.1.2-3-bar",
    39  			actual:   "dev-0.1.2-3-baz",
    40  		},
    41  		{
    42  			name:     "not up-to-date",
    43  			expected: "dev-0.1.2",
    44  			actual:   "dev-0.1.1",
    45  			err:      errors.New("is running version 0.1.1 but the latest dev version is 0.1.2"),
    46  		},
    47  		{
    48  			name:     "not up-to-date but with same build info",
    49  			expected: "dev-0.1.2-bar",
    50  			actual:   "dev-0.1.1-bar",
    51  			err:      errors.New("is running version 0.1.1 but the latest dev version is 0.1.2"),
    52  		},
    53  		{
    54  			name:     "not up-to-date with hotpatch",
    55  			expected: "dev-0.1.2-3",
    56  			actual:   "dev-0.1.2-2",
    57  			err:      errors.New("is running version 0.1.2-2 but the latest dev version is 0.1.2-3"),
    58  		},
    59  		{
    60  			name:     "mismatched channels",
    61  			expected: "dev-0.1.2",
    62  			actual:   "git-cb21f1bc",
    63  			err:      errors.New("mismatched channels: running git-cb21f1bc but retrieved dev-0.1.2"),
    64  		},
    65  		{
    66  			name:     "expected version malformed",
    67  			expected: "badformat",
    68  			actual:   "dev-0.1.2",
    69  			err:      errors.New("failed to parse expected version: unsupported version format: badformat"),
    70  		},
    71  		{
    72  			name:     "actual version malformed",
    73  			expected: "dev-0.1.2",
    74  			actual:   "badformat",
    75  			err:      errors.New("failed to parse actual version: unsupported version format: badformat"),
    76  		},
    77  	}
    78  
    79  	for _, tc := range testCases {
    80  		tc := tc // pin
    81  		t.Run(fmt.Sprintf(tc.name), func(t *testing.T) {
    82  			err := match(tc.expected, tc.actual)
    83  			if (err == nil && tc.err != nil) ||
    84  				(err != nil && tc.err == nil) ||
    85  				((err != nil && tc.err != nil) && (err.Error() != tc.err.Error())) {
    86  				t.Fatalf("Expected \"%s\", got \"%s\"", tc.err, err)
    87  			}
    88  		})
    89  	}
    90  }
    91  

View as plain text