gpt4 book ai didi

php - 如何让 PHPUnit 在测试路径中排除 .svn 目录?

转载 作者:可可西里 更新时间:2023-11-01 01:06:51 26 4
gpt4 key购买 nike

如何从 phpunit.xml 中让 PHPUnit 不在 .svn 目录中搜索?在大型项目中,随着 .svn 目录数量的增加,这会成为一个更严重的问题。

我当前的配置:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="phpunit_bootstrap.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
syntaxCheck="true"
verbose="true"
strict="true">
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./phpunit/</directory>
<exclude>
<directory>./phpunit/.svn</directory>
</exclude>
</whitelist>
</filter>
</phpunit>

当我运行 strace -e open phpunit phpunit/ 时,这似乎被忽略了我明白了:

open("phpunit/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3
open("phpunit/.svn", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
open("phpunit/.svn/tmp", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5
open("phpunit/.svn/tmp/prop-base", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6
open("phpunit/.svn/tmp/text-base", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6
open("phpunit/.svn/tmp/props", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6
open("phpunit/.svn/prop-base", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5
open("phpunit/.svn/text-base", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5
open("phpunit/.svn/props", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 5

是否可以将 .svn 目录列入黑名单?最好使用通配符指令,这样我就不必指定每个 .svn 目录的绝对路径(例如 <directory>.svn</directory> )

最佳答案

目前没有办法告诉PHPUnit不扫描与特定表达式匹配的目录或忽略隐藏的目录。

所以目前你必须<exclude>每一个 svn 目录。

只是重申评论中的内容:这只是在处理非常慢的文件系统时才会出现的问题,这些文件系统需要花费大量时间进行 stat 和 read 调用。

这就是为什么我假设用例如此有限,以至于在 phpunit 中构建一个 .svn 忽略是不值得的,特别是因为较新的 svn 版本不再将 dirs 放在任何地方。 (参见可能的解决方案 2)

可能的解决方案:

列出所有排除项

也许编写一个从文件中生成排除标签的小脚本不是什么大问题

find . | grep -e ".svn$" | sed 's/^/<directory>/' | sed 's/$/<\/directory>/'
例如,

将为您提供要粘贴的所有包含标签的列表。或者使用一个基于 domDocument 的小脚本来更新文件 :)

升级到 Subversion 1.7。

这会将所有元数据存储在项目根目录中的一个目录中,因此您的 project/tests 中将没有文件。供 phpunit 扫描并解决问题的文件夹。

关于php - 如何让 PHPUnit 在测试路径中排除 .svn 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com