Я хотел бы использовать Bash для выполнения набора тестов автоматически, когда я сохранил любой файл в данном каталоге.
Существует ли механизм для удара для выполнения данного сценария на событиях сохранения?
Спасибо.
::Править::
Я должен был упомянуть, что нахожусь на использовании OSX.
Отредактировано: вы (OP) упомянули, что используете OSX. Мне не известно о каких-либо подобных инструментах в OSX. Существует низкоуровневый системный вызов (унаследованный от BSD) под названием « kqueue », но вам придется реализовать свой собственный инструмент пользовательского уровня. Существует образец приложения от Apple под названием « Watcher », но это всего лишь доказательство концепции и не делает того, что вы хотите.
Есть другой поток об этом на Stack Overflow (также безрезультатно).
Из-за отсутствия подходящего инструмента, если вы используете определенный язык программирования, я бы посоветовал вам поискать решения, уже написанные для него. В противном случае, я думаю, вам придется самостоятельно опрашивать и управлять изменениями ...
Вот мой исходный ответ, основанный на Linux, для архивных целей:
Если вы используете Linux, вы можете воспользоваться посмотрите inotify . В частности, вы можете установить inotify-tools , которые включают inotifywait
.
С его помощью вы можете отслеживать файлы и каталоги на предмет ряда событий, таких как доступ, изменение, открытие, закрытие и многие другие. inotifywait
может завершиться после обнаружения указанного события, поэтому простой цикл даст вам то, что вы хотите:
while :; do
inotifywait -e modify /some/directory
run_test_suite
done
Между прочим, многие языки программирования и среды уже имеют свои собственные средства выполнения непрерывного тестирования (для Например, с Python вы можете использовать, среди прочего, tdaemon ).
Вы можете использовать incron , чтобы определить, когда файл был закрыт.
Используйте dnotify, только если inotify недоступен в вашей системе (ядро linux <2.6.13).
dnotify - стандартный метод Linux для просмотра каталогов:
http://en.wikipedia.org/wiki/Dnotify
Пример кода. Следите за изменениями в каталоге:
dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE
Обратите внимание: SCRIPT_TO_EXECUTE будет выполняться каждый раз при изменении любого файла в WATCH_DIR.