为什么在php测试中不能识别正则表达式?


Why doesn't pear recognize regex in phpt tests?

我正试图为PHPUnit异常编写一个测试,我正在研究它在测试的预期部分需要一个正则表达式匹配器。

PHPT文件的文档说明有一个%r标志,可以用来匹配测试的--EXPECTF--部分中的regex。您可以从以下链接获得更多详细信息:PHPT - Test File Layout

我试着在我的测试中使用它,但它总是失败!所以我决定写一个简单的测试来检查这个问题,测试看起来像这样:

--TEST--
Test the %r tag of EXPECTF in phpt
--FILE--
<?php
echo '1';
?>
--EXPECTF--
%r.%r

当我使用pear的run-tests命令运行它时,这个测试失败了。.diff文件包含以下内容:

001- %r.%r
001+ 1

似乎这个标记不能被测试运行器识别。因此,我试图找到一个例子,其中使用这个标签的PHP源代码的测试。只有一个测试被发现使用它(在php-src-5.3/ext/standard/tests/network/gethostbyaddr_basic1.phpt)。

我不知道我做错了什么…什么好主意吗?

它只适用于PHP源代码发行版附带的run-tests.php(在其根目录中),而不适用于PEAR版本。

<>以前PHPRC =。TEST_PHP_EXECUTABLE =。/sapi/cli/php php run-tests.php a.phpt在phpt [a.p phpt]中测试EXPECTF的%r标签之前

如果你看一下PEAR在<PHP prefix>/lib/php/PEAR/RunTest.php中的版本,大约520行,你会注意到它不支持%r