2012-03-14 52 views
0

使用tortoiseSVN客户端挂钩脚本进行预先提交,我们试图使用Test :: Harness的runtests子文件运行一些单元测试用例。 在TortoiseSVN的设置 - >钩子脚本 - >配置钩子脚本(用于预提交)时,我提供了一个批处理文件名称,用于“执行命令行:”标题。通过TortoiseSVN客户端挂钩脚本调用预先提交的runtests

此批处理文件包含下面的行 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. 

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

+0

错误发生在D:/Perl589/lib/IPC/Open3.pm第368行。找出脚本失败的原因。 – Stefan 2012-03-15 15:37:21

回答

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脚本进入批处理文件。

+0

是的,我尝试了所有这些,但没有任何工作。 – rpg 2012-03-15 05:04:43

+0

@rpg当您尝试从命令行运行'D:\ Perl589 ...'命令时会发生什么? – 2012-03-15 16:00:26

+0

对于迟到的回复感到抱歉。似乎run.pl打开一个IPC到STDOUT,它失败了。这是我通过perlmonks知道的。 – rpg 2012-03-20 06:04:14