Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to autoload Composer packages in CakePHP 2 Travis integration

I'm working on a CakePHP 2.x plugin that uses Composer to pull in a package dependency. I am now trying to use the Friends of Cake's Travis package to automatically run my unit tests whenever the plugin's repository is updated.

As far as I can tell this does not include the Composer autoload file required for loading in my vendor files. As a result my tests fail as the class defined in the third-party package is missing.

As described in CakePHP 2's advanced installation I'm trying to add the following to bootstrap.php:-

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

I've attempted to do this via the before_script of my .travis.yml file to append 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

Unfortunately this is failing as the file APP . 'Vendor' . DS . 'autoload.php' cannot be found. (I have also tried looking for the file in APP . '..' . DS . 'Vendor' . DS . 'autoload.php').

Where is the Composer autoload.php file located when installing CakePHP using Travis? How can I ensure my third-party package is loaded when my tests run remotely on Travis CI?

like image 692
drmonkeyninja Avatar asked Sep 26 '22 21:09

drmonkeyninja


1 Answers

Default directory name for third party plugins is vendor (lower case), CakePHP have Vendor, you can change that in .../app/composer.json

{
   "config": {
      "vendor-dir": "Vendor" // CakePHP third party plugins dir name
   },
   "require": {
      ...
   }
}
like image 67
Sojtin Avatar answered Oct 03 '22 02:10

Sojtin