Покрытие кода всегда неизвестно в GitLab - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь понять конвейеры GitLab, и после нескольких попыток я смог успешно автоматизировать свои юнит-тесты. Сейчас я пытаюсь добавить значок покрытия кода в свой проект и / или файл readme, но всегда кажется, что он показывает unknown.

Файлы:

+ application
+ system
- unit-tests
  - tests
      UtilTest.php
    autoload.php
    phpunit
  .gitignore
  .gitlab-ci.yml
  .htaccess
  index.php
  readme.md

.gitlab-ci.yml:

image: php:5.6

stages:
  - test

app:unit-tests:
  stage: test
  script:
    - php ./unit-tests/phpunit --bootstrap ./unit-tests/autoload.php ./unit-tests/tests
  coverage: '/Code Coverage: \d+\.\d+/'

В разделе Test coverage parsing проекта у меня есть эта настройка: enter image description here

Дайте мне знать, если вам нужна дополнительная информация, и я добавлю ее. Я благодарен за любую помощь, спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Так что я смог это исправить, используя PHP 7.2 в качестве образа Docker и установив xdebug на вызов before_script.

.gitlab-ci.yml:

image: php:7.2

stages:
  - test

before_script:
  - pecl install xdebug
  - docker-php-ext-enable xdebug

app:unit-tests:
  stage: test
  script:
  - php ./unit-tests/phpunit --bootstrap ./unit-tests/autoload.php ./unit-tests/tests --coverage-text --colors=never
  coverage: '/^\s*Lines:\s*\d+.\d+\%/'

Мне пришлось использовать PHP 7.2, потому что, когда я пытался запустить pecl install xdebug, он сказал, что для этого требуется PHP 7. В идеале я хотел бы использовать PHP 5.6, потому что это то, что есть у нашего текущего сервера, так что тесты на похожих версиях, но я оставлю все как есть.

Мне пришлось добавить --coverage-text --colors=never к вызову script, чтобы он выводил числа. Затем при вызове coverage я изменил его на '/^\s*Lines:\s*\d+.\d+\%/', который я также использовал в разделе Test coverage parsing в настройках проекта.

А теперь покрытие кода правильно показывает мои ожидаемые значения.

...