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