我正在学习如何使用 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 风味语法编写正则表达式。
Atas ialah kandungan terperinci golang testscript .txtar sintaks untuk teks yang terkandung dalam stderr atau stdout. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!