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 }