From ef6cec08f94c0c8d0ef3b5c447a9d0bce19f22aa Mon Sep 17 00:00:00 2001
From: dyszczo <krzysiek@inspirelabs.pl>
Date: Sun, 23 Sep 2018 21:00:01 +0200
Subject: [PATCH] test suite init

---
 .gitignore                      |   4 +-
 .gitlab-ci.yml                  | 236 --------------------------------
 phpunit-integration.xml         |  28 ++++
 phpunit-unit.xml                |  21 +++
 tests/integration/bootstrap.php |  28 ++++
 tests/unit/bootstrap.php        |   6 +
 6 files changed, 86 insertions(+), 237 deletions(-)
 create mode 100644 phpunit-integration.xml
 create mode 100644 phpunit-unit.xml
 create mode 100644 tests/integration/bootstrap.php
 create mode 100644 tests/unit/bootstrap.php

diff --git a/.gitignore b/.gitignore
index ccef056..42e837a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 /vendor/
-.idea
\ No newline at end of file
+.idea
+composer.lock
+build-coverage
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 97023aa..6e2af39 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,56 +1,16 @@
 variables:
-  WPDESK_CI_VERSION: 1.10.19
-  MYSQL_ROOT_PASSWORD: mysql
-  MYSQL_DATABASE: wptest
-  MYSQL_USER: mysql
-  MYSQL_PASSWORD: mysql
-  MYSQL_INNODB_LOG_BUFFER_SIZE: 32M
   PHP_ERROR_REPORTING: E_ALL
   COMPOSER_ALLOW_SUPERUSER: 1
   GIT_STRATEGY: fetch
-  ACCEPTANCE_ERROR_PATH: ${CI_PROJECT_DIR}/acceptance
 
 stages:
   - tools
   - tests
-  - pre-deploy
-  - deploy
 
 .template: &job-test-template
   stage: tests
   coverage: '/^\s*Lines:\s*\d+.\d+\%/'
 
-.template: &job-test-integration-template
-  <<: *job-test-template
-  services:
-    - mysql:5.6
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - ls -l
-    - php --version
-    - cat /tmp/wordpress-develop/src/wp-includes/version.php
-    - cat /tmp/woocommerce/woocommerce.php
-    - composer update --no-progress
-    - if [[ -f tests/integration/prepare.sh ]]; then sh tests/integration/prepare.sh; fi
-    - vendor/bin/phpunit --configuration phpunit-integration.xml --coverage-text --colors=never
-  only:
-    - tags
-
-.template: &job-test-integration-template-fast
-  <<: *job-test-integration-template
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - ls -l
-    - php --version
-    - cat /tmp/wordpress-develop/src/wp-includes/version.php
-    - cat /tmp/woocommerce/woocommerce.php
-    - composer update --no-progress
-    - if [[ -f tests/integration/prepare.sh ]]; then sh tests/integration/prepare.sh; fi
-    - vendor/bin/phpunit --configuration phpunit-integration.xml --no-coverage
-  except:
-    - tags
-  only:
-
 .template: &job-test-unit-template
   <<: *job-test-template
   script:
@@ -61,8 +21,6 @@ stages:
     - cat /tmp/woocommerce/woocommerce.php
     - composer update --no-progress
     - vendor/bin/phpunit --configuration phpunit-unit.xml --coverage-text --colors=never
-  only:
-    - tags
 
 .template: &job-test-unit-template-fast
   <<: *job-test-unit-template
@@ -74,21 +32,7 @@ stages:
     - cat /tmp/woocommerce/woocommerce.php
     - composer update --no-progress
     - vendor/bin/phpunit --configuration phpunit-unit.xml --no-coverage
-  except:
-    - tags
-  only:
 
-.template: &job-deploy-template
-  image: wpdesknet/amazon-svn-deploy
-  stage: deploy
-  dependencies:
-    - build to deploy
-    - unit test lastest coverage
-    - integration test lastest coverage
-  retry: 2
-  when: manual
-  only:
-    - tags
 
 before_script:
   - cd ${CI_PROJECT_DIR}
@@ -121,190 +65,10 @@ churn metrics:
     - composer update --no-progress
     - vendor/bin/churn run classes inc
 
-#code style test:
-# stage: tests
-#  image: wpdesknet/phpunit-woocommerce:0-0
-#  allow_failure: true
-#  script:
-#    - echo ${WPDESK_CI_VERSION}
-#    - composer update --no-progress
-#    - vendor/bin/phpcs
-
 unit test lastest:
   <<: *job-test-unit-template-fast
   image: wpdesknet/phpunit-woocommerce:0-0
 
 integration test lastest:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:0-0
-
-unit test lastest coverage:
   <<: *job-test-unit-template
   image: wpdesknet/phpunit-woocommerce:0-0
-
-integration test lastest coverage:
-  <<: *job-test-integration-template
-  image: wpdesknet/phpunit-woocommerce:0-0
-
-integration test php7-1 wc-1:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:1-1
-
-integration test php7 wc-2:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:2-2
-
-integration test php-7 wc-3:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:2-3
-
-integration test php5-6:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:3-0
-
-integration test php5-5:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:4-0
-
-integration test current woocommerce:
-  <<: *job-test-integration-template-fast
-  image: wpdesknet/phpunit-woocommerce:0-0
-  allow_failure: true
-  before_script:
-    - cd /tmp
-    - rm -rf woocommerce
-    - git clone https://github.com/woocommerce/woocommerce.git
-    - cd ${CI_PROJECT_DIR}
-
-acceptance test:
-  image: wpdesknet/node
-  variables:
-    CI_DEBUG_SERVICES: trace
-  services:
-    - name: mysql:5.6
-      alias: mysqltests
-    - name: wpdesknet/apache-woocommerce:latest
-      alias: wootests
-    - name: selenium/standalone-chrome
-      alias: selenium
-  artifacts:
-    when: always
-    expire_in: 1 day
-    name: "error logs"
-    paths:
-      - ${CI_PROJECT_DIR}/acceptance
-  stage: tests
-  allow_failure: true
-  script:
-    - cd ${CI_PROJECT_DIR}
-    - composer update --no-progress --no-dev
-    - if [[ -f ${CI_PROJECT_DIR}/tests/acceptance/prepare.sh ]]; then sh ${CI_PROJECT_DIR}/tests/acceptance/prepare.sh; fi
-
-    - export MYSQL_IP=$(awk '/^[[:space:]]*($|#)/{next} /mysqltests/{print $1; exit}' /etc/hosts)
-    - export WOOTESTS_IP=$(awk '/^[[:space:]]*($|#)/{next} /wootests/{print $1; exit}' /etc/hosts)
-    - echo "http://wootests/wpdesk_init.php?mysql_ip=${MYSQL_IP}&wootests_ip=${WOOTESTS_IP}"
-    - wget -O /tmp/wpdesk_init.txt "http://wootests/wpdesk_init.php?mysql_ip=${MYSQL_IP}&wootests_ip=${WOOTESTS_IP}"
-    - tail -50 /tmp/wpdesk_init.txt
-
-    - sh /tmp/clone.sh git@gitlab.com:wpdesk/plugins-tests.git /tmp/tests headless
-    - cd /tmp/tests
-    - npm install
-    - npm install -g grunt-cli
-    - cd node_modules/.bin
-    - ./webdriver-manager update
-    - cd ../
-    - mkdir -p ${CI_PROJECT_DIR}/acceptance/reports/html/screenshot
-    - grunt chrome-${CI_PROJECT_NAME}
-
-
-apigen docs:
-  image:
-    name: wpdesknet/apigen
-  stage: pre-deploy
-  artifacts:
-    expire_in: 1 day
-    name: "docs"
-    paths:
-      - docs/
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - ls -l
-    - /app/vendor/bin/apigen generate
-    - php /app/hooks-docs.php ${CI_PROJECT_DIR}
-  only:
-    - tags
-
-pages:
-  stage: deploy
-  dependencies:
-    - apigen docs
-  script:
-    - rm -rf public
-    - mv docs/ public/
-    - 'curl -X POST --data-urlencode "payload={\"text\": \"Dokumentacja projektu ${CI_PROJECT_NAME} w wersji ${CI_COMMIT_REF_NAME} umieszczona w <https://gitlab.com/wpdesk/${CI_PROJECT_NAME}/pages|pages> \", }" https://hooks.slack.com/services/${SLACK_AUTH}'
-  artifacts:
-    expire_in: 1 day
-    paths:
-      - public
-  only:
-    - tags
-
-build to deploy:
-  image: wpdesknet/phpunit-woocommerce:4-0
-  stage: pre-deploy
-  artifacts:
-    expire_in: 1 month
-    name: "production release"
-    paths:
-      - release
-      - release.zip
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - php --version
-    - ls -l
-    - /tmp/set_version.sh ${CI_COMMIT_REF_NAME}
-    - rm -rf ${CI_PROJECT_DIR}/release ${CI_PROJECT_DIR}/release.zip /tmp/release
-    - mkdir /tmp/release
-    - mkdir -p ${CI_PROJECT_DIR}/release/${CI_PROJECT_NAME}
-    - cp -rf ${CI_PROJECT_DIR}/* /tmp/release
-    - cp -rf /tmp/release/* ${CI_PROJECT_DIR}/release/${CI_PROJECT_NAME}
-    - cd ${CI_PROJECT_DIR}/release/${CI_PROJECT_NAME}
-    - composer install --no-dev --no-progress --optimize-autoloader
-    - rm -rf build-coverage release tests docs .git .editorconfig .gitignore .gitlab-ci.yml apigen.neon phpunit.xml acceptance test_soap.php .gitlab
-    - rm -rf composer.json composer.lock phpcs.xml.dist phpunit-integration.xml phpunit-unit.xml composer.phar wp-cli.phar
-    - cd ../
-    - zip -r -q ../release.zip ./
-  only:
-    - tags
-
-deploy to shop:
-  <<: *job-deploy-template
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - /tmp/deploy_shop.sh ${CI_PROJECT_NAME} release.zip ${CI_PROJECT_NAME}.zip
-    - 'curl -X POST --data-urlencode "payload={\"text\": \"Projekt <https://gitlab.com/wpdesk/${CI_PROJECT_NAME}|${CI_PROJECT_NAME}> zdeployowany do sklepu w wersji ${CI_COMMIT_REF_NAME}\", }" https://hooks.slack.com/services/${SLACK_AUTH}'
-  environment:
-    name: wpdesk shop
-    url: https://wpdeskplugin.s3.amazonaws.com/${CI_PROJECT_NAME}.zip
-
-deploy to demo:
-  <<: *job-deploy-template
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - /tmp/deploy_demo.sh release/${CI_PROJECT_NAME} ${CI_PROJECT_NAME}
-    - 'curl -X POST --data-urlencode "payload={\"text\": \"Projekt <https://gitlab.com/wpdesk/${CI_PROJECT_NAME}|${CI_PROJECT_NAME}> zdeployowany do demo w wersji ${CI_COMMIT_REF_NAME}\", }" https://hooks.slack.com/services/${SLACK_AUTH}'
-  environment:
-    name: wpdesk demo
-    url: https://demo.wpdesk.org
-
-deploy to repository:
-  <<: *job-deploy-template
-  script:
-    - echo ${WPDESK_CI_VERSION}
-    - rm -rf /tmp/svn-repository
-    - mkdir /tmp/svn-repository
-    - /tmp/deploy_repository.sh ${CI_PROJECT_NAME} ${CI_PROJECT_DIR}/release/${CI_PROJECT_NAME} /tmp/svn-repository
-    - 'curl -X POST --data-urlencode "payload={\"text\": \"Projekt <https://gitlab.com/wpdesk/${CI_PROJECT_NAME}|${CI_PROJECT_NAME}> zdeployowany do repozytorium WP w wersji ${CI_COMMIT_REF_NAME}\", }" https://hooks.slack.com/services/${SLACK_AUTH}'
-  environment:
-    name: wordpress repository
-    url: https://downloads.wordpress.org/plugin/${CI_PROJECT_NAME}.${CI_COMMIT_REF_NAME}.zip
diff --git a/phpunit-integration.xml b/phpunit-integration.xml
new file mode 100644
index 0000000..c4a8e85
--- /dev/null
+++ b/phpunit-integration.xml
@@ -0,0 +1,28 @@
+<phpunit bootstrap="tests/integration/bootstrap.php"
+         backupGlobals="false"
+     >
+    <testsuites>
+        <testsuite>
+            <directory prefix="Test" suffix=".php">./tests/integration</directory>
+        </testsuite>
+    </testsuites>
+
+    <filter>
+        <whitelist>
+            <directory suffix=".php">classes</directory>
+        </whitelist>
+    </filter>
+
+    <logging>
+        <log type="junit" target="build-coverage/report.junit.xml"/>
+        <log type="coverage-html" target="build-coverage/coverage" charset="UTF-8" yui="true" highlight="true"/>
+        <log type="coverage-text" target="build-coverage/coverage.txt"/>
+        <log type="coverage-clover" target="build-coverage/clover.xml"/>
+    </logging>
+
+    <php>
+        <env name="WP_DEVELOP_DIR" value="/tmp/wordpress-develop"/>
+        <env name="WC_DEVELOP_DIR" value="/tmp/woocommerce"/>
+    </php>
+
+</phpunit>
\ No newline at end of file
diff --git a/phpunit-unit.xml b/phpunit-unit.xml
new file mode 100644
index 0000000..e22f6be
--- /dev/null
+++ b/phpunit-unit.xml
@@ -0,0 +1,21 @@
+<phpunit bootstrap="tests/unit/bootstrap.php">
+    <testsuites>
+        <testsuite>
+            <directory prefix="Test" suffix=".php">./tests/unit/</directory>
+        </testsuite>
+    </testsuites>
+
+    <filter>
+        <whitelist>
+            <directory suffix=".php">classes</directory>
+        </whitelist>
+    </filter>
+
+    <logging>
+        <log type="junit" target="build-coverage/report.junit.xml"/>
+        <log type="coverage-html" target="build-coverage/coverage" charset="UTF-8" yui="true" highlight="true"/>
+        <log type="coverage-text" target="build-coverage/coverage.txt"/>
+        <log type="coverage-clover" target="build-coverage/clover.xml"/>
+    </logging>
+
+</phpunit>
diff --git a/tests/integration/bootstrap.php b/tests/integration/bootstrap.php
new file mode 100644
index 0000000..a422fd9
--- /dev/null
+++ b/tests/integration/bootstrap.php
@@ -0,0 +1,28 @@
+<?php
+
+ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
+ini_set('display_errors', '1');
+ini_set('display_startup_errors', '1');
+
+require_once __DIR__ . '/../../vendor/autoload.php';
+
+// disable xdebug backtrace
+if ( function_exists( 'xdebug_disable' ) ) {
+	xdebug_disable();
+}
+
+if ( getenv( 'PLUGIN_PATH' ) !== false ) {
+	define( 'PLUGIN_PATH', getenv( 'PLUGIN_PATH' ) );
+} else {
+	define( 'PLUGIN_PATH', __DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR );
+}
+
+require_once( getenv( 'WP_DEVELOP_DIR' ) . '/tests/phpunit/includes/functions.php' );
+
+tests_add_filter( 'muplugins_loaded', function () {
+}, 100 );
+
+putenv('WP_TESTS_DIR=' . getenv( 'WP_DEVELOP_DIR' ) . '/tests/phpunit');
+require_once( getenv( 'WC_DEVELOP_DIR' ) . '/tests/bootstrap.php' );
+
+do_action('plugins_loaded');
\ No newline at end of file
diff --git a/tests/unit/bootstrap.php b/tests/unit/bootstrap.php
new file mode 100644
index 0000000..575b33b
--- /dev/null
+++ b/tests/unit/bootstrap.php
@@ -0,0 +1,6 @@
+<?php
+/**
+ * PHPUnit bootstrap file
+ */
+
+require_once __DIR__ . '/../../vendor/autoload.php';
-- 
GitLab