Detach tone-test savers on reconnect
This commit is contained in:
committed by
Brandon McGinty
parent
b23afebdb3
commit
bad4e8172a
@@ -24,3 +24,27 @@ func TestNewAudioFileSaverReportsUnavailableOutputPath(t *testing.T) {
|
||||
t.Fatalf("got saver=%v err=%v", saver, err)
|
||||
}
|
||||
}
|
||||
|
||||
type testDetacher struct{ detached bool }
|
||||
|
||||
func (d *testDetacher) Detach() { d.detached = true }
|
||||
|
||||
// Regression: reconnecting tone-test mode kept prior savers attached to the
|
||||
// shared audio listener list, causing callbacks to write to closed files.
|
||||
func TestCleanupToneTestAudioDetachesSaver(t *testing.T) {
|
||||
saver, err := NewAudioFileSaver(filepath.Join(t.TempDir(), "tone.pcm"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
detacher := &testDetacher{}
|
||||
b := &Barnard{toneTestSaver: saver, toneTestSaverDetach: detacher}
|
||||
|
||||
b.cleanupToneTestAudio()
|
||||
if !detacher.detached {
|
||||
t.Fatal("tone saver listener was not detached")
|
||||
}
|
||||
if b.toneTestSaver != nil || b.toneTestSaverDetach != nil {
|
||||
t.Fatal("tone saver cleanup retained connection state")
|
||||
}
|
||||
b.cleanupToneTestAudio()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user