mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 02:36:39 +00:00
fix(builder/cask): ensure release info helpers return correct asset
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
80
pkg/cask/release_info_test.go
Normal file
80
pkg/cask/release_info_test.go
Normal 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)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user