登录
首页 >  Golang >  Go问答

golang testscript .txtar 使用语法检查 stderr 或 stdout 中的文本

来源:stackoverflow

时间:2024-02-07 12:01:04 321浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《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 中的文本》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>