Ich lerne, wie man das Modul https://github.com/rogpeppe/go-internal testscript zum Testen von CLI-Programmen verwendet.
Wenn ich diese Zeile in der .txtar
-Datei verwende:
stderr /No help topic/gm
...Die tatsächliche Fehlerausgabe ist:
No help topic for 'totalfoobar'
Ich erhalte eine Fehlermeldung usage: stderr [-count=N] 'pattern'
.
Ich habe mir die Dokumentation hier angesehen und um ehrlich zu sein, ist sie schwer zu verstehen. Ich sehe keine Erklärung dafür, was -count=N
bedeutet.
Ich habe alle folgenden Variationen ausprobiert:
stderr -count=1 No help topic for 'totalfoobar' stderr No help topic for 'totalfoobar' stderr *No help topic*
Unabhängig von der Zeichenfolge schlägt die Behauptung immer noch mit dem gleichen Fehler fehl.
F: Wie kann ich für flexiblere Tests einen Teilstring der gesamten stderr-/stdout-Ausgabe erhalten?
Zitieren Sie das Muster in einfache Anführungszeichen:
// parse parses a single line as a list of space-separated arguments // subject to environment variable expansion (but not resplitting). // Single quotes around text disable splitting and expansion. // To embed a single quote, double it: 'Don”t communicate by sharing memory.' func (ts *TestScript) parse(line string) []string
Das Ergebnis wird schließlich als args
-Parameter an scriptMatch übergeben. Die Implementierung von scriptMatch zeigt, dass zusätzlich zum optionalen Flag -count
nur args
参数传递给 scriptMatch 最后。 scriptMatch 的实现表明,除了可选的 -count
标志之外,它只需要 1 参数。如果 No help topic
1 Parameter erforderlich sind. Wenn Kein Hilfethema
nicht in Anführungszeichen gesetzt ist, wird es in 3
extraUsage := "" want := 1 // [code truncated] if len(args) != want { ts.Fatalf("usage: %s [-count=N] 'pattern'%s", name, extraUsage) }
re, err := regexp.Compile(`(?m)` + pattern)
Das obige ist der detaillierte Inhalt vonGolang Testscript .txtar-Syntax für Text, der in stderr oder stdout enthalten ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!