2014-09-20 19 views
5

Come posso aggiungere un hook pre-commit che eseguirà i miei test rspec e, in caso di esito negativo, non completerà il commit. Posso ottenere i test da eseguire ma non impedire il commit su un eventuale difetto di loroCome può un hook di git pre-commit eseguire test rspec e prevenire un commit?

ho copiato .git/hooks/pre-commit.sample-.git/hooks/pre-commit

Ho aggiunto rspec spec vicino al fondo.

I test vengono eseguiti come parte del commit ... ma un errore non impedisce il completamento del commit.

$ 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 

Forse ho bisogno di un modo diverso di eseguire i test RSpec che aumenteranno l'errore diverso da zero ho bisogno?

Attualmente è collocato nella parte inferiore:

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

rspec spec 

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

sto facendo tutto questo in un ramo (non master). Non sapevo se fosse rilevante.

risposta

6

ho scoperto che utilizzando

exec rspec spec 

in

.git/hooks/pre-commit 

mi ha dato la funzionalità desiderata -
commettere tentativi innescare corse di prova RSpec e la impegnano completo solo se passano tutti i test RSpec.

1

Se il pre-commit si aggancia da solo a zero, o sta chiamando rspec?

Potrebbe essere tutto quello che devi fare è aggiungere exit $? dopo la chiamata rspec.

Problemi correlati