diff --git a/.atoum.php b/.atoum.php index 44df5be..77c3241 100644 --- a/.atoum.php +++ b/.atoum.php @@ -34,19 +34,45 @@ * POSSIBILITY OF SUCH DAMAGE. */ +use Atoum\PraspelExtension\Manifest; +use mageekguy\atoum\observable; +use mageekguy\atoum\observer; +use mageekguy\atoum\runner; +use mageekguy\atoum\test; use mageekguy\atoum\visibility; -if (getenv('TRAVIS_PHP_VERSION') === '7.0') { - $script - ->php('php -n -ddate.timezone=Europe/Paris') - ->noCodeCoverage() - ; -} else { - $script->noCodeCoverageForNamespaces('Composer'); +class WorkaroundForNonZeroExitCodeOnFailure implements observer +{ + private $isLastObserver = false; + + private $failed = false; + + public function handleEvent($event, observable $observable) + { + if ($this->isLastObserver === false && $observable instanceof runner && $event === runner::runStart) { + $observable->removeObserver($this)->addObserver($this); + $this->isLastObserver = true; + } + if (class_exists(test::class, false) && in_array($event, [test::fail, test::error, test::exception, test::runtimeException], true)) { + $this->failed = true; + } + if ($observable instanceof runner && $event === runner::runStop) { + if ($this->failed) { + throw new RuntimeException('Atoum failed!', 1); + } + } + } } +/** + * @var mageekguy\atoum\configurator $script + * @var mageekguy\atoum\runner $runner + */ +$script->noCodeCoverageForNamespaces('Composer'); + $script->addTestsFromDirectory(__DIR__ . '/tests/units'); $runner - ->addExtension(new \Atoum\PraspelExtension\Manifest()) + ->addExtension(new Manifest()) ->addExtension(new visibility\extension($script)) + ->addObserver(new WorkaroundForNonZeroExitCodeOnFailure()) ; diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c1e9efa..82fc372 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,7 +44,7 @@ jobs: if: matrix.os == 'ubuntu-latest' && matrix.php-version == '7.2' run: composer run cs-check -- --using-cache=no --no-interaction - name: Run Atoum - run: php ./vendor/atoum/atoum/scripts/coverage.php --format xml --output clover.xml + run: php ./vendor/atoum/atoum/scripts/coverage.php --format xml --output clover.xml --force-terminal - name: Install Composer dependencies (excluding dev) run: composer install --prefer-source --optimize-autoloader --ansi --no-interaction --no-dev - name: Install Box