0

我在 Windows 上使用 Git 并尝试在工作流程中包含单元测试。如果提交消息包含关键字。commit-msg钩子将触发 Powershell 命令来运行一些 Nunit 测试。

这是我的红宝石代码

#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)

puts "The commit message is " + message

$regex = /(#runtest)/

if $regex.match(message)
    exec 'powershell.exe -ExecutionPolicy RemoteSigned -Command {RunNunitTestCase}'
end

但是,当我提交更改时,结果如下所示。exec 行已运行但什么也不做。

PS D:\testfolder> git commit -am '#runtest'
The commit message is #runtest
[authorupdate b14878d] 123
 1 files changed, 1 insertions(+), 0 deletions(-)

我是 ruby​​ 和 powershell 的新手。如果此工作流程可行或您有更好的方法,请随时发表评论。

谢谢你。

4

2 回答 2

2

大括号需要转义。

exec "powershell.exe -ExecutionPolicy RemoteSigned -Command & \{RunNunitTestCase\}
于 2012-08-24T06:14:53.680 回答
1

我尝试了 exec 行的确切脚本:

exec 'powershell.exe -ExecutionPolicy RemoteSigned -Command gps'

它确实打印出了gps我做的时候的输出git commit -m "#runtest"

所以它确实运行命令并且它确实有效。

确保您正在执行的任何操作都有效。抓住 powershell 行并直接在命令行上试用。

于 2012-04-19T09:14:33.027 回答