Краткая версия: для модульного тестирования мне нужен нечитаемый файл, чтобы убедиться, что выдается правильное исключение. Очевидно, что Git не может сохранить этот нечитаемый файл, поэтому я chmod 000
во время тестирования использую git update-index --assume-unchanged
, чтобы Git не пытался сохранить нечитаемый файл. Но тогда я не могу проверить другую ветку, но получаю сообщение об ошибке «Ваши локальные изменения в следующих файлах будут перезаписаны при проверке».
Есть ли лучший способ протестировать ИЛИ лучший способ использовать Git, чтобы все работало хорошо?
Длинная версия. В одном классе у меня есть метод для чтения файла, чтобы его содержимое можно было импортировать в базу данных:
public function readFile($path) {
...
if(!is_readable($path))
throw new FileNotReadableException("The file $path is not readable");
...
}
Я тестирую этот метод с помощью PHPUnit, и один тест, в частности, должен (косвенно) вызывать исключение FileNotReadableException:
/**
* @expectedException Data\Exceptions\FileNotReadableException
*/
public function testFileNotReadableException() {
$file = '/_files/6504/58/6332_unreadable.xlsx';
@chmod(__DIR__ . $file, 0000);
$import = Import::find(58);
$import->importFile(array('ID'=>2, 'newFilename'=> $file), __DIR__);
}
После теста git checkout other_branch
прервется:
error: Your local changes to the following files would be overwritten by checkout:
Data/Tests/_files/6504/58/6332_unreadable.xlsx
Please, commit your changes or stash them before you can switch branches.
Aborting