Travis CI默认情况下不区分大小写?

时间:2015-06-15 23:06:22

标签: filesystems phpunit composer-php travis-ci case-sensitive

我有一个具有作曲家依赖关系的php项目,它在我的单元测试的代码路径中进行了固有的测试。这是我的示例代码:

<?php
// where FooBar is a composer package but I'm purposely typing it incorrectly here
use \fooBaR
public function appendNameToWords(array $words, $name)
{
    $start = microtime(true);
    $newWords = array_map(function($word){
      return $word . $name;
    }, $words);
    // logs the diff between start and end time
    FooBar::logTimer($start);
    return $newWords;
}

我的测试只是测试方法,但当然在我的源代码中执行行FooBar::logTimer。问题是,如果我将班级FooBar输错为fooBaR,我希望我的测试失败。不幸的是,travis构建正在过去......但我不明白为什么。

.travis.yml档案:

 language: php
 php:
 - 5.6
 install:        script/install
 script:
 - script/test

关于什么可能出错的任何想法?

1 个答案:

答案 0 :(得分:0)

对于类名,PHP不区分大小写。如果您的代码声明了一个名为Foo的类,并且执行了此定义,那么您还可以实例化任何其他案例样式,例如foofOO

PHP将保留触发自动加载的事件的情况(即PHP第一次遇到类名),如果该案例样式与区分大小写的文件名不匹配,则使用该类将失败。

我考虑用正确的案例风格编写类,使用单元测试来解决不应该测试的问题。这是一个无法在您自己的代码中解决的问题 - 如果您使用了解所有可以使用的类的强大IDE,它基本上不存在。

此外:您的问题没有提供演示此问题的代码。它包含的代码可能不会按照您的想法执行。