这段代码中的 -match glob 有什么作用?

What does -match glob in this snippet of code do?

我是 TCL 的新手,我想知道以下代码片段的作用。

我在网上查了一下,没有找到明确的解释,所以我希望有人能帮我解决这个问题:

-match glob -result {usage*}

举例说明文件中适合的位置:

testName{A description

} -setup{

} -body{

}-match glob -result {usage*}

该特定位是 tcltest::test 命令的一对选项。 -result {usage*} 将测试脚本的预期结果字符串设置为 usage* (在这种情况下,它可以用双引号引起来,甚至可以作为一个裸词来完成)。 -match glob 结果匹配规则 设置为通配,这与您在 shell 或 Tcl globstring match 命令。默认匹配规则是完全相等的字符串,但在这种情况下,如果前五个字符是 usage 并且其余字符不重要(usage* glob 模式的标准解释),则测试要求匹配结果.

您需要更加小心地处理空格(和换行符):它们在 Tcl 脚本中非常重要,因为它们用于 分隔 单词(和命令) 来自彼此。


这是一个更完整的版本:

test testName "A description" -constraints knownBug -setup {
    # Do the setting up for the test
} -body {
    # Do the things that actually produce the result
} -cleanup {
    # Tear down the things that were set up before
} -returnCodes error -match glob -result {usage*}

在这种情况下,我们还指定了许多其他选项(并且前几个参数很明显:一个易于在测试套件中搜索的名称和一个简短的人类可读描述正在测试什么)。 顺序不,但为了您应该尝试理解它们:

  • -body:用于指定产生比较结果的脚本。
  • -constraints:用于控制何时 运行测试。有时,由于报告没有意义的原因,测试无法正常工作(例如,您 运行 宁 Windows 但它需要 MacOS 才能工作,或者它需要能够达到一项当前正在停机维护的服务)。约束系统是唯一推荐的跳过测试的方法,因为这样您就可以更好地统计被忽略的内容。
  • -setup:用于使系统进入可以运行测试的状态。有些测试需要这个,有些则不需要。
  • -cleanup:用于测试后清理系统。
  • -returnCodes:这让您声明您期望脚本的常规退出以外的其他内容:预期的 error 使结果匹配针对错误消息完成。

我已经在上面描述了 -result-match。还有 -output-errorOutput 分别用于检查写入 stdout 和 stderr 的内容,但我更喜欢编写测试而不使用这些。