|
@@ -0,0 +1,130 @@
|
|
|
+# Run our PHPUnit tests
|
|
|
+name: PHPUnit Tests
|
|
|
+
|
|
|
+# Controls when the action will run.
|
|
|
+# Run this workflow every time a new commit is pushed to your repository
|
|
|
+on: [push, pull_request]
|
|
|
+
|
|
|
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
|
+jobs:
|
|
|
+ # This workflow contains a single job called "build"
|
|
|
+ run-tests:
|
|
|
+ # The type of runner that the job will run on
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+
|
|
|
+ # Service containers to run with `run-tests`
|
|
|
+ services:
|
|
|
+ # Label used to access the service container
|
|
|
+ postgres:
|
|
|
+ # Docker Hub image
|
|
|
+ image: postgres
|
|
|
+ env:
|
|
|
+ POSTGRES_USER: postgres
|
|
|
+ POSTGRES_PASSWORD: dbpass
|
|
|
+ POSTGRES_DB: test_db
|
|
|
+ # Set health checks to wait until postgres has started
|
|
|
+ options: >-
|
|
|
+ --health-cmd pg_isready
|
|
|
+ --health-interval 10s
|
|
|
+ --health-timeout 5s
|
|
|
+ --health-retries 5
|
|
|
+ ports:
|
|
|
+ # Maps tcp port 5432 on service container to the host
|
|
|
+ - 5432:5432
|
|
|
+
|
|
|
+ # Steps represent a sequence of tasks that will be executed as part of the job
|
|
|
+ steps:
|
|
|
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
|
+ - name: Checkout Repository
|
|
|
+ uses: actions/checkout@v2
|
|
|
+ # Sets up the PHP environment for PHP 7.2
|
|
|
+ - name: Setup PHP
|
|
|
+ uses: shivammathur/setup-php@v2
|
|
|
+ with:
|
|
|
+ php-version: '7.2'
|
|
|
+ # Install extensions for PHP-PostgreSQL
|
|
|
+ extensions: mbstring, intl, php-pgsql, php-gd, php-xml
|
|
|
+ # Increase memory limit to 2G
|
|
|
+ ini-values: memory_limit=2G
|
|
|
+ # Enable xdebug for coverage reporting
|
|
|
+ coverage: xdebug
|
|
|
+ # Install composer and phpunit globally.
|
|
|
+ tools: composer, phpunit
|
|
|
+ # Install Drush 8.x globally
|
|
|
+ # NOTE: `drush` is not available without the full path.
|
|
|
+ # I tried adding it to the path but that broke other things.
|
|
|
+ - name: Install Drush
|
|
|
+ run: |
|
|
|
+ composer global require "drush/drush:~8"
|
|
|
+ /home/runner/.composer/vendor/bin/drush --version
|
|
|
+ # Install Drupal and Drupal module dependencies for Tripal.
|
|
|
+ # It also patches Drupal.
|
|
|
+ - name: Install Drupal
|
|
|
+ env:
|
|
|
+ DRUSH: "/home/runner/.composer/vendor/bin/drush"
|
|
|
+ DRUPAL_ROOT: "/home/runner/work/drupal"
|
|
|
+ POSTGRES_CONNECTION_STRING: 'pgsql://postgres:dbpass@localhost:5432/test_db'
|
|
|
+ ACCOUNT_NAME: tripaladmin
|
|
|
+ ACCOUNT_PASS: somereallysecurepassword
|
|
|
+ run: |
|
|
|
+ echo "==> Downloading Drupal"
|
|
|
+ cd /home/runner/work
|
|
|
+ $DRUSH dl drupal-7 -y
|
|
|
+ mv drupal-7* drupal
|
|
|
+ echo "==> Installing Drupal"
|
|
|
+ cd $DRUPAL_ROOT
|
|
|
+ $DRUSH si -y --root=$DRUPAL_ROOT \
|
|
|
+ --db-url=$POSTGRES_CONNECTION_STRING \
|
|
|
+ --account-name=$ACCOUNT_NAME \
|
|
|
+ --account-pass=$ACCOUNT_PASS \
|
|
|
+ --site-mail=admin@example.com \
|
|
|
+ --site-name=Tripal3
|
|
|
+ echo "==> Downloading dependencies"
|
|
|
+ $DRUSH dl -y views ctools entity redirect date ds field_group field_group_table
|
|
|
+ echo "==> Enabling Dependencies"
|
|
|
+ $DRUSH en -y views ctools entity redirect date ds field_group field_group_table
|
|
|
+ echo "==> Apply Drupal Patch"
|
|
|
+ cd $DRUPAL_ROOT
|
|
|
+ wget --no-check-certificate https://drupal.org/files/drupal.pgsql-bytea.27.patch
|
|
|
+ patch -p1 < drupal.pgsql-bytea.27.patch
|
|
|
+ # Install Tripal, Chado and prepares the Drupal/Chado databases
|
|
|
+ # Also patches views.
|
|
|
+ - name: Install Tripal
|
|
|
+ env:
|
|
|
+ DRUSH: "/home/runner/.composer/vendor/bin/drush"
|
|
|
+ DRUPAL_ROOT: "/home/runner/work/drupal"
|
|
|
+ POSTGRES_CONNECTION_STRING: 'pgsql://postgres:dbpass@localhost:5432/test_db'
|
|
|
+ ACCOUNT_NAME: tripaladmin
|
|
|
+ ACCOUNT_PASS: somereallysecurepassword
|
|
|
+ run: |
|
|
|
+ echo "==> Move Tripal into the Drupal modules directory"
|
|
|
+ ls /home/runner/work/tripal/tripal
|
|
|
+ cp -R /home/runner/work/tripal/tripal $DRUPAL_ROOT/sites/all/modules
|
|
|
+ echo "==> Apply Views Patch"
|
|
|
+ cd $DRUPAL_ROOT/sites/all/modules/views
|
|
|
+ patch -p1 < ../tripal/tripal_chado_views/views-sql-compliant-three-tier-naming-1971160-30.patch
|
|
|
+ echo "==> Install Tripal"
|
|
|
+ cd $DRUPAL_ROOT
|
|
|
+ $DRUSH en -y tripal tripal_chado tripal_chado_views tripal_ws tripal_ds
|
|
|
+ echo "==> Install Chado"
|
|
|
+ $DRUSH eval "module_load_include('inc', 'tripal_chado', 'includes/tripal_chado.install'); tripal_chado_load_drush_submit('Install Chado v1.3');"
|
|
|
+ $DRUSH trp-run-jobs --username=$ACCOUNT_NAME
|
|
|
+ echo "==> Prepare Chado"
|
|
|
+ $DRUSH eval "module_load_include('inc', 'tripal_chado', 'includes/setup/tripal_chado.setup'); tripal_chado_prepare_drush_submit();"
|
|
|
+ $DRUSH trp-run-jobs --username=$ACCOUNT_NAME
|
|
|
+ # Runs the PHPUnit tests.
|
|
|
+ # https://github.com/mheap/phpunit-github-actions-printer is used
|
|
|
+ # to report PHPUnit fails in a meaningful way to github in PRs.
|
|
|
+ - name: PHPUnit Tests
|
|
|
+ env:
|
|
|
+ DRUSH: "/home/runner/.composer/vendor/bin/drush"
|
|
|
+ DRUPAL_ROOT: "/home/runner/work/drupal"
|
|
|
+ POSTGRES_CONNECTION_STRING: 'pgsql://postgres:dbpass@localhost:5432/test_db'
|
|
|
+ ACCOUNT_NAME: tripaladmin
|
|
|
+ ACCOUNT_PASS: somereallysecurepassword
|
|
|
+ run: |
|
|
|
+ cd $DRUPAL_ROOT/sites/all/modules/tripal
|
|
|
+ composer require --dev mheap/phpunit-github-actions-printer
|
|
|
+ composer update
|
|
|
+ cp tests/.travis.env tests/.env
|
|
|
+ ./vendor/bin/phpunit --printer mheap\\GithubActionsReporter\\Printer
|