mirror of
https://github.com/sartoopjj/thefeed.git
synced 2026-05-18 06:44:34 +03:00
80 lines
2.1 KiB
Go
80 lines
2.1 KiB
Go
package update
|
|
|
|
import (
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/sartoopjj/thefeed/internal/version"
|
|
)
|
|
|
|
func TestIsNewer(t *testing.T) {
|
|
cases := []struct {
|
|
latest, current string
|
|
want bool
|
|
}{
|
|
{"v0.13.5", "v0.13.4", true},
|
|
{"v0.13.5", "0.13.4", true},
|
|
{"0.13.5", "v0.13.4", true},
|
|
{"v0.13.5", "v0.13.5", false},
|
|
{"v0.13.4", "v0.13.5", false},
|
|
{"v1.0.0", "v0.99.99", true},
|
|
{"v0.13.5", "dev", false},
|
|
{"", "v0.13.5", false},
|
|
{"v0.13.5", "", false},
|
|
{"v0.13.5-rc1", "v0.13.4", true},
|
|
{"v0.13.5", "v0.13.5-rc1", false}, // numeric parts equal → not newer
|
|
}
|
|
for _, c := range cases {
|
|
if got := IsNewer(c.latest, c.current); got != c.want {
|
|
t.Errorf("IsNewer(%q, %q) = %v, want %v", c.latest, c.current, got, c.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAssetURLFromTemplate(t *testing.T) {
|
|
old := version.AssetTemplate
|
|
defer func() { version.AssetTemplate = old }()
|
|
|
|
version.AssetTemplate = "thefeed-client-{V}-linux-amd64"
|
|
url := AssetURL("v0.13.5")
|
|
want := BaseURL + "/thefeed-client-v0.13.5-linux-amd64"
|
|
if url != want {
|
|
t.Errorf("got %q, want %q", url, want)
|
|
}
|
|
|
|
version.AssetTemplate = "thefeed-client-{V}-windows-amd64.exe"
|
|
url = AssetURL("v0.14.0")
|
|
want = BaseURL + "/thefeed-client-v0.14.0-windows-amd64.exe"
|
|
if url != want {
|
|
t.Errorf("got %q, want %q", url, want)
|
|
}
|
|
|
|
// Unversioned template (Android client binary) — {V} not present,
|
|
// substitution should be a no-op.
|
|
version.AssetTemplate = "thefeed-client-android-arm64"
|
|
url = AssetURL("v0.13.5")
|
|
want = BaseURL + "/thefeed-client-android-arm64"
|
|
if url != want {
|
|
t.Errorf("got %q, want %q", url, want)
|
|
}
|
|
}
|
|
|
|
func TestAssetURLFallback(t *testing.T) {
|
|
old := version.AssetTemplate
|
|
defer func() { version.AssetTemplate = old }()
|
|
version.AssetTemplate = ""
|
|
|
|
url := AssetURL("v0.13.5")
|
|
if url == "" {
|
|
t.Fatal("expected non-empty URL even without AssetTemplate")
|
|
}
|
|
if !strings.HasPrefix(url, BaseURL+"/") {
|
|
t.Errorf("URL %q missing base prefix", url)
|
|
}
|
|
// Should at minimum mention the running OS.
|
|
if !strings.Contains(url, runtime.GOOS) && runtime.GOOS != "android" {
|
|
t.Errorf("URL %q should mention %q", url, runtime.GOOS)
|
|
}
|
|
}
|