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

时间:2018-10-11 21:00:28

标签: scripting tcl tk

我刚接触TCL,我想知道以下代码片段的作用。

我在网上搜索,找不到任何明确的解释,所以我希望有人可以帮助我解决这个问题:

-match glob -result {usage*}

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

testName{A description

} -setup{

} -body{

}-match glob -result {usage*}

1 个答案:

答案 0 :(得分:0)

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

在使用空格(和换行符)时,您需要格外小心:它们在Tcl脚本中非常重要,因为它们用于相互分隔单词(和命令)。


这是一个更完整的版本:

usage*

在这种情况下,我们还指定了许多其他选项(前两个参数很明显:在测试套件中易于搜索的名称以及易于理解的简短描述正在测试)。 不是,但是为了使您可以尝试在以下方面理解它们:

  • 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:用于控制何时运行测试。有时,已知一项测试由于无法报告的原因而无法正常工作(例如,您在Windows上运行,但需要MacOS正常运行,或者它需要能够访问目前无法维护的服务) 。约束系统是唯一推荐的跳过测试的方法,因为这样您可以更好地了解被忽略的内容。
  • -constraints:用于将系统置于可以运行测试的状态。有些测试需要这样做,有些则不需要。
  • -setup:用于在测试后清理系统。
  • -cleanup:这使您可以声明除了脚本的常规退出之外还需要其他内容:期望的-returnCodes使结果与错误消息相匹配。

我已经在上面描述了error-result。还有-match-output用于分别检查对stdout和stderr写入的内容的检查,但是我更愿意编写测试以不使用它们。