2015-12-21 6 views
3

Я работаю над плагином CakePHP 2.x, который использует Composer для зависания пакета. Теперь я пытаюсь использовать Friends of Cake's Travis package для автоматического запуска моих модульных тестов всякий раз, когда обновляется репозиторий плагина.Как выполнить автозагрузку пакетов Composer в CakePHP 2 Интеграция с Travis

Насколько я могу судить, это не включает файл автозагрузки Composer, необходимый для загрузки в файлы моего поставщика. В результате мои тесты терпят неудачу, поскольку класс, определенный в пакете сторонних поставщиков, отсутствует.

Как описано в CakePHP 2's advanced installation Я пытаюсь добавить следующее bootstrap.php: -

require APP . 'Vendor' . DS . 'autoload.php'; 

Я попытался сделать это, чтобы добавить bootstrap.php через before_script моего .travis.yml файла: -

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').

Где находится Composer autoload.php файл при установке CakePHP с помощью Travis? Как я могу обеспечить загрузку моего стороннего пакета, когда мои тесты запускаются удаленно на Travis CI?

+1

Я предполагаю, что он использует каталог поставщика композитору по умолчанию, который является ' ./vendor/autoload.php' (поставщик нижнего регистра, верхний каталог). В Cake 2 все файлы поставщиков, которые находятся в структуре приложения под Vendor, и первый бит в [docs] (http://book.cakephp.org/2.0/en/installation/advanced-installation.html#installing-cakephp -with-composer) о файле компоновщика изменяет каталог поставщика композитора, который установщик FOC travis не делает для вас. Возможно, вы сможете отредактировать каталог до того, что ожидает Cake, добавив 'comper config vendor-dir 'Vendor /" 'в ваш блок before_script. – jeremyharris

ответ

0

Решение было изменить 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 автозагрузку.

1

По умолчанию имя каталога плагинов сторонних является vendor (в нижнем регистре), CakePHP есть Vendor, вы можете изменить это в .../app/composer.json

{ 
    "config": { 
     "vendor-dir": "Vendor" // CakePHP third party plugins dir name 
    }, 
    "require": { 
     ... 
    } 
} 
+0

Я думаю, что это правильное решение. Я сделал это так. –