Files
iris-context/tests/root/update_test.go
T

68 lines
1.7 KiB
Go

package tests
import (
"os"
"path/filepath"
"testing"
"github.com/versenilvis/iris/root"
)
func TestIsNewer(t *testing.T) {
tests := []struct {
current string
latest string
want bool
}{
{"v1.0.0", "v1.0.1", true},
{"v1.0.1", "v1.0.0", false},
{"v1.0.0", "v1.0.0", false},
{"v1.2.3", "v1.2.4", true},
{"v1.2.0", "v1.1.9", false},
{"dev", "v1.0.0", false}, // dev never updates
{"v1.0.0", "dev", false},
{"", "v1.0.0", false},
{"v1.0.0", "v1.1.0-nightly.8cb1f47", false}, // nightly never triggers update
{"v1.1.0-nightly.abc", "v1.2.0", true}, // but if you are on nightly, you can update to stable
}
for _, tt := range tests {
if got := root.IsNewer(tt.current, tt.latest); got != tt.want {
t.Errorf("IsNewer(%q, %q) = %v; want %v", tt.current, tt.latest, got, tt.want)
}
}
}
func TestUpdateState(t *testing.T) {
// Use a temporary directory for the state file
tmpDir, err := os.MkdirTemp("", "iris-test-*")
if err != nil {
t.Fatal(err)
}
defer func() { _ = os.RemoveAll(tmpDir) }()
// Override home dir for testing
homeBackup := os.Getenv("HOME")
if err := os.Setenv("HOME", tmpDir); err != nil {
t.Fatal(err)
}
defer func() { _ = os.Setenv("HOME", homeBackup) }()
// Ensure .iris directory exists
_ = os.MkdirAll(filepath.Join(tmpDir, ".iris"), 0755)
state := root.LoadUpdateState()
state.SeenVersion = "v1.0.0"
state.LastCheck = 123456789
root.SaveUpdateState(state)
loaded := root.LoadUpdateState()
if loaded.SeenVersion != state.SeenVersion {
t.Errorf("Expected SeenVersion %q, got %q", state.SeenVersion, loaded.SeenVersion)
}
if loaded.LastCheck != state.LastCheck {
t.Errorf("Expected LastCheck %d, got %d", state.LastCheck, loaded.LastCheck)
}
}