2014-09-20 4 views
5

Как добавить крюк pre-commit, который будет запускать мои тесты rspec, и, если какой-либо сбой, не завершит фиксацию. Я могу получить тесты для работы, но не предотвратить совершение любого провала ихКак можно использовать git-захват pre-commit rspec и предотвращать фиксацию?

Я скопированный .git/hooks/pre-commit.sample в .git/hooks/pre-commit

Я добавил rspec spec вблизи дна.

Тестирование выполняется как часть фиксации ... но сбой не останавливает фиксацию.

$ git commit -m'test' 
....................................................................................................F............. 

Failures: 

    1) Link Good url SHOULD be valid 
    Failure/Error: expect(link.valid_get?).to be false #true 

     expected false 
      got true 
    # ./spec/models/link_spec.rb:26:in `block (2 levels) in <top (required)>' 

Finished in 32.78 seconds (files took 3.58 seconds to load) 
114 examples, 1 failure 

Failed examples: 

rspec ./spec/models/link_spec.rb:24 # Link Good url SHOULD be valid 
[79230846_hook_to_run_tests 6c09570] test 
1 file changed, 1 insertion(+) 
create mode 100644 x.x 

Может быть, мне нужен другой способ запустить тесты rspec, которые поднимут ненулевую ошибку, в которой я нуждаюсь?

В настоящее время она находится в нижней части:

... 
    echo 
    echo " git config hooks.allownonascii true" 
    echo 
    exit 1 
fi 

rspec spec 

exec git diff-index --check --cached $against -- 

Я делаю все это в отрасли (не мастер). Не знал, имеет ли это значение.

ответ

6

Я обнаружил, что использование

exec rspec spec 

в

.git/hooks/pre-commit 

дал мне нужную функциональность -
совершают попытки запуска Rspec прогонов тестов и фиксации только полной, если все RSpec тесты проходят.

1

Если сам крюк pre-commit делает нулевой выход или он просто вызывает rspec?

Возможно, все, что вам нужно сделать, это добавить exit $? после вызова rspec.

 Смежные вопросы

  • Нет связанных вопросов^_^