diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 17c5761e..00000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,359 +0,0 @@
-#!groovy
-
-String launchUnitTests = "yes"
-String launchIntegrationTests = "yes"
-def pimVersions = ["1.7", "2.0"]
-def supportedPhpVersions = ["5.6", "7.0", "7.1"]
-
-def clientConfig = [
- "php-http/guzzle6-adapter": ["phpVersion": supportedPhpVersions, "psrImplem": ["guzzlehttp/psr7"]],
- "php-http/guzzle5-adapter": ["phpVersion": supportedPhpVersions, "psrImplem": ["guzzlehttp/psr7", "zendframework/zend-diactoros", "slim/slim"]],
- "php-http/curl-client": ["phpVersion": supportedPhpVersions, "psrImplem": ["guzzlehttp/psr7", "zendframework/zend-diactoros", "slim/slim"]]
-]
-
-def clients = clientConfig.keySet() as String[]
-
-stage("Checkout") {
- milestone 1
- if (env.BRANCH_NAME =~ /^PR-/) {
- userInput = input(message: 'Launch tests?', parameters: [
- string(defaultValue: pimVersions.join(','), description: 'PIM edition the tests should run on', name: 'requiredPimVersions'),
- choice(choices: 'yes\nno', description: 'Run unit tests and code style checks', name: 'launchUnitTests'),
- choice(choices: 'yes\nno', description: 'Run integration tests', name: 'launchIntegrationTests'),
- string(defaultValue: clients.join(','), description: 'Clients used to run integration tests (comma separated values)', name: 'clients'),
- ])
-
- pimVersions = userInput['requiredPimVersions'].tokenize(',')
- launchUnitTests = userInput['launchUnitTests']
- launchIntegrationTests = userInput['launchIntegrationTests']
- clients = userInput['clients'].tokenize(',')
- }
- milestone 2
-
- node('docker') {
- deleteDir()
- checkout scm
- stash "php-api-client"
-
- for (pimVersion in pimVersions) {
- deleteDir()
- checkout([$class: 'GitSCM',
- branches: [[name: pimVersion]],
- userRemoteConfigs: [[credentialsId: 'github-credentials', url: 'https://github.com/akeneo/pim-community-dev.git']]
- ])
- stash "pim_community_dev_${pimVersion}"
- }
- }
-
- checkouts = [:]
-
- if (launchUnitTests.equals("yes")) {
- String currentClient = "php-http/guzzle6-adapter"
- String currentPsrImplem = "guzzlehttp/psr7"
-
- for (phpVersion in clientConfig.get(currentClient).get("phpVersion")) {
- String currentPhpVersion = phpVersion
-
- checkouts["${currentClient}-${currentPsrImplem}-${currentPhpVersion}"] = {runCheckoutClient(currentPhpVersion, currentClient, currentPsrImplem)}
- }
- }
-
- if (launchIntegrationTests.equals("yes")) {
- for (pimVersion in pimVersions) {
- String currentPimVersion = pimVersion
-
- if ("2.0" == currentPimVersion) {
- checkouts["pim_community_dev_${currentPimVersion}"] = {runCheckoutPim18(currentPimVersion)}
- }
-
- if ("1.7" == currentPimVersion) {
- checkouts["pim_community_dev_${currentPimVersion}"] = {runCheckoutPim17(currentPimVersion)}
- }
- }
-
- for (client in clients) {
- for (phpVersion in clientConfig.get(client).get("phpVersion")) {
- for (psrImplem in clientConfig.get(client).get("psrImplem")) {
- String currentClient = client
- String currentPhpVersion = phpVersion
- String currentPsrImplem = psrImplem
-
- checkouts["${currentClient}-${currentPsrImplem}-${currentPhpVersion}"] = {runCheckoutClient(currentPhpVersion, currentClient, currentPsrImplem)}
- }
- }
- }
- }
-
- parallel checkouts
-}
-
-if (launchUnitTests.equals("yes")) {
- stage("Unit tests and Code style") {
- def tasks = [:]
-
- String currentClient = "php-http/guzzle6-adapter"
- String currentPsrImplem = "guzzlehttp/psr7"
-
- tasks["php-cs-fixer"] = {runPhpCsFixerTest("7.1", currentClient, currentPsrImplem)}
-
- for (phpVersion in clientConfig.get(currentClient).get("phpVersion")) {
- String currentPhpVersion = phpVersion
-
- tasks["phpspec-${phpVersion}"] = {runPhpSpecTest(currentPhpVersion, currentClient, currentPsrImplem)}
- }
-
- parallel tasks
- }
-}
-
-if (launchIntegrationTests.equals("yes")) {
- for (pimVersion in pimVersions) {
- String currentPimVersion = pimVersion
- stage("Integration tests ${currentPimVersion}") {
- def tasks = [:]
-
- for (client in clients) {
- for (phpVersion in clientConfig.get(client).get("phpVersion")) {
- for (psrImplem in clientConfig.get(client).get("psrImplem")) {
- String currentClient = client
- String currentPsrImplem = psrImplem
- String currentPhpVersion = phpVersion
-
- tasks["phpunit-${currentClient}-${currentPsrImplem}-${currentPhpVersion}"] = {runIntegrationTest(currentPhpVersion, currentClient, currentPsrImplem, currentPimVersion)}
- }
- }
- }
-
- parallel tasks
- }
- }
-}
-
-/**
- * Run checkout of the PIM for a given PHP version and a PIM version.
- *
- * @param pimVersion PIM version to checkout
- */
-void runCheckoutPim17(String pimVersion) {
- node('docker') {
- deleteDir()
- try {
- docker.image("akeneo/php:5.6").inside("-v /home/akeneo/.composer:/home/docker/.composer") {
- unstash "pim_community_dev_${pimVersion}"
-
- sh "composer require \"akeneo/catalogs\":\"dev-master\" --optimize-autoloader --no-interaction --no-progress --prefer-dist"
- sh "cp app/config/parameters.yml.dist app/config/parameters.yml"
- sh "sed -i 's/database_host: localhost/database_host: mysql/' app/config/parameters.yml"
- sh "sed -i \"s@installer_data: .*@installer_data: '%kernel.root_dir%/../vendor/akeneo/catalogs/${pimVersion}/community/api/fixtures'@\" app/config/pim_parameters.yml"
-
- stash "pim_community_dev_${pimVersion}"
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- deleteDir()
- }
- }
-}
-
-/**
- * Run checkout of the PIM for a given PHP version and a PIM version.
- *
- * @param pimVersion PIM version to checkout
- */
-void runCheckoutPim18(String pimVersion) {
- node('docker') {
- deleteDir()
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
-
- try {
- docker.image("akeneo/php:7.1").inside("-v /home/akeneo/.composer:/home/docker/.composer -e COMPOSER_HOME=/home/docker/.composer") {
- unstash "pim_community_dev_${pimVersion}"
-
- sh "composer require \"akeneo/catalogs\":\"dev-master\" --optimize-autoloader --no-interaction --no-progress --prefer-dist"
- sh "cp app/config/parameters_test.yml.dist app/config/parameters_test.yml"
- sh "sed -i \"s#database_host: .*#database_host: mysql#g\" app/config/parameters.yml"
- sh "sed -i \"s#index_hosts: .*#index_hosts: 'elasticsearch: 9200'#g\" app/config/parameters.yml"
- sh "sed -i \"s@installer_data: .*@installer_data: '%kernel.root_dir%/../vendor/akeneo/catalogs/${pimVersion}/community/api/fixtures'@\" app/config/pim_parameters.yml"
-
- stash "pim_community_dev_${pimVersion}"
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- deleteDir()
- }
- }
-}
-
-/**
- * Run checkout of the PHP client, for a given PHP version, HTTP client and PSR7 implementation.
- *
- * @param phpVersion PHP version to use to run the composer
- * @param client name of the HTTP client package to use to checkout
- * @param psrImplem name of the PSR 7 implementation package to checkout
- */
-void runCheckoutClient(String phpVersion, String client, String psrImplem) {
- node('docker') {
- deleteDir()
- try {
- docker.image("akeneo/php:${phpVersion}").inside("-v /home/akeneo/.composer:/.composer -e COMPOSER_HOME=/.composer") {
- unstash "php-api-client"
-
- sh "composer require ${client} ${psrImplem}"
- sh "composer update --optimize-autoloader --no-interaction --no-progress --prefer-dist"
-
- sh "cp tests/etc/parameters.yml.dist tests/etc/parameters.yml"
-
- stash "php-api-client_${client}_${psrImplem}_php-${phpVersion}".replaceAll("/", "_")
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- deleteDir()
- }
- }
-}
-
-/**
- * Run php cs fixer, for a given PHP version, HTTP client and PSR7 implementation.
- *
- * @param phpVersion PHP version to run the test with
- * @param client name of the HTTP client package to run the test with
- * @param psrImplem name of the PSR 7 implementation package to run the test with
- */
-void runPhpCsFixerTest(String phpVersion, String client, String psrImplem) {
- node('docker') {
- deleteDir()
- try {
- docker.image("akeneo/php:${phpVersion}").inside() {
- unstash "php-api-client_${client}_${psrImplem}_php-${phpVersion}".replaceAll("/", "_")
-
- sh "mkdir -p build/logs/"
-
- sh "./bin/php-cs-fixer fix --diff --dry-run --format=junit --config=.php_cs.php > build/logs/phpcs.xml"
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- sh "find build/logs/ -name \"*.xml\" | xargs sed -i \"s/testcase name=\\\"/testcase name=\\\"[php-cs-fixer] /\""
- junit "build/logs/*.xml"
-
- deleteDir()
- }
- }
-}
-
-/**
- * Run PHPspec tests, for a given PHP version, HTTP client and PSR7 implementation.
- *
- * @param phpVersion PHP version to run the test with
- * @param client name of the HTTP client package to use to run the test with
- * @param psrImplem name of the PSR 7 implementation package to run the test with
- */
-void runPhpSpecTest(String phpVersion, String client, String psrImplem) {
- node('docker') {
- deleteDir()
- try {
- docker.image("akeneo/php:${phpVersion}").inside() {
- unstash "php-api-client_${client}_${psrImplem}_php-${phpVersion}".replaceAll("/", "_")
-
- sh "mkdir -p build/logs/"
-
- sh "./bin/phpspec run --no-interaction --format=junit > build/logs/phpspec.xml"
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- sh "find build/logs/ -name \"*.xml\" | xargs sed -i \"s/testcase name=\\\"/testcase name=\\\"[php-${phpVersion}] /\""
- junit "build/logs/*.xml"
-
- deleteDir()
- }
- }
-}
-
-/**
- * Run integration tests of the PHP client, for a given PHP version, HTTP client, PSR7 implementation and a PIM version.
- * First, it starts the PIM. The configuration of the PIM (composer, parameters) is already done in the checkout step.
- * Then, it launches the PHPUnit tests.
- *
- * Do note that PHPUnit resets the PIM database between each test and generates the API client id/secret,
- * thanks to "docker exec" commands inside the PHPUnit process.
- * In order to do that, the docker socket and docker bin are exposed as volumes to the PHPUnit container.
- *
- * @param phpVersion PHP version to run the test with
- * @param client name of the HTTP client package to use to run the test with
- * @param psrImplem name of the PSR 7 implementation package to run the test with
- * @param pimVersion PIM version to run the test with
- */
-void runIntegrationTest(String phpVersion, String client, String psrImplem, String pimVersion) {
- node('docker') {
- deleteDir()
- try {
- dir('pim') {
- unstash "pim_community_dev_${pimVersion}"
-
- if ("2.0" == pimVersion) {
- sh "docker pull akeneo/fpm:php-7.1 || true"
-
- sh "docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=akeneo_pim -e MYSQL_PASSWORD=akeneo_pim -e MYSQL_DATABASE=akeneo_pim --tmpfs=/var/lib/mysql/:rw,noexec,nosuid,size=400m --tmpfs=/tmp/:rw,noexec,nosuid,size=200m -d mysql:5.7"
- sh "docker run --name elasticsearch -e ES_JAVA_OPTS=\"-Xms256m -Xmx256m\" -d elasticsearch:5"
- sh "docker run --user docker --name akeneo-pim --link mysql:mysql --link elasticsearch:elasticsearch -v \$(pwd):/srv/pim -w /srv/pim -d akeneo/fpm:php-7.1"
- sh "docker run --name httpd --link akeneo-pim:fpm -v \$(pwd):/srv/pim -v \$(pwd)/docker/httpd.conf:/usr/local/apache2/conf/httpd.conf -v \$(pwd)/docker/akeneo.conf:/usr/local/apache2/conf/vhost.conf -w /srv/pim -d httpd:2.4"
-
- // Wait for elasticsearch container ready
- sh "sleep 20"
- sh "docker exec akeneo-pim bin/console pim:install -e prod"
- }
-
- if ("1.7" == pimVersion) {
- sh "docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=akeneo_pim -e MYSQL_PASSWORD=akeneo_pim -e MYSQL_DATABASE=akeneo_pim --tmpfs=/var/lib/mysql/:rw,noexec,nosuid,size=400m --tmpfs=/tmp/:rw,noexec,nosuid,size=200m -d mysql:5.5"
- sh "docker run --user docker --name akeneo-pim --link mysql:mysql -v \$(pwd):/srv/pim -v \$(pwd)/docker/akeneo.conf:/etc/apache2/sites-available/000-default.conf:ro -w /srv/pim -d akeneo/apache-php:php-5.6"
-
- // Wait for elasticsearch container ready
- sh "sleep 20"
- sh "docker exec akeneo-pim app/console pim:install -e prod"
- }
- }
-
- unstash "php-api-client_${client}_${psrImplem}_php-${phpVersion}".replaceAll("/", "_")
- sh "mkdir -p build/logs/"
-
- if ("2.0" == pimVersion) {
- docker.image("akeneo/php:${phpVersion}").inside("--link akeneo-pim:akeneo-pim --link httpd:httpd -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -w /home/docker/client --privileged") {
- sh "sed -i \"s#base_uri: .*#base_uri: 'http://httpd'#g\" tests/etc/parameters.yml"
- sh "sed -i \"s#bin_path: .*#bin_path: bin#g\" tests/etc/parameters.yml"
- sh "sed -i \"s#version: .*#version: #g\" tests/etc/parameters.yml"
- sh "sudo ./bin/phpunit -c phpunit.xml.dist --testsuite PHP_Client_Unit_Test_2_0 --log-junit build/logs/phpunit_integration.xml"
- }
- }
-
- if ("1.7" == pimVersion) {
- docker.image("akeneo/php:${phpVersion}").inside("--link akeneo-pim:akeneo-pim -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -w /home/docker/client") {
- sh "sudo ./bin/phpunit -c phpunit.xml.dist --testsuite PHP_Client_Unit_Test_1_7 --log-junit build/logs/phpunit_integration.xml"
- }
- }
- } finally {
- sh "docker stop \$(docker ps -a -q) || true"
- sh "docker rm \$(docker ps -a -q) || true"
- sh "docker volume rm \$(docker volume ls -q) || true"
-
- sh "find build/logs/ -name \"*.xml\" | xargs sed -i \"s/testcase name=\\\"/testcase name=\\\"[php-${phpVersion}-${client.replaceAll('/', '-')}-${psrImplem.replaceAll('/', '-')}] /\""
- junit "build/logs/*.xml"
-
- deleteDir()
- }
- }
-}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index ddef19f3..774edcf0 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -15,12 +15,12 @@
tests/
-
+
tests/Common/Api/*
tests/v1_7/Api/*
-
+
tests/Common/Api/*
tests/v2_0/Api/*