Wait for file playback workers before restart

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-09 18:23:19 -04:00
committed by Brandon McGinty
parent f629ce0359
commit 7ebe764d82
3 changed files with 44 additions and 13 deletions
+24
View File
@@ -0,0 +1,24 @@
package fileplayback
import (
"testing"
"time"
)
// Regression: Stop returned before the previous ffmpeg worker exited, allowing
// a subsequent PlayFile to replace shared state while old audio was still sent.
func TestStopWaitsForPlaybackWorker(t *testing.T) {
p := &Player{playing: true, stopChan: make(chan struct{})}
p.wg.Add(1)
done := make(chan error, 1)
go func() { done <- p.Stop() }()
select {
case <-done:
t.Fatal("Stop returned before playback worker ended")
case <-time.After(20 * time.Millisecond):
}
p.wg.Done()
if err := <-done; err != nil {
t.Fatal(err)
}
}