使用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.
任何想法我们如何解决这个问题。
答案 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脚本转换为批处理文件。