ci.yml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. name: CI
  2. on:
  3. - push
  4. - pull_request
  5. jobs:
  6. test:
  7. runs-on: ubuntu-latest
  8. strategy:
  9. matrix:
  10. php-version:
  11. - '7.2'
  12. - "7.3"
  13. - "7.4"
  14. - "8.0"
  15. name: PHP ${{ matrix.php-version }}
  16. steps:
  17. - name: Checkout
  18. uses: actions/checkout@v2
  19. - name: Setup PHP, with composer and extensions
  20. uses: shivammathur/setup-php@v2
  21. with:
  22. php-version: ${{ matrix.php-version }}
  23. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  24. coverage: none
  25. - name: Get composer cache directory
  26. id: composer-cache
  27. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  28. - name: Cache composer dependencies
  29. uses: actions/cache@v2
  30. with:
  31. path: ${{ steps.composer-cache.outputs.dir }}
  32. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  33. restore-keys: ${{ runner.os }}-composer-
  34. - name: Update PHPUnit version for PHP 8
  35. id: composer-lock
  36. if: "startsWith(matrix.php-version, '8.')"
  37. run: |
  38. rm -f composer.lock
  39. echo "::set-output name=flags::--ignore-platform-reqs"
  40. composer remove phpunit/phpunit --dev --no-update --no-interaction
  41. composer require phpunit/phpunit ^8.0 --dev --no-update
  42. - name: Install dependencies
  43. run: composer update --no-progress --prefer-dist --optimize-autoloader ${{ steps.composer-lock.outputs.flags }}
  44. - name: Update code to make PHPUnit 8 compatible
  45. if: "startsWith(matrix.php-version, '8.')"
  46. run: |
  47. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/function setUpBeforeClass()$/function setUpBeforeClass(): void/' {} \;
  48. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/function tearDownAfterClass()$/function tearDownAfterClass(): void/' {} \;
  49. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/function setUp()$/function setUp(): void/' {} \;
  50. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/function tearDown()$/function tearDown(): void/' {} \;
  51. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/->assertContains(/->assertStringContainsString(/' {} \;
  52. find ./tests/ -name "*.php" -type f -exec sed -i -e 's/->assertNotContains(/->assertStringNotContainsString(/' {} \;
  53. find ./tests/ -name "*.php" -type f -exec sed -i -e "s/->assertInternalType('array', /->assertIsArray(/" {} \;
  54. sed -i "s/\$this->addWarning('The @expectedException,/\/\/\$this->addWarning('The @expectedException,/" ./vendor/phpunit/phpunit/src/Framework/TestCase.php
  55. sed -i "s/self::createWarning('The optional \$delta/\/\/self::createWarning('The optional \$delta/" ./vendor/phpunit/phpunit/src/Framework/Assert.php
  56. - name: Setup problem matchers for PHP
  57. run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
  58. - name: Setup problem matchers for PHPUnit
  59. run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
  60. - name: Configure matchers
  61. uses: mheap/phpunit-matcher-action@v1
  62. - name: Test with PHPUnit
  63. run: ./vendor/bin/phpunit --teamcity --no-coverage -c ./
  64. php-cs-fixer:
  65. runs-on: ubuntu-latest
  66. steps:
  67. - name: Checkout
  68. uses: actions/checkout@v2
  69. - name: Setup PHP, with composer and extensions
  70. uses: shivammathur/setup-php@v2
  71. with:
  72. php-version: 7.4
  73. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  74. coverage: none
  75. tools: cs2pr
  76. - name: Get composer cache directory
  77. id: composer-cache
  78. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  79. - name: Cache composer dependencies
  80. uses: actions/cache@v2
  81. with:
  82. path: ${{ steps.composer-cache.outputs.dir }}
  83. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  84. restore-keys: ${{ runner.os }}-composer-
  85. - name: Install dependencies
  86. run: composer install --no-progress --prefer-dist --optimize-autoloader
  87. - name: Code style with PHP-CS-Fixer
  88. run: ./vendor/bin/php-cs-fixer fix --dry-run --show-progress=none --using-cache=no -v --format=checkstyle | cs2pr
  89. phpcs:
  90. runs-on: ubuntu-latest
  91. steps:
  92. - name: Checkout
  93. uses: actions/checkout@v2
  94. - name: Setup PHP, with composer and extensions
  95. uses: shivammathur/setup-php@v2
  96. with:
  97. php-version: 7.4
  98. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  99. coverage: none
  100. tools: cs2pr
  101. - name: Get composer cache directory
  102. id: composer-cache
  103. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  104. - name: Cache composer dependencies
  105. uses: actions/cache@v2
  106. with:
  107. path: ${{ steps.composer-cache.outputs.dir }}
  108. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  109. restore-keys: ${{ runner.os }}-composer-
  110. - name: Install dependencies
  111. run: composer install --no-progress --prefer-dist --optimize-autoloader
  112. - name: Code style with PHP_CodeSniffer
  113. run: ./vendor/bin/phpcs src/ tests/ --standard=PSR2 -n --ignore=src/PhpWord/Shared/PCLZip --report=checkstyle | cs2pr
  114. coverage:
  115. runs-on: ubuntu-latest
  116. steps:
  117. - name: Checkout
  118. uses: actions/checkout@v2
  119. - name: Setup PHP, with composer and extensions
  120. uses: shivammathur/setup-php@v2
  121. with:
  122. php-version: 7.4
  123. extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
  124. coverage: xdebug
  125. - name: Get composer cache directory
  126. id: composer-cache
  127. run: echo "::set-output name=dir::$(composer config cache-files-dir)"
  128. - name: Cache composer dependencies
  129. uses: actions/cache@v2
  130. with:
  131. path: ${{ steps.composer-cache.outputs.dir }}
  132. key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
  133. restore-keys: ${{ runner.os }}-composer-
  134. - name: Install dependencies
  135. run: composer install --no-progress --prefer-dist --optimize-autoloader
  136. - name: Coverage
  137. run: |
  138. ./vendor/bin/phpunit --coverage-clover coverage-clover.xml
  139. curl -LO https://scrutinizer-ci.com/ocular.phar
  140. php ocular.phar code-coverage:upload --format=php-clover coverage-clover.xml