Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHPUnit "Could not read phpunit.xml" on Travis CI

I am encountering a strange issue while trying to run PHP unit tests on Travis CI.

.travis.yml

sudo: false
language: php
php:
  - 5.4

env:
  - VUFIND_HOME=$PWD VUFIND_LOCAL_DIR=$PWD/local

before_script:
  - pear install pear/PHP_CodeSniffer
  - pear channel-discover pear.phing.info
  - pear install phing/phing
  - composer global require fabpot/php-cs-fixer
  - export PATH="$HOME/.composer/vendor/bin:$PATH"
  - phpenv rehash

script:
  - phpunit --stderr --configuration module/VuFind/tests/phpunit.xml
  - phpunit --stderr --configuration module/Swissbib/tests/phpunit.xml
  - phpcs --standard=PEAR --ignore=*/config/*,*/tests/* --extensions=php $PWD/module
  - phing php-cs-fixer-dryrun

module/VuFind/tests/phpunit.xml is a third party framework

module/Swissbib/tests/phpunit.xml is our own code

module/Swissbib/tests/phpunit.xml

<phpunit bootstrap="Bootstrap.php">
    <testsuites>
        <testsuite name="sbvfrd">
            <directory>.</directory>
        </testsuite>
    </testsuites>
</phpunit>

The tests from the third party framework run without errors. Our own tests do not work and we get the error message:

$ phpunit --stderr --configuration module/Swissbib/tests/phpunit.xml
Could not read "module/Swissbib/tests/phpunit.xml".

Locally (Mac OS X) all the tests run through. Strangely enough the Bootstrap.php defined in module/Swissbib/tests/phpunit.xml runs completely through on Travis CI, I verified this using echo statements. Nevertheless phpunit tells us that it could not read phpunit.xml.

Travis: https://travis-ci.org/swissbib/vufind

Repo: https://github.com/swissbib/vufind (development branch)

Any ideas what could be going wrong?

like image 818
maechler Avatar asked Aug 28 '15 15:08

maechler


1 Answers

I found the solution by downloading the phpunit source and debugging with it.

We were changing the directory within the Bootstrap.php file to a different location then the phpunit command was run from. We run the phpunit command from our project root folder and then changed the working directory to the tests folder, because we were using relative paths. I changed everything to absolute paths (using __DIR__) so we do not have to change the working directory anymore.

Bottom line: Do not change the directory in the bootstrap file as it causes phpunit to fail with this error message: Could not read phpunit.xml.

like image 104
maechler Avatar answered Sep 19 '22 08:09

maechler