Use MYSQL_* environment variables for tests

- Prevent `.htconfig.php` override when present during tests.
This commit is contained in:
Hypolite Petovan 2018-07-03 08:26:44 -04:00
commit eaa3e4d157
3 changed files with 14 additions and 16 deletions

View file

@ -10,11 +10,9 @@ php:
services: services:
- mysql - mysql
env: env:
- USER=travis DB=test - MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=travis MYSQL_PASSWORD= MYSQL_DATABASE=test
install: install:
- composer install - composer install
before_script: before_script:
- mysql -e 'CREATE DATABASE IF NOT EXISTS test;' - mysql -e 'CREATE DATABASE IF NOT EXISTS test;'
# In order to avoid bin/worker.php warnings
- touch .htconfig.php

View file

@ -23,17 +23,19 @@ $db_data = 'mysqldatabasename';
// Use environment variables for mysql if they are set beforehand // Use environment variables for mysql if they are set beforehand
if (!empty(getenv('MYSQL_HOST')) if (!empty(getenv('MYSQL_HOST'))
&& !empty(getenv('MYSQL_PORT'))
&& (!empty(getenv('MYSQL_USERNAME')) || !empty(getenv('MYSQL_USER'))) && (!empty(getenv('MYSQL_USERNAME')) || !empty(getenv('MYSQL_USER')))
&& !empty(getenv('MYSQL_PASSWORD')) && !getenv('MYSQL_PASSWORD') === false
&& !empty(getenv('MYSQL_DATABASE'))) { && !empty(getenv('MYSQL_DATABASE'))) {
$db_host = getenv('MYSQL_HOST') . ':' . getenv('MYSQL_PORT'); $db_host = getenv('MYSQL_HOST');
if (!empty(getenv('MYSQL_PORT'))) {
$db_host .= ':' . getenv('MYSQL_PORT');
}
if (!empty(getenv('MYSQL_USERNAME'))) { if (!empty(getenv('MYSQL_USERNAME'))) {
$db_user = getenv('MYSQL_USERNAME'); $db_user = getenv('MYSQL_USERNAME');
} elseif (!empty(getenv('MYSQL_USER'))) { } else {
$db_user = getenv('MYSQL_USER'); $db_user = getenv('MYSQL_USER');
} }
$db_pass = getenv('MYSQL_PASSWORD'); $db_pass = (string) getenv('MYSQL_PASSWORD');
$db_data = getenv('MYSQL_DATABASE'); $db_data = getenv('MYSQL_DATABASE');
} }

View file

@ -33,15 +33,13 @@ abstract class DatabaseTest extends TestCase
$base_config_file_path = stream_resolve_include_path($base_config_file_name); $base_config_file_path = stream_resolve_include_path($base_config_file_name);
$config_file_path = dirname($base_config_file_path) . DIRECTORY_SEPARATOR . $config_file_name; $config_file_path = dirname($base_config_file_path) . DIRECTORY_SEPARATOR . $config_file_name;
$config_string = file_get_contents($base_config_file_path); if (!file_exists($config_file_path)) {
$config_string = file_get_contents($base_config_file_path);
$config_string = str_replace('die(', '// die(', $config_string); $config_string = str_replace('die(', '// die(', $config_string);
$config_string = str_replace('your.mysqlhost.com', 'localhost', $config_string);
$config_string = str_replace('mysqlusername' , getenv('USER'), $config_string);
$config_string = str_replace('mysqlpassword' , getenv('PASS'), $config_string);
$config_string = str_replace('mysqldatabasename' , getenv('DB'), $config_string);
file_put_contents($config_file_path, $config_string); file_put_contents($config_file_path, $config_string);
}
} }
/** /**
@ -58,7 +56,7 @@ abstract class DatabaseTest extends TestCase
protected function getConnection() protected function getConnection()
{ {
if (!dba::$connected) { if (!dba::$connected) {
dba::connect('localhost', getenv('USER'), getenv('PASS'), getenv('DB')); dba::connect(getenv('MYSQL_HOST') . ':' . getenv('MYSQL_PORT'), getenv('MYSQL_USERNAME'), getenv('MYSQL_PASSWORD'), getenv('MYSQL_DATABASE'));
if (dba::$connected) { if (dba::$connected) {
$app = get_app(); $app = get_app();