Detach tone-test savers on reconnect

This commit is contained in:
Brandon McGinty (chatgpt) authored and Brandon McGinty committed 2026-08-09 23:12:56 -04:00
1 parent b23afebdb3
commit bad4e8172a
4 files changed
+66 -15

No files matched your search

+24
View File
@@ -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()
}