Travis CI 默认不区分大小写?
Travis CI is not case-sensitive by default?
我有一个 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
行。问题是如果我将 class FooBar
错误键入 fooBaR
,我预计我的测试会失败。不幸的是,travis 构建正在通过......但我不清楚为什么。
.travis.yml
文件:
language: php
php:
- 5.6
install: script/install
script:
- script/test
有什么可能出错的想法吗?
对于 class 名称,PHP 不区分大小写。如果您的代码声明了一个名为 Foo
的 class,并且执行了此定义,您还可以实例化任何其他大小写样式,例如 foo
或 fOO
。
PHP 将保留触发自动加载的情况的大小写(即 PHP 第一次遇到 class 名称),如果该大小写样式与区分大小写的文件名,使用class会失败。
我认为以正确的大小写样式编写 class 是一个 不应使用单元测试 进行测试的问题。这是一个无法在您自己的代码中解决的问题 - 如果您使用一个强大的 IDE 知道所有可以使用的 classes,它基本上不存在。
另外:您的问题没有提供演示问题的代码。它包含的代码可能与您认为的不同。
我有一个 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
行。问题是如果我将 class FooBar
错误键入 fooBaR
,我预计我的测试会失败。不幸的是,travis 构建正在通过......但我不清楚为什么。
.travis.yml
文件:
language: php
php:
- 5.6
install: script/install
script:
- script/test
有什么可能出错的想法吗?
PHP 不区分大小写。如果您的代码声明了一个名为 Foo
的 class,并且执行了此定义,您还可以实例化任何其他大小写样式,例如 foo
或 fOO
。
PHP 将保留触发自动加载的情况的大小写(即 PHP 第一次遇到 class 名称),如果该大小写样式与区分大小写的文件名,使用class会失败。
我认为以正确的大小写样式编写 class 是一个 不应使用单元测试 进行测试的问题。这是一个无法在您自己的代码中解决的问题 - 如果您使用一个强大的 IDE 知道所有可以使用的 classes,它基本上不存在。
另外:您的问题没有提供演示问题的代码。它包含的代码可能与您认为的不同。