我根据this blog post中的说明通过git submodule add
将PHPUnit添加到项目中。一切都运行得很漂亮,除了每次执行顶部的输出如下所示:
Sebastian Bergmann的PHPUnit @ package_version @。
看起来PEAR在安装过程中用版本号替换了这个值,这对我没什么帮助,因为我使用Git来安装文件。
有没有人遇到过这个问题,你是如何解决/解决它的?
答案 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();