test(backend): add tests for SERVER_BINARY, SERVER_PARAMS, STEAMCMD_PATH env vars

- TestStartWithServerBinaryEnv: custom binary name via env
- TestStartWithServerParamsEnv: overridden params via env
- TestServerParamsEnvOverridesSettings: env takes precedence over settings
- TestSteamCmdManager_SteampathEnv: custom steamcmd path via env
This commit is contained in:
MrFastwind
2026-07-23 20:39:24 +02:00
parent 03c3d7bae2
commit 234116e6a1
2 changed files with 116 additions and 0 deletions
@@ -512,3 +512,101 @@ func TestStartWithEmptyCommand(t *testing.T) {
pm.Stop() pm.Stop()
} }
} }
func TestStartWithServerBinaryEnv(t *testing.T) {
dir := t.TempDir()
serverfileDir := filepath.Join(dir, "server")
os.MkdirAll(serverfileDir, 0755)
stubSrc, _ := os.ReadFile("testdata/arma3server_x64")
customBin := "my-custom-server"
os.WriteFile(filepath.Join(serverfileDir, customBin), stubSrc, 0755)
sm := NewSettingsManager(dir)
mm := NewModlistManager(filepath.Join(dir, "modlists"))
cm := NewConfigManager(filepath.Join(dir, "cfg"))
streamer := NewLogStreamer()
pm := NewProcessManager(serverfileDir, filepath.Join(dir, "mods"), filepath.Join(dir, "cfg"), filepath.Join(dir, "profiles"), sm, mm, cm, streamer)
s, _ := sm.Load()
s.ServerParameters = "-server -world=empty"
sm.Save(s)
t.Setenv("SERVER_BINARY", customBin)
if err := pm.Start(); err != nil {
t.Fatalf("Start() with SERVER_BINARY env error = %v", err)
}
if !pm.IsRunning() {
t.Fatal("IsRunning() should be true")
}
pm.Stop()
time.Sleep(100 * time.Millisecond)
}
func TestStartWithServerParamsEnv(t *testing.T) {
dir := t.TempDir()
serverfileDir := filepath.Join(dir, "server")
os.MkdirAll(serverfileDir, 0755)
stubSrc, _ := os.ReadFile("testdata/arma3server_x64")
os.WriteFile(filepath.Join(serverfileDir, "arma3server_x64"), stubSrc, 0755)
sm := NewSettingsManager(dir)
mm := NewModlistManager(filepath.Join(dir, "modlists"))
cm := NewConfigManager(filepath.Join(dir, "cfg"))
streamer := NewLogStreamer()
pm := NewProcessManager(serverfileDir, filepath.Join(dir, "mods"), filepath.Join(dir, "cfg"), filepath.Join(dir, "profiles"), sm, mm, cm, streamer)
s, _ := sm.Load()
s.ServerParameters = "-server -world=empty"
sm.Save(s)
t.Setenv("SERVER_PARAMS", "%command% -custom-param")
if err := pm.Start(); err != nil {
t.Fatalf("Start() with SERVER_PARAMS env error = %v", err)
}
if !pm.IsRunning() {
t.Fatal("IsRunning() should be true")
}
pm.Stop()
time.Sleep(100 * time.Millisecond)
}
func TestServerParamsEnvOverridesSettings(t *testing.T) {
dir := t.TempDir()
serverfileDir := filepath.Join(dir, "server")
os.MkdirAll(serverfileDir, 0755)
stubSrc, _ := os.ReadFile("testdata/arma3server_x64")
os.WriteFile(filepath.Join(serverfileDir, "arma3server_x64"), stubSrc, 0755)
sm := NewSettingsManager(dir)
mm := NewModlistManager(filepath.Join(dir, "modlists"))
cm := NewConfigManager(filepath.Join(dir, "cfg"))
streamer := NewLogStreamer()
pm := NewProcessManager(serverfileDir, filepath.Join(dir, "mods"), filepath.Join(dir, "cfg"), filepath.Join(dir, "profiles"), sm, mm, cm, streamer)
s, _ := sm.Load()
s.ServerParameters = "-server -world=empty"
sm.Save(s)
// Without SERVER_PARAMS override, Start() would use settings value (no %command%).
// With override, it uses %command% substitution.
t.Setenv("SERVER_PARAMS", "%command% -test-override")
if err := pm.Start(); err != nil {
t.Fatalf("Start() error = %v (SERVER_PARAMS override not applied?)", err)
}
pm.Stop()
time.Sleep(100 * time.Millisecond)
}
@@ -167,3 +167,21 @@ func TestNewSteamCmdManager(t *testing.T) {
t.Error("new manager should not be running") t.Error("new manager should not be running")
} }
} }
func TestSteamCmdManager_SteampathEnv(t *testing.T) {
dir := t.TempDir()
streamer := NewLogStreamer()
sm := NewSteamCmdManager(dir, streamer)
// Point STEAMCMD_PATH at the stub so it doesn't need the real binary
stubPath, _ := filepath.Abs("testdata/steamcmd")
t.Setenv("STEAMCMD_PATH", stubPath)
err := sm.DownloadMod("123456")
if err != nil {
t.Fatalf("DownloadMod with STEAMCMD_PATH env error = %v", err)
}
waitForNotRunning(t, sm, 30*time.Second)
}