Files
barnard/fileplayback/player_regression_test.go

25 lines
593 B
Go

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