がんばるぞ

がんばります

Circle CIでIlluminate\Contracts\Container\BindingResolutionExceptionが発生する

Circle CIで、全てのテストが通っているのにCIが落ちるエラーが発生しました。

#!/bin/bash -eo pipefail
./vendor/bin/phpunit

PHPUnit Pretty Result Printer 0.25.1 by Codedungeon and contributors.

PHPUnit 7.5.7 by Sebastian Bergmann and contributors.

/* 省略 */

Time: 6.08 seconds, Memory: 36.00 MB

OK (155 tests, 234 assertions)

Fatal error: Uncaught Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. in /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 962

Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. in /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 962

Call Stack:
6.0873   36298904   1. Illuminate\Foundation\Bootstrap\HandleExceptions->handleException() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:0
6.0878   36328616   2. Illuminate\Foundation\Bootstrap\HandleExceptions->renderForConsole() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:87
6.0878   36328616   3. Illuminate\Foundation\Bootstrap\HandleExceptions->getExceptionHandler() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:101
6.0878   36328616   4. Illuminate\Foundation\Application->make() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:159
6.0878   36328616   5. Illuminate\Foundation\Application->make() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:757
6.0878   36328616   6. Illuminate\Foundation\Application->resolve() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Container/Container.php:619
6.0878   36328616   7. Illuminate\Foundation\Application->build() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Container/Container.php:671
6.0878   36328728   8. Illuminate\Foundation\Application->notInstantiable() /home/circleci/lec/vendor/laravel/framework/src/Illuminate/Container/Container.php:800

調べてみると、どうやらcodedungeon/phpunit-result-printerのAnyBarなるものがenableになっていると発生するエラーのようでした。 参考

なので、laravelのルートディレクトリにphpunit-printer.ymlを作成し

options:
  cd-printer-hide-class: false
  cd-printer-simple-output: false
  cd-printer-show-config: true
  cd-printer-hide-namespace: false
  cd-printer-anybar: false
  cd-printer-anybar-port: 1738
markers:
  cd-pass: "✓ "
  cd-fail: "✖ "
  cd-error: "⚈ "
  cd-skipped: "→ "
  cd-incomplete: "∅ "
  cd-risky: "⌽ "

のようにすることで解決しました