This miniature guide will walk us through adding Code Climate coverage reports. I assume you are using the Tripal Test Suite helper to set up your Travis CI.
The basic steps we will take:
Code coverage is a very rough metric of which files are well-tested.
I use Code Climate because its free for open source and it works with GitHub. Feel free to use any platform you'd like. Heres what we get with Code Climate:
Once your repo is integrated, head to Repo Settings and click on Test coverage. Here you'll find your TEST REPORTER ID which needs to be associated with the
CC_TEST_REPORTER_ID environmental variable in your Travis environment.
PHPUnit actually handles the code coverage report- if you want, you can run
./vendor/bin/phpunit --coverage-clover ./clover.xml to create a clover formatted report, or,
phpunit --coverage-html build/coverage-report to build an html-formatted coverage report you can read!
Prior to generating the report, we need to tell PHPUnit which files should be included in the report. Adding the below
filter tags to your
phpunit.xml config file will tell PHPunit to report on all
.php files in your
<phpunit> <testsuites> ... </testsuites> <filter> <whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix=".inc">./includes</directory> <directory suffix=".php">./includes</directory> </whitelist> </filter> </phpunit>
Note that the coverage report will only run when we add a
--coverage flag: this intentional, to keep the unit tests we run on our development environment fest.
.travis.yml file therefore needs to be updated (ill provide a complete example
.travis.yml file at the end of this guide):
- docker exec -it tripal bash -c "cd /modules/tripal_eutils && composer install && DRUPAL_ROOT=/var/www/html IS_TRAVIS=TRUE ./vendor/bin/phpunit --coverage-clover ./clover.xml"
Please read the PHPUnit documentation for more details.
Before we can generate the report in Travis, we need the Xdebug library installed. The below line will install the xdebug library in our
- docker exec -it tripal yum install -y php-pecl-xdebug.x86_64
If we push our code to Travis, test should run with no problem, and the
clover.xml report should be generated. Its no good to us sitting there, though: next we need to send it to Code Climate. Code Climate has extensive documentation, but I'll provide specific instructions for Tripal Test Suite users.
When we set up Code Climate, we found our
CC_TEST_REPORTER_ID. Add it to the
env section of your
test-reporterbefore and after script
before_script seciton, we download the
cc-test-report application and run the
before-build program (I include teh
debug flag which can be handy when setting up).
I also map the Travis specific environmental git variables into generic ones that Code Climate expects.
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - chmod +x ./cc-test-reporter - ./cc-test-reporter before-build --debug - GIT_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - GIT_COMMIT_SHA=$TRAVIS_PULL_REQUEST_SHA
Finally we need to do the after script processing. This means calling
./cc-test-reporter after-build and providing the
clover.xml report. We additionally specify the
-p parameter for the root path in the docker container where the tests/analysis took place (which is different from the Travis root).
after_script: - ./cc-test-reporter after-build clover.xml --debug -t clover -p /var/www/html/sites/all/modules/custom/tripal_eutils --exit-code $TRAVIS_TEST_RESULT -
.travis.yml file is below. Your coverage report should now appear in your code climate dashboard! In addition, pull request checks will take place based on the criteria you set in Repo Settings area of Code Climate.
language: php php: - 7.1 services: - docker env: - DRUPAL_ROOT=/var/www/html IS_TRAVIS=TRUE CC_TEST_REPORTER_ID=d4d6bcc22c56ae459a80bc9428eb44040b2e7225b45c79ac445343a73d582abf before_script: - docker pull statonlab/tripal3 - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - chmod +x ./cc-test-reporter - ./cc-test-reporter before-build --debug - GIT_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - GIT_COMMIT_SHA=$TRAVIS_PULL_REQUEST_SHA script: - docker run -it -d --rm --name tripal -v "$(pwd)":/modules/tripal_eutils statonlab/tripal3 - sleep 30 # We pause here while postgres and apache boot - docker exec -it tripal bash -c "cd /modules/ && git clone https://github.com/statonlab/tripal_manage_analyses.git && drush pm-enable -y tripal_manage_analyses" - docker exec -it tripal drush pm-enable -y tripal_eutils - docker exec -it tripal yum install -y php-pecl-xdebug.x86_64 - docker exec -it tripal bash -c "cd /modules/tripal_eutils && composer install && DRUPAL_ROOT=/var/www/html IS_TRAVIS=TRUE ./vendor/bin/phpunit --coverage-clover ./clover.xml" after_script: - ./cc-test-reporter after-build clover.xml --debug -t clover -p /var/www/html/sites/all/modules/custom/tripal_eutils --exit-code $TRAVIS_TEST_RESULT