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()
|
||||
}
|
||||
}
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
|
||||
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