Что делает -match glob в этом фрагменте кода? - PullRequest
0 голосов
/ 12 октября 2018

Я довольно новичок в TCL, и я хотел знать, что делает следующий фрагмент кода.

Я искал в Интернете и не мог найти какое-либо четкое объяснение, поэтому я надеюсь, что кто-то может мне помочьс этим:

-match glob -result {usage*}

Чтобы дать пример того, где это поместится внутри файла:

testName{A description

} -setup{

} -body{

}-match glob -result {usage*}

1 Ответ

0 голосов
/ 12 октября 2018

Этот конкретный бит является парой опций команды 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 соответственно, но я предпочитаю писать свои тесты, чтобы не использовать их.

...