4

这似乎是一个非常基本的问题,但我被淘汰了。如何测试那些为挂钩目的而编写的脚本。

正如我们所知,脚本在后台运行,SVN 控制台只会向我们抛出错误。我尝试使用断点,但我无法为脚本提供任何输入。

有没有人对此有任何想法。我正在 Windows 上编写 svn 钩子脚本,所以许多已经编写的钩子脚本要么没有运行,要么没有提供所需的输出,例如检查来自 apache 的 mime-type 和 eol 脚本。

4

1 回答 1

6

我可以给你一些建议:

  • 您需要打印到STDERR. 这是您的脚本向您报告错误的唯一方式。您可以将其用于实际测试。
  • 我编写了我的预提交脚本来获取一个-t或一个-r命令行参数。当作为预提交钩子执行时,我可以使用-t参数传入事务号。从命令行运行它时,我可以使用-r参数并给它一个修订号来运行。
  • 我还编写了一个debug函数,允许我在设置-debug命令行参数时打印出信息。我可以打开和关闭它。
  • 如果您实际上是在测试您的钩子,请使用存储库的副本,并确保pre-commitshell 脚本将失败,并以退出代码2. 你永远不会提交你的事务,但是你会在你的 pre-commit 脚本中得到消息是怎么回事(也就是说,如果你把所有的东西都打印到 STDERR)。

您可以查看我正在开发的钩子脚本以获得一些想法。我使用Data::DumperPerl 模块,它可以帮助在我的脚本中打印出数据结构。

于 2011-11-28T21:00:30.193 回答