2014-09-20 47 views
5

如何添加一个预执行钩子来运行我的rspec测试,如果有任何失败,将不会完成提交。我能得到的测试运行,但不能防止pre-commit git钩子如何运行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

我发现,在

.git/hooks/pre-commit 

使用

exec rspec spec 

给我所需的功能 -
提交尝试触发RSpec的测试运行,并提交只有在所有RSpec的测试通过完整。

1

如果预先提交钩子本身做了退出零,还是只是调用rspec?

这可能是所有你需要做的就是在rspec调用后添加exit $?