Skip to content

Instantly share code, notes, and snippets.

@ceeram
Created March 14, 2012 19:02
Show Gist options
  • Save ceeram/2038684 to your computer and use it in GitHub Desktop.
Save ceeram/2038684 to your computer and use it in GitHub Desktop.
Travis configuration file for CakePHP, add to the root of the repo.
language: php
php:
- 5.3
- 5.4
env:
- DB=mysql
- DB=pgsql
- DB=sqlite
before_script:
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE cakephp_test;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE cakephp_test2;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE cakephp_test3;'; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE cakephp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE SCHEMA test2;' -U postgres -d cakephp_test; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE SCHEMA test3;' -U postgres -d cakephp_test; fi"
- chmod -R 777 ./app/tmp
- echo "var net = require('net');
var server = net.createServer();
server.listen(80, 'localhost');
console.log('TCP server listening on port 80 at localhost.');" > app/tmp/socket.js
- sudo node ./app/tmp/socket.js &
- set +H
- echo "<?php
class DATABASE_CONFIG {
private \$identities = array(
'mysql' => array(
'datasource' => 'Database/Mysql',
'host' => '0.0.0.0',
'login' => 'travis'
),
'pgsql' => array(
'datasource' => 'Database/Postgres',
'host' => '127.0.0.1',
'login' => 'postgres',
'database' => 'cakephp_test',
'schema' => array(
'default' => 'public',
'test' => 'public',
'test2' => 'test2',
'test_database_three' => 'test3'
)
),
'sqlite' => array(
'datasource' => 'Database/Sqlite',
'database' => array(
'default' => ':memory:',
'test' => ':memory:',
'test2' => '/tmp/cakephp_test2.db',
'test_database_three' => '/tmp/cakephp_test3.db'
),
)
);
public \$default = array(
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'cakephp_test',
'prefix' => ''
);
public \$test = array(
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'cakephp_test',
'prefix' => ''
);
public \$test2 = array(
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'cakephp_test2',
'prefix' => ''
);
public \$test_database_three = array(
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'cakephp_test3',
'prefix' => ''
);
public function __construct() {
\$db = 'mysql';
if (!empty(\$_SERVER['DB'])) {
\$db = \$_SERVER['DB'];
}
foreach (array('default', 'test', 'test2', 'test_database_three') as \$source) {
\$config = array_merge(\$this->{\$source}, \$this->identities[\$db]);
if (is_array(\$config['database'])) {
\$config['database'] = \$config['database'][\$source];
}
if (!empty(\$config['schema']) && is_array(\$config['schema'])) {
\$config['schema'] = \$config['schema'][\$source];
}
\$this->{\$source} = \$config;
}
}
}" > app/Config/database.php
script:
- ./lib/Cake/Console/cake test core AllTests --stderr
notifications:
email: false
branches:
only:
- 2.2-travis
@josegonzalez
Copy link

Not 5.2.8?

@ceeram
Copy link
Author

ceeram commented Mar 14, 2012

Travis segfaults on 5.2 and it will be dropped soon.

@michaelklishin
Copy link

Travis does not "segfault on 5.2". 5.2 segfaults in 32-bit environments and we do not patch runtimes (especially runtimes we don't have experience with, like PHP).

5.2 causes us major headaches and even though we decided to keep it w/o openssl support on 11.10 for another few months, it will be dropped as soon as we encounter more problems with it. It is not worth the time for us. 5.2.8 is not provided on travis-ci.org and won't be (because even 5.2.17 is problematic enough).

@ceeram
Copy link
Author

ceeram commented Mar 16, 2012

5.2.17 would be fine as well, just to show CakePHP and the tests run on 5.2
I am looking into the segfault, running AllTests without --stderr option won't run into segfaults.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment