fix(builder/cask): ensure release info helpers return correct asset

This commit is contained in:
2023-11-19 14:12:58 +00:00
parent ea0d69d646
commit af0b2b83ab
2 changed files with 82 additions and 1 deletions

View File

@@ -28,10 +28,11 @@ func (s *ReleaseInfo) Asset(needles ...string) *ReleaseAsset {
return assets[i].Filename < assets[j].Filename
})
assetsLoop:
for _, a := range assets {
for _, needle := range needles {
if !strings.Contains(a.Filename, needle) {
continue
continue assetsLoop
}
}

View File

@@ -0,0 +1,80 @@
package cask
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAsset(t *testing.T) {
// Define test cases
tests := []struct {
name string
release ReleaseInfo
needles []string
want *ReleaseAsset
}{
{
name: "single needle, exact match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"asset1"},
want: &ReleaseAsset{Filename: "asset1.zip"},
},
{
name: "multiple needles, all",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"zip", "asset1"},
want: &ReleaseAsset{Filename: "asset1.zip"},
},
{
name: "multiple needles, one match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"rar", "asset2"},
want: nil,
},
{
name: "multiple needles, no match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"rar", "asset3"},
want: nil,
},
{
name: "no needles",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: nil,
want: &ReleaseAsset{Filename: "asset1.zip"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.release.Asset(tt.needles...)
assert.Equal(t, tt.want, got)
})
}
}