Этот конкретный бит является парой опций команды tcltest::test
.-result {usage*}
устанавливает ожидаемую строку результата тестового сценария равной usage*
(в этом случае ее можно было бы заключить в двойные кавычки или даже сделать пустым словом).-match glob
устанавливает для правила сопоставления результатов глобализацию, что аналогично тому, что вы видите при сопоставлении имен в оболочке или в командах Tcl glob
или string 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 соответственно, но я предпочитаю писать свои тесты, чтобы не использовать их.