golang testscript .txtar 语法,用于 stderr 或 stdout 中包含的文本
问题内容
我正在学习如何使用 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 中包含的文本的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341