part_test.yml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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.2", "8.3", "8.4"]
  15. os: [ubuntu-latest]
  16. experimental: [false]
  17. include:
  18. - php: nightly
  19. os: ubuntu-latest
  20. experimental: true
  21. - php: "8.4"
  22. os: windows-latest
  23. experimental: false
  24. - php: "8.4"
  25. os: macos-latest
  26. experimental: false
  27. steps:
  28. - name: Harden Runner
  29. uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
  30. with:
  31. egress-policy: audit
  32. - name: Checkout Code
  33. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
  34. - name: SetUp PHP
  35. id: setup-php
  36. uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # 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@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
  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:cov
  69. - name: Upload coverage results to Coveralls
  70. env:
  71. COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  72. COVERALLS_PARALLEL: true
  73. COVERALLS_FLAG_NAME: ${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}
  74. run: composer run coverage:report
  75. continue-on-error: ${{ matrix.experimental }}
  76. mark_coverage_done:
  77. needs: ["phpunit"]
  78. runs-on: ubuntu-latest
  79. steps:
  80. - name: Harden Runner
  81. uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
  82. with:
  83. egress-policy: audit
  84. - name: Coveralls Finished
  85. uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
  86. with:
  87. github-token: ${{ secrets.github_token }}
  88. parallel-finished: true
  89. psalm:
  90. name: Run Psalm
  91. runs-on: "ubuntu-latest"
  92. permissions:
  93. security-events: write
  94. steps:
  95. - name: Harden Runner
  96. uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
  97. with:
  98. egress-policy: audit
  99. - name: Checkout Code
  100. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
  101. - name: SetUp PHP
  102. id: setup-php
  103. uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
  104. with:
  105. php-version: "8.3"
  106. - name: Get composer cache directory
  107. id: composer-cache
  108. run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
  109. - name: Cache Deps
  110. uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
  111. id: cache
  112. with:
  113. path: ${{ steps.composer-cache.outputs.dir }}
  114. key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
  115. restore-keys: |
  116. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
  117. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
  118. deps-${{ steps.setup-php.outputs.php-version }}-
  119. deps-
  120. - name: Install Deps
  121. run: composer install --prefer-dist
  122. - name: Run Psalm
  123. run: composer run test:lint -- --report=results.sarif
  124. - name: "Upload SARIF"
  125. uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3
  126. with:
  127. sarif_file: results.sarif
  128. php-cs:
  129. name: Run PHP-CS
  130. runs-on: "ubuntu-latest"
  131. steps:
  132. - name: Harden Runner
  133. uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
  134. with:
  135. egress-policy: audit
  136. - name: Checkout Code
  137. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
  138. - name: SetUp PHP
  139. id: setup-php
  140. uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 # v2
  141. with:
  142. php-version: "8.3"
  143. - name: Get composer cache directory
  144. id: composer-cache
  145. run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
  146. - name: Cache Deps
  147. uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
  148. id: cache
  149. with:
  150. path: ${{ steps.composer-cache.outputs.dir }}
  151. key: deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-${{ hashFiles('**/composer.lock') }}
  152. restore-keys: |
  153. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-composer-
  154. deps-${{ runner.os }}-${{ steps.setup-php.outputs.php-version }}-
  155. deps-${{ steps.setup-php.outputs.php-version }}-
  156. deps-
  157. - name: Install Deps
  158. run: composer install --prefer-dist
  159. - name: Run PHP-CS
  160. run: composer run test:formatted