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:
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user