从Git repo安装时,在PHPUnit输出中覆盖“@ package_version @”

时间:2011-05-05 20:28:21

标签: php git phpunit

我根据this blog post中的说明通过git submodule add将PHPUnit添加到项目中。一切都运行得很漂亮,除了每次执行顶部的输出如下所示:

  

Sebastian Bergmann的PHPUnit @ package_version @。

看起来PEAR在安装过程中用版本号替换了这个值,这对我没什么帮助,因为我使用Git来安装文件。

有没有人遇到过这个问题,你是如何解决/解决它的?

4 个答案:

答案 0 :(得分:1)

你很好地回答了问题中的一切。这不是一个错误,它是一个特性 - 字符串@ package_version @是一个占位符,在通过PEAR安装包时被替换。

由于您使用的是用于开发的版本(来自GitHub的repo clone),您应该已准备好应对此类问题。

如果您想要某些特定版本,请通过PEAR安装此特定版本。

我可以想到一些post-checkout钩子会用修订版sha1 hash替换字符串,但这样做没什么用。

所以,用一句话来说 - 它就是这样的。

答案 1 :(得分:1)

看起来不再需要了。来自PHPUnit 3.7.1's changelog

  

现在,在使用Composer安装或Git checkout中的PHPUnit时会显示版本号。

答案 2 :(得分:0)

实际上,我正在处理的项目将通过PEAR进行分发,所以我只是将PHPUnit列为package.xml文件中的依赖项。这也将为用户提供一些灵活性,以确定她希望运行哪个版本的PHPUnit。

答案 3 :(得分:0)

这是我的解决方法,是的,它不是超级干净的;)

我编辑了我的phpunit文件,不要忘记用自己的路径替换:

#!/usr/bin/env php
<?php
while (substr(getcwd(), -3) != "Project_Folder") chdir('../');
if (in_array('--version', $argv)) {
    echo 'PHPUnit 3.6.0 by Sebastian Bergmann.';
    return;
}
// set main method
define('PHPUnit_MAIN_METHOD','PHPUnit_TextUI_Command::main');

// add phpunit to the include path
$paths = scandir('./var/lib/phpunit');
$includes = array();

foreach($paths as $path){
    if (!preg_match('/^\./', $path)){
        $includes[] = './var/lib/phpunit/' . $path;
    }
}
set_include_path(implode(PATH_SEPARATOR,$includes).PATH_SEPARATOR.get_include_path());

// set the auto loader
require 'PHPUnit/Autoload.php';
// execute
PHPUnit_TextUI_Command::main();