我正在學習如何使用 https://github.com/rogpeppe/go-internal testscript 模組測試 cli 程式。
當我在 .txtar
檔案中使用此行時:
stderr /No help topic/gm
...實際的錯誤輸出是:
No help topic for 'totalfoobar'
我收到錯誤 usage: stderr [-count=N] 'pattern'
。
我已經查看了這裡的文檔,說實話,這很難理解。我沒有看到任何關於 -count=N
含義的解釋。
我嘗試了以下所有變體:
stderr -count=1 No help topic for 'totalfoobar' stderr No help topic for 'totalfoobar' stderr *No help topic*
無論字串是什麼,斷言仍然失敗並出現相同的錯誤。
問:如何取得總 stderr / stdout 輸出的子字串,以便進行更靈活的測試?
用單引號引用模式:
// 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
結果作為 args
參數傳遞給 scriptMatch 最後。 scriptMatch 的實作表明,除了可選的 -count
標誌之外,它只需要 1 參數。如果 No help topic
不加引號,則會被解析為 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)
請記住,您應該使用 Go 風味語法來編寫正規表示式。
以上是golang testscript .txtar 語法,用於 stderr 或 stdout 中包含的文本的詳細內容。更多資訊請關注PHP中文網其他相關文章!