通过TortoiseSVN客户端钩子脚本调用runtests进行预提交

时间:2012-03-14 18:34:38

标签: perl tortoisesvn

使用tortoiseSVN客户端钩子脚本进行预提交,我们尝试使用Test :: Harness的runtests sub运行一些单元测试用例。 在TortoiseSVN的设置 - > Hook Scripts->配置Hook脚本(用于预提交)中,我提供了针对“要执行的命令行:”标题的批处理文件名。

此批处理文件包含以下行 run.pl unittest.t

run.pl内容

#!/usr/bin/perl -w
use strict;
use warnings;
use Test::Harness;

# Run a single test suite
my @files = @ARGV;
runtests(@files);

因此,当我尝试提交任何代码时,此脚本将被调用并失败,并显示以下错误消息:

Could not execute (D:\Perl589\bin\perl.exe -w D:\t\unittest.t): open3: Can't call method "close" on an undefined value at D:/Perl589/lib/IPC/Open3.pm line 368.

任何想法我们如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您的Windows计算机是否知道如何处理以*.pl结尾的脚本?也就是说,如果您双击.pl文件,它是否运行Perl?这是在注册表中设置的。您可以在Folder Options文件类型标签下进行设置。在旧版Windows中,可以通过工具 - >文件夹选项... 菜单完成。我不确定在Vista和Windows 7中可以做到这一点。

在Perl与*.pl文件设置之间建立关系后,您还必须编辑%PATHEXT%环境变量,以将.PL包含在被视为可执行文件的后缀列表中。

否则,您只需将Perl解释器的名称放在批处理文件的钩子脚本中:

 C:\Perl\bin\perl run.pl unittest.t

另一种可能性是使用Perl安装附带的pl2bat脚本将Perl脚本转换为批处理文件。

相关问题