Тесты для команд оболочки в формулах Homebrew обычно следуют этому сценарию:
- создает контекст, используемый командой: репозиторий git, иерархия каталогов, пример файла и т. Д.
- запустите команду
- , подтвердите, что результат правильный
В вашем случае, поскольку match
подобен grep -R
, вы можете создать группу файлов с некоторым содержимым, затем запустите match <something>
и убедитесь, что он находит правильные файлы.
Вы можете использовать любой код Ruby в своих тестах, а также утилиты Homebrew, такие как shell_output("...command...")
, чтобы получить выходные данные команды.
Вот пример теста, который вы можете написать:
class Match < Formula
# ...
test do
# Create two dummy files
(testpath/"file1").write "foo\nbar\nqux"
(testpath/"file2").write "bar\nabc"
# Ensure `match bar` finds both files
assert_match "file1_ 2 bar\n***\nfile2_ 1 bar",
shell_output("#{bin}/match bar")
# Ensure `match abc` finds the second file
assert_match "file2_ 2 abc", shell_output("#{bin}/match abc")
# Ensure `match idontmatchanything` doesn’t match any of the files
assert_not_match(/file[12]/,
shell_output("#{bin}/match idontmatchanything"))
end
end
assert_match "something", shell_output("command")
гарантирует, что (1) command
успешно работает и (2) его вывод содержит "something
".