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
@@ -24,21 +24,23 @@ type Sink interface {
|
||||
}
|
||||
|
||||
// NewSink liefert den Sink zum konfigurierten Namen ("oto" oder "null").
|
||||
// Unbekannte Namen sind ein klarer Fehler.
|
||||
func NewSink(name string) (Sink, error) {
|
||||
// log ist ein optionaler Log-Output — die CLI übergibt ihr stderr, über den
|
||||
// der null-Sink seine Verwurf-Zeile schreibt (nil = still verwerfen); der
|
||||
// oto-Sink braucht kein Log. Unbekannte Namen sind ein klarer Fehler.
|
||||
func NewSink(name string, log io.Writer) (Sink, error) {
|
||||
switch name {
|
||||
case NameOto:
|
||||
return OtoSink{}, nil
|
||||
case NameNull:
|
||||
return NullSink{}, nil
|
||||
return NullSink{W: log}, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("unbekannter audio sink %q (erlaubt: %q, %q)", name, NameOto, NameNull)
|
||||
}
|
||||
}
|
||||
|
||||
// NullSink verwirft jede Ansage ohne Ton — für CI, Server und Tests. Wurde
|
||||
// ein W gesetzt, loggt Play eine Zeile darüber (der CLI-Pfad hängt stderr
|
||||
// an, damit „läuft ohne Ton durch" auch sichtbar bleibt).
|
||||
// ein W gesetzt (NewSink reicht dafür den Log-Output der CLI durch), loggt
|
||||
// Play eine Zeile darüber, damit „läuft ohne Ton durch" sichtbar bleibt.
|
||||
type NullSink struct {
|
||||
W io.Writer // optionaler Log-Output; nil = still verwerfen
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user