gitee.com/mirrors_opencollective/goreleaser@v0.45.0/internal/artifact/artifact_test.go (about)

     1  package artifact
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"golang.org/x/sync/errgroup"
     9  )
    10  
    11  // ensure Type implements the stringer interface...
    12  var _ fmt.Stringer = Type(0)
    13  
    14  func TestAdd(t *testing.T) {
    15  	var g errgroup.Group
    16  	var artifacts = New()
    17  	for _, a := range []Artifact{
    18  		{
    19  			Name: "foo",
    20  			Type: UploadableArchive,
    21  		},
    22  		{
    23  			Name: "bar",
    24  			Type: Binary,
    25  		},
    26  		{
    27  			Name: "foobar",
    28  			Type: DockerImage,
    29  		},
    30  		{
    31  			Name: "check",
    32  			Type: Checksum,
    33  		},
    34  	} {
    35  		a := a
    36  		g.Go(func() error {
    37  			artifacts.Add(a)
    38  			return nil
    39  		})
    40  	}
    41  	assert.NoError(t, g.Wait())
    42  	assert.Len(t, artifacts.List(), 4)
    43  }
    44  
    45  func TestFilter(t *testing.T) {
    46  	var data = []Artifact{
    47  		{
    48  			Name:   "foo",
    49  			Goos:   "linux",
    50  			Goarch: "arm",
    51  		},
    52  		{
    53  			Name:   "bar",
    54  			Goarch: "amd64",
    55  		},
    56  		{
    57  			Name:  "foobar",
    58  			Goarm: "6",
    59  		},
    60  		{
    61  			Name: "check",
    62  			Type: Checksum,
    63  		},
    64  		{
    65  			Name: "checkzumm",
    66  			Type: Checksum,
    67  		},
    68  	}
    69  	var artifacts = New()
    70  	for _, a := range data {
    71  		artifacts.Add(a)
    72  	}
    73  
    74  	assert.Len(t, artifacts.Filter(ByGoos("linux")).items, 1)
    75  	assert.Len(t, artifacts.Filter(ByGoos("darwin")).items, 0)
    76  
    77  	assert.Len(t, artifacts.Filter(ByGoarch("amd64")).items, 1)
    78  	assert.Len(t, artifacts.Filter(ByGoarch("386")).items, 0)
    79  
    80  	assert.Len(t, artifacts.Filter(ByGoarm("6")).items, 1)
    81  	assert.Len(t, artifacts.Filter(ByGoarm("7")).items, 0)
    82  
    83  	assert.Len(t, artifacts.Filter(ByType(Checksum)).items, 2)
    84  	assert.Len(t, artifacts.Filter(ByType(Binary)).items, 0)
    85  
    86  	assert.Len(t, artifacts.Filter(
    87  		And(
    88  			ByType(Checksum),
    89  			func(a Artifact) bool {
    90  				return a.Name == "checkzumm"
    91  			},
    92  		),
    93  	).List(), 1)
    94  
    95  	assert.Len(t, artifacts.Filter(
    96  		Or(
    97  			ByType(Checksum),
    98  			And(
    99  				ByGoos("linux"),
   100  				ByGoarm("arm"),
   101  			),
   102  		),
   103  	).List(), 2)
   104  }
   105  
   106  func TestGroupByPlatform(t *testing.T) {
   107  	var data = []Artifact{
   108  		{
   109  			Name:   "foo",
   110  			Goos:   "linux",
   111  			Goarch: "amd64",
   112  		},
   113  		{
   114  			Name:   "bar",
   115  			Goos:   "linux",
   116  			Goarch: "amd64",
   117  		},
   118  		{
   119  			Name:   "foobar",
   120  			Goos:   "linux",
   121  			Goarch: "arm",
   122  			Goarm:  "6",
   123  		},
   124  		{
   125  			Name: "check",
   126  			Type: Checksum,
   127  		},
   128  	}
   129  	var artifacts = New()
   130  	for _, a := range data {
   131  		artifacts.Add(a)
   132  	}
   133  
   134  	var groups = artifacts.GroupByPlatform()
   135  	assert.Len(t, groups["linuxamd64"], 2)
   136  	assert.Len(t, groups["linuxarm6"], 1)
   137  }