From cfd855d8bc3d24d69f6875fa811e3cd00eefe446 Mon Sep 17 00:00:00 2001 From: thenotsoft Date: Thu, 23 Dec 2021 16:54:32 +0200 Subject: [PATCH 1/2] Add sandbox container for run tests and cleanup --- tests/Dockerfile | 20 ++++++++++++++++++++ tests/bootstrap.php | 25 +++++++++++++------------ tests/docker-compose.yml | 15 ++++++++++++++- tests/fix-binlog.sh | 5 ----- tests/install-pgsql-10.sh | 9 --------- tests/install-sqlsrv.sh | 7 ------- 6 files changed, 47 insertions(+), 34 deletions(-) create mode 100644 tests/Dockerfile delete mode 100644 tests/fix-binlog.sh delete mode 100644 tests/install-pgsql-10.sh delete mode 100644 tests/install-sqlsrv.sh diff --git a/tests/Dockerfile b/tests/Dockerfile new file mode 100644 index 0000000..53b48cd --- /dev/null +++ b/tests/Dockerfile @@ -0,0 +1,20 @@ +FROM php:8.0 + +RUN apt-get -y update \ + && apt-get install -y gnupg2 \ + && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ + && curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \ + && apt-get -y update \ + && apt-get upgrade -y \ + && ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql17 unixodbc-dev libpq-dev \ + && docker-php-ext-install pdo pdo_mysql pgsql pdo_pgsql + +RUN pecl install sqlsrv \ + && pecl install pdo_sqlsrv \ + && docker-php-ext-enable sqlsrv pdo_sqlsrv + +ENV TEST_ENV=local + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +WORKDIR /app diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 42107df..6df2199 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -10,6 +10,7 @@ declare(strict_types=1); use Cycle\Database\Config; +use Cycle\Schema\Tests\BaseTest; error_reporting(E_ALL | E_STRICT); ini_set('display_errors', '1'); @@ -24,8 +25,8 @@ 'mysql' => new Config\MySQLDriverConfig( connection: new Config\MySQL\TcpConnectionConfig( database: 'spiral', - host: '127.0.0.1', - port: 13306, + host: getenv('TEST_ENV') === 'local' ? 'mysql_latest' : '127.0.0.1', + port: getenv('TEST_ENV') === 'local' ? 3306 : 13306, user: 'root', password: 'root', ), @@ -34,8 +35,8 @@ 'postgres' => new Config\PostgresDriverConfig( connection: new Config\Postgres\TcpConnectionConfig( database: 'spiral', - host: '127.0.0.1', - port: 15432, + host: getenv('TEST_ENV') === 'local' ? 'postgres' : '127.0.0.1', + port: getenv('TEST_ENV') === 'local' ? 5432 : 15432, user: 'postgres', password: 'postgres', ), @@ -45,8 +46,8 @@ 'sqlserver' => new Config\SQLServerDriverConfig( connection: new Config\SQLServer\TcpConnectionConfig( database: 'tempdb', - host: '127.0.0.1', - port: 11433, + host: getenv('TEST_ENV') === 'local' ? 'sqlserver' : '127.0.0.1', + port: getenv('TEST_ENV') === 'local' ? 1433 : 11433, user: 'SA', password: 'SSpaSS__1' ), @@ -55,12 +56,12 @@ ]; $db = getenv('DB') ?: null; -\Cycle\Schema\Tests\BaseTest::$config = [ - 'debug' => false, - 'strict' => true, - 'benchmark' => true, -] + ( +BaseTest::$config = [ + 'debug' => false, + 'strict' => true, + 'benchmark' => true, + ] + ( $db === null ? $drivers : array_intersect_key($drivers, array_flip((array)$db)) -); + ); diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 82baff9..22c494e 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -1,6 +1,19 @@ version: "3" services: + sandbox: + build: . + volumes: + - ..:/app + depends_on: + - sqlserver + - mysql_latest + - postgres + links: + - sqlserver + - mysql_latest + - postgres + sqlserver: image: mcr.microsoft.com/mssql/server:2019-latest ports: @@ -28,4 +41,4 @@ services: environment: POSTGRES_DB: "spiral" POSTGRES_USER: "postgres" - POSTGRES_PASSWORD: "postgres" \ No newline at end of file + POSTGRES_PASSWORD: "postgres" diff --git a/tests/fix-binlog.sh b/tests/fix-binlog.sh deleted file mode 100644 index 3a6dee3..0000000 --- a/tests/fix-binlog.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -ex -sed -i '/\[mysqld\]/a\ -binlog_format = MIXED' /etc/mysql/my.cnf -sudo service mysql restart \ No newline at end of file diff --git a/tests/install-pgsql-10.sh b/tests/install-pgsql-10.sh deleted file mode 100644 index 2653213..0000000 --- a/tests/install-pgsql-10.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -set -ex -# from Doctrine -sudo service postgresql stop -sudo apt-get remove -q 'postgresql-*' -sudo apt-get update -q -sudo apt-get install -q postgresql-10 postgresql-client-10 -sudo cp /etc/postgresql/{9.6,10}/main/pg_hba.conf -sudo service postgresql restart \ No newline at end of file diff --git a/tests/install-sqlsrv.sh b/tests/install-sqlsrv.sh deleted file mode 100644 index 8f0c95d..0000000 --- a/tests/install-sqlsrv.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -ex -curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - -curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list -sudo apt-get update - -sudo ACCEPT_EULA=Y apt-get install -qy msodbcsql17 mssql-tools \ No newline at end of file From 6408883f6e4e68d2960b18f9534eebe0e660c020 Mon Sep 17 00:00:00 2001 From: thenotsoft Date: Thu, 23 Dec 2021 17:03:33 +0200 Subject: [PATCH 2/2] Add README.md for tests --- tests/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/README.md diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..45cdb75 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,8 @@ +Run Tests +--- + +To run the tests, you need to run the command in the tests folder + +```shell +docker-compose run --rm sandbox vendor/bin/phpunit +```