fix(audio): NullSink-Verwurf-Zeile im CLI-Pfad sichtbar machen
NewSink bekommt einen optionalen Log-Writer (die CLI übergibt stderr);
zuvor verwarf der null-Sink bei erfolgreicher Synthese stumm — die
sichtbare Zeile kam nur aus dem ErrNoByteOutput-Zweig. Sink-Interface
unverändert; Aufrufstellen ab Task 03 müssen den Writer übergeben.
TestSayArgumentMitNullSink beweist die Zeile jetzt extern auf dem
CLI-Pfad, TestNewSink deckt das Factory-Wiring ab; Live-Beweis mit
espeak-ng dokumentiert ("audio: N Bytes verworfen (null sink)", Exit 0).
Dazu (Minor): "was" aus englishWords entfernt — widersprach dem
Mehrdeutigkeits-Kommentar und dem Report; neuer TestFall
"Was macht er?" → de.
This commit is contained in:
1 parent
8306c6b384
commit
ae9f3b680e
6 files changed
+31
-10
No files matched your search
+1
-1
@@ -106,7 +106,7 @@ func runSay(args []string, opts *sayOptions, stdin io.Reader, stderr io.Writer)
|
||||
return exitFailure
|
||||
}
|
||||
|
||||
sink, err := audio.NewSink(cfg.Audio.Sink)
|
||||
sink, err := audio.NewSink(cfg.Audio.Sink, stderr)
|
||||
if err != nil {
|
||||
fmt.Fprintf(stderr, "talk: %v\n", err)
|
||||
return exitFailure
|
||||
|
||||
@@ -52,7 +52,9 @@ cat "`+wav+`"`)
|
||||
|
||||
// TestSayArgumentMitNullSink: `talk "Hallo Welt"` läuft mit
|
||||
// TALK_AUDIO_SINK=null tonlos durch (Abnahmekriterium) — Synthese läuft
|
||||
// (fake espeak wurde gerufen), die Wiedergabe wird verworfen.
|
||||
// (fake espeak wurde gerufen), und die Wiedergabe wird mit sichtbarer
|
||||
// Verwurf-Zeile auf stderr verworfen (extern beobachtbares Verhalten des
|
||||
// null-Sinks auf dem CLI-Pfad).
|
||||
func TestSayArgumentMitNullSink(t *testing.T) {
|
||||
seen := withFakeEspeak(t)
|
||||
setGetenv(t, map[string]string{"TALK_AUDIO_SINK": "null"})
|
||||
@@ -65,6 +67,9 @@ func TestSayArgumentMitNullSink(t *testing.T) {
|
||||
if _, err := os.Stat(seen); err != nil {
|
||||
t.Errorf("Synthese lief nicht (fake espeak nicht gerufen): %v", err)
|
||||
}
|
||||
if !strings.Contains(errBuf.String(), "verworfen (null sink)") {
|
||||
t.Errorf("stderr = %q, will Verwurf-Zeile des null-Sinks (Synthese war erfolgreich)", errBuf.String())
|
||||
}
|
||||
}
|
||||
|
||||
// TestSaySubcommandWieDefault: `talk say "Text"` verhält sich wie der
|
||||
|
||||
Reference in new issue
Block a user