part_test.yml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. on:
  2. workflow_call:
  3. name: "Test"
  4. permissions:
  5. contents: read
  6. jobs:
  7. phpunit:
  8. name: PHPUnit (PHP ${{ matrix.php }} on ${{ matrix.os }})
  9. runs-on: ${{ matrix.os }}
  10. continue-on-error: ${{ matrix.experimental }}
  11. strategy:
  12. fail-fast: false
  13. matrix:
  14. php: ["8.1", "8.2", "8.3"]
  15. os: [ubuntu-latest]
  16. experimental: [false]
  17. include:
  18. - php: nightly
  19. os: ubuntu-latest
  20. experimental: true
  21. - php: "8.3"
  22. os: windows-latest
  23. experimental: false
  24. - php: "8.3"
  25. os: macos-latest
  26. experimental: false
  27. steps:
  28. - name: Harden Runner
  29. uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
  30. with:
  31. egress-policy: audit
  32. - name: Checkout Code
  33. uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
  34. - name: SetUp PHP
  35. id: setup-php
  36. uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2
  37. with:
  38. php-version: "${{ matrix.php }}"
  39. tools: phpunit
  40. coverage: xdebug
  41. extensions: xdebug,zip
  42. - name: Get composer cache directory
  43. id: composer-cache-common
  44. if: "${{ runner.os != 'Windows' }}"
  45. run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
  46. - name: Get composer cache directory
  47. id: composer-cache-windows
  48. if: "${{ runner.os == 'Windows' }}"
  49. run: echo "dir=$(composer config cache-files-dir)" >> $env:GITHUB_OUTPUT
  50. - name: Cache Deps
  51. uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1
  52. id: cache
  53. with:
  54. path: ${{ steps.composer-cache-common.outputs.dir }}${{ steps.composer-cache-windows.outputs.dir }}
  55. key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
  56. restore-keys: |
  57. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
  58. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
  59. deps-${{ steps.setup-php.outputs.php-version }}-
  60. deps-
  61. - name: Install Deps
  62. if: matrix.php != 'nightly'
  63. run: composer install --prefer-dist
  64. - name: Install Deps (ignore PHP requirement)
  65. if: matrix.php == 'nightly'
  66. run: composer install --prefer-dist --ignore-platform-req=php+
  67. - name: Run PHPUnit
  68. run: composer run test:unit
  69. env:
  70. XDEBUG_MODE: coverage
  71. - name: Upload coverage results to Coveralls
  72. env:
  73. COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  74. COVERALLS_PARALLEL: true
  75. COVERALLS_FLAG_NAME: ${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}
  76. run: composer run coverage:report
  77. continue-on-error: ${{ matrix.experimental }}
  78. mark_coverage_done:
  79. needs: ["phpunit"]
  80. runs-on: ubuntu-latest
  81. steps:
  82. - name: Harden Runner
  83. uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
  84. with:
  85. egress-policy: audit
  86. - name: Coveralls Finished
  87. uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0
  88. with:
  89. github-token: ${{ secrets.github_token }}
  90. parallel-finished: true
  91. psalm:
  92. name: Run Psalm
  93. runs-on: "ubuntu-latest"
  94. permissions:
  95. security-events: write
  96. steps:
  97. - name: Harden Runner
  98. uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
  99. with:
  100. egress-policy: audit
  101. - name: Checkout Code
  102. uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
  103. - name: SetUp PHP
  104. id: setup-php
  105. uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2
  106. with:
  107. php-version: "8.3"
  108. - name: Get composer cache directory
  109. id: composer-cache
  110. run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
  111. - name: Cache Deps
  112. uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1
  113. id: cache
  114. with:
  115. path: ${{ steps.composer-cache.outputs.dir }}
  116. key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
  117. restore-keys: |
  118. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
  119. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
  120. deps-${{ steps.setup-php.outputs.php-version }}-
  121. deps-
  122. - name: Install Deps
  123. run: composer install --prefer-dist
  124. - name: Run Psalm
  125. run: composer run test:lint -- --report=results.sarif
  126. - name: "Upload SARIF"
  127. uses: github/codeql-action/upload-sarif@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3
  128. with:
  129. sarif_file: results.sarif
  130. php-cs:
  131. name: Run PHP-CS
  132. runs-on: "ubuntu-latest"
  133. steps:
  134. - name: Harden Runner
  135. uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
  136. with:
  137. egress-policy: audit
  138. - name: Checkout Code
  139. uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
  140. - name: SetUp PHP
  141. id: setup-php
  142. uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2
  143. with:
  144. php-version: "8.3"
  145. - name: Get composer cache directory
  146. id: composer-cache
  147. run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
  148. - name: Cache Deps
  149. uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1
  150. id: cache
  151. with:
  152. path: ${{ steps.composer-cache.outputs.dir }}
  153. key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
  154. restore-keys: |
  155. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
  156. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
  157. deps-${{ steps.setup-php.outputs.php-version }}-
  158. deps-
  159. - name: Install Deps
  160. run: composer install --prefer-dist
  161. - name: Run PHP-CS
  162. run: composer run test:formatted