github.com/clly/consul@v1.4.5/agent/metadata/build_test.go (about)

     1  package metadata
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hashicorp/go-version"
     7  	"github.com/hashicorp/serf/serf"
     8  	"github.com/pascaldekloe/goe/verify"
     9  )
    10  
    11  func TestBuild(t *testing.T) {
    12  	tests := []struct {
    13  		desc string
    14  		m    *serf.Member
    15  		ver  *version.Version
    16  		err  bool
    17  	}{
    18  		{
    19  			"no version",
    20  			&serf.Member{},
    21  			nil,
    22  			true,
    23  		},
    24  		{
    25  			"bad version",
    26  			&serf.Member{
    27  				Tags: map[string]string{
    28  					"build": "nope",
    29  				},
    30  			},
    31  			nil,
    32  			true,
    33  		},
    34  		{
    35  			"good version",
    36  			&serf.Member{
    37  				Tags: map[string]string{
    38  					"build": "0.8.5",
    39  				},
    40  			},
    41  			version.Must(version.NewVersion("0.8.5")),
    42  			false,
    43  		},
    44  		{
    45  			"rc version",
    46  			&serf.Member{
    47  				Tags: map[string]string{
    48  					"build": "0.9.3rc1:d62743c",
    49  				},
    50  			},
    51  			version.Must(version.NewVersion("0.9.3")),
    52  			false,
    53  		},
    54  		{
    55  			"ent version",
    56  			&serf.Member{
    57  				Tags: map[string]string{
    58  					"build": "0.9.3+ent:d62743c",
    59  				},
    60  			},
    61  			version.Must(version.NewVersion("0.9.3")),
    62  			false,
    63  		},
    64  	}
    65  	for _, tt := range tests {
    66  		t.Run(tt.desc, func(t *testing.T) {
    67  			ver, err := Build(tt.m)
    68  			gotErr := err != nil
    69  			if wantErr := tt.err; gotErr != wantErr {
    70  				t.Fatalf("got %v want %v", gotErr, wantErr)
    71  			}
    72  			verify.Values(t, "", ver, tt.ver)
    73  		})
    74  	}
    75  }