25 lines
593 B
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)
|
|
}
|
|
}
|