Я работаю над плагином CakePHP 2.x, который использует Composer для получения зависимости пакета. Я сейчас пытаюсь использовать Friends of Cake’s Пакет Трэвис автоматически запускать мои модульные тесты всякий раз, когда хранилище плагина обновляется.
Насколько я могу судить, это не включает файл автозагрузки Composer, необходимый для загрузки в моих файлах поставщика. В результате мои тесты не пройдены, так как класс, определенный в стороннем пакете, отсутствует.
Как описано в Продвинутая установка CakePHP 2 Я пытаюсь добавить следующее к bootstrap.php
: —
require APP . 'Vendor' . DS . 'autoload.php';
Я пытался сделать это через before_script
из моего .travis.yml
файл для добавления bootstrap.php
: —
before_script:
- git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
- ../travis/before_script.sh
- echo "require APP . 'Vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php
К сожалению это не удается как файл APP . 'Vendor' . DS . 'autoload.php'
не может быть найден. (Я также попытался найти файл в APP . '..' . DS . 'Vendor' . DS . 'autoload.php'
).
Где композитор autoload.php
файл находится при установке CakePHP с использованием Travis? Как я могу убедиться, что мой сторонний пакет загружен, когда мои тесты выполняются удаленно на Travis CI?
Имя каталога по умолчанию для сторонних плагинов: vendor
(нижний регистр), CakePHP есть Vendor
Вы можете изменить это в .../app/composer.json
{
"config": {
"vendor-dir": "Vendor" // CakePHP third party plugins dir name
},
"require": {
...
}
}
Решение было изменить Vendor
папка в require
заявление в нижнем регистре vendor
в before_script
: —
before_script:
- git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
- ../travis/before_script.sh
- echo "require APP . 'vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php
После этого CakePHP правильно включает файл автозагрузки Composer.