91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package updater
|
|
|
|
import (
|
|
"github.com/samber/lo"
|
|
"os"
|
|
"seanime/internal/util"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestUpdater_DownloadLatestRelease(t *testing.T) {
|
|
|
|
updater := New("0.2.0", util.NewLogger(), nil)
|
|
|
|
//tempDir := "E:\\SEANIME-REPO-TEST"
|
|
tempDir := t.TempDir()
|
|
|
|
// Get the latest release
|
|
release, err := updater.GetLatestRelease()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Find the asset (zip file)
|
|
asset, ok := lo.Find(release.Assets, func(asset ReleaseAsset) bool {
|
|
return strings.HasSuffix(asset.BrowserDownloadUrl, "Windows_x86_64.zip")
|
|
})
|
|
if !ok {
|
|
t.Fatal("could not find release asset")
|
|
}
|
|
|
|
// Download the asset
|
|
folderPath, err := updater.DownloadLatestRelease(asset.BrowserDownloadUrl, tempDir)
|
|
if err != nil {
|
|
t.Log("Downloaded to:", folderPath)
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log("Downloaded to:", folderPath)
|
|
|
|
// Check if the folder is not empty
|
|
entries, err := os.ReadDir(folderPath)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if len(entries) == 0 {
|
|
t.Fatal("folder is empty")
|
|
}
|
|
|
|
for _, entry := range entries {
|
|
t.Log(entry.Name())
|
|
}
|
|
|
|
// Delete the folder
|
|
if err := os.RemoveAll(folderPath); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Find the asset (.tar.gz file)
|
|
asset2, ok := lo.Find(release.Assets, func(asset ReleaseAsset) bool {
|
|
return strings.HasSuffix(asset.BrowserDownloadUrl, "MacOS_arm64.tar.gz")
|
|
})
|
|
if !ok {
|
|
t.Fatal("could not find release asset")
|
|
}
|
|
|
|
// Download the asset
|
|
folderPath2, err := updater.DownloadLatestRelease(asset2.BrowserDownloadUrl, tempDir)
|
|
if err != nil {
|
|
t.Log("Downloaded to:", folderPath2)
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log("Downloaded to:", folderPath2)
|
|
|
|
// Check if the folder is not empty
|
|
entries2, err := os.ReadDir(folderPath2)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if len(entries2) == 0 {
|
|
t.Fatal("folder is empty")
|
|
}
|
|
|
|
for _, entry := range entries2 {
|
|
t.Log(entry.Name())
|
|
}
|
|
}
|