Detach tone-test savers on reconnect

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-09 23:12:56 -04:00
committed by Brandon McGinty
parent b23afebdb3
commit bad4e8172a
4 changed files with 66 additions and 15 deletions
+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()
}