Sample env carries a version marker; install appends settings missing since the writing version
This commit is contained in:
@@ -5,20 +5,28 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
const sampleLogPath = `C:\ProgramData\gpu-turnstile\gpu-turnstile.log`
|
||||
|
||||
var allSettingNames = []string{
|
||||
"LISTEN_OLLAMA", "LISTEN_COMFY", "OLLAMA_URL", "COMFY_URL",
|
||||
"WARM_MODEL", "UNLOAD_TIMEOUT", "JOB_TIMEOUT", "LLM_WAIT_TIMEOUT",
|
||||
"LLM_BUSY_MODE", "LLM_BUSY_STATUS", "BUSY_RETRY_AFTER",
|
||||
"LOGLEVEL", "LOG_FORMAT", "LOG_FILE",
|
||||
"UNLOAD_POLL_INTERVAL", "HISTORY_POLL_INTERVAL", "PROBE_TIMEOUT",
|
||||
"FREE_TIMEOUT", "WARM_TIMEOUT", "SHUTDOWN_TIMEOUT",
|
||||
"BACKOFF_INITIAL", "BACKOFF_MAX", "PROMPT_CAPTURE_LIMIT",
|
||||
"AUTO_UPDATE", "UPDATE_INTERVAL", "UPDATE_REPO", "UPDATE_ASSET",
|
||||
}
|
||||
|
||||
func TestSampleEnv(t *testing.T) {
|
||||
sample := SampleEnv(`C:\ProgramData\gpu-turnstile\gpu-turnstile.log`)
|
||||
sample := SampleEnv("v0.1.7", sampleLogPath)
|
||||
|
||||
if !strings.HasPrefix(sample, "# gpu-turnstile version: v0.1.7\n") {
|
||||
t.Errorf("first line does not carry the version marker: %q", strings.SplitN(sample, "\n", 2)[0])
|
||||
}
|
||||
|
||||
// Every setting known to Load must appear.
|
||||
for _, name := range []string{
|
||||
"LISTEN_OLLAMA", "LISTEN_COMFY", "OLLAMA_URL", "COMFY_URL",
|
||||
"WARM_MODEL", "UNLOAD_TIMEOUT", "JOB_TIMEOUT", "LLM_WAIT_TIMEOUT",
|
||||
"LLM_BUSY_MODE", "LLM_BUSY_STATUS", "BUSY_RETRY_AFTER",
|
||||
"LOGLEVEL", "LOG_FORMAT", "LOG_FILE",
|
||||
"UNLOAD_POLL_INTERVAL", "HISTORY_POLL_INTERVAL", "PROBE_TIMEOUT",
|
||||
"FREE_TIMEOUT", "WARM_TIMEOUT", "SHUTDOWN_TIMEOUT",
|
||||
"BACKOFF_INITIAL", "BACKOFF_MAX", "PROMPT_CAPTURE_LIMIT",
|
||||
"AUTO_UPDATE", "UPDATE_INTERVAL", "UPDATE_REPO", "UPDATE_ASSET",
|
||||
} {
|
||||
for _, name := range allSettingNames {
|
||||
if !strings.Contains(sample, name+"=") {
|
||||
t.Errorf("sample is missing %s", name)
|
||||
}
|
||||
@@ -29,12 +37,12 @@ func TestSampleEnv(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("sample does not parse: %v", err)
|
||||
}
|
||||
if len(values) != 1 || values["LOG_FILE"] != `C:\ProgramData\gpu-turnstile\gpu-turnstile.log` {
|
||||
if len(values) != 1 || values["LOG_FILE"] != sampleLogPath {
|
||||
t.Fatalf("active values = %v, want only LOG_FILE", values)
|
||||
}
|
||||
|
||||
// Without a log path everything is commented out.
|
||||
values, err = ParseEnvFile(strings.NewReader(SampleEnv("")))
|
||||
values, err = ParseEnvFile(strings.NewReader(SampleEnv("v0.1.7", "")))
|
||||
if err != nil {
|
||||
t.Fatalf("sample without log path does not parse: %v", err)
|
||||
}
|
||||
@@ -42,3 +50,68 @@ func TestSampleEnv(t *testing.T) {
|
||||
t.Fatalf("active values = %v, want none", values)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncSample(t *testing.T) {
|
||||
old := SampleEnv("v0.1.6", sampleLogPath)
|
||||
// Simulate a setting that did not exist yet when the file was written.
|
||||
old = strings.Replace(old, "#UPDATE_ASSET=gpu-turnstile.exe\n", "", 1)
|
||||
|
||||
out, changed := SyncSample(old, "v0.1.7", sampleLogPath)
|
||||
if !changed {
|
||||
t.Fatal("older installer file was not upgraded")
|
||||
}
|
||||
if !strings.HasPrefix(out, "# gpu-turnstile version: v0.1.7\n") {
|
||||
t.Error("marker was not updated to the new version")
|
||||
}
|
||||
if !strings.Contains(out, "#UPDATE_ASSET=gpu-turnstile.exe") {
|
||||
t.Error("missing setting was not appended")
|
||||
}
|
||||
if !strings.Contains(out, "LOG_FILE="+sampleLogPath) {
|
||||
t.Error("existing active LOG_FILE was lost")
|
||||
}
|
||||
if !strings.Contains(out, "Added by gpu-turnstile v0.1.7") {
|
||||
t.Error("appended section is not attributed")
|
||||
}
|
||||
if _, err := ParseEnvFile(strings.NewReader(out)); err != nil {
|
||||
t.Fatalf("upgraded file does not parse: %v", err)
|
||||
}
|
||||
|
||||
// A file written by the same or a newer version is left alone.
|
||||
if _, changed := SyncSample(SampleEnv("v0.1.7", sampleLogPath), "v0.1.7", sampleLogPath); changed {
|
||||
t.Error("same-version file was modified")
|
||||
}
|
||||
if _, changed := SyncSample(SampleEnv("v0.2.0", sampleLogPath), "v0.1.7", sampleLogPath); changed {
|
||||
t.Error("newer-version file was modified")
|
||||
}
|
||||
|
||||
// Hand-written configs (no marker) are never touched.
|
||||
user := "OLLAMA_URL=http://host:11434\n"
|
||||
if out, changed := SyncSample(user, "v0.1.7", sampleLogPath); changed || out != user {
|
||||
t.Error("hand-written config was modified")
|
||||
}
|
||||
|
||||
// A dev build never upgrades.
|
||||
if _, changed := SyncSample(old, "dev", sampleLogPath); changed {
|
||||
t.Error("dev build modified the file")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompareVersions(t *testing.T) {
|
||||
cases := []struct {
|
||||
a, b string
|
||||
want int
|
||||
}{
|
||||
{"v0.1.6", "v0.1.7", -1},
|
||||
{"v0.1.7", "v0.1.7", 0},
|
||||
{"v1.0.0", "v0.9.9", 1},
|
||||
{"0.1.7", "v0.1.6", 1},
|
||||
{"dev", "v0.1.7", -1},
|
||||
{"v0.1.7", "dev", 1},
|
||||
{"dev", "dev", 0},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := compareVersions(c.a, c.b); got != c.want {
|
||||
t.Errorf("compareVersions(%q, %q) = %d, want %d", c.a, c.b, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user