@@ -14,60 +14,83 @@ concurrency:
1414 group : ${{ github.workflow }}-${{ github.ref }}
1515 cancel-in-progress : true
1616
17+ env :
18+ PHPCS_DEV : ' dev-master'
19+ UTILS_DEV : ' dev-develop'
20+ EXTRA_DEV : ' dev-develop'
21+
1722jobs :
1823 # Runs the test suite against all supported branches and combinations.
19- # Linting is performed on all jobs run against PHPCS `dev-master `.
24+ # Linting is performed on all jobs run with dependencies `stable `.
2025 test :
2126 runs-on : ubuntu-latest
2227 strategy :
2328 matrix :
2429 php : [ '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.4' ]
25- phpcs_version : [ 'lowest', 'dev-master ' ]
30+ dependencies : [ 'lowest', 'stable ' ]
2631 extensions : [ '' ]
2732 coverage : [false]
2833
2934 include :
3035 - php : ' 7.4'
31- phpcs_version : ' dev-master '
36+ dependencies : ' stable '
3237 extensions : ' :mbstring' # = Disable Mbstring.
3338 coverage : true # Make sure coverage is recorded for this too.
3439
3540 # Run code coverage builds against high/low PHP and high/low PHPCS.
3641 - php : ' 5.4'
37- phpcs_version : ' dev-master '
42+ dependencies : ' stable '
3843 extensions : ' '
3944 coverage : true
4045 - php : ' 5.4'
41- phpcs_version : ' lowest'
46+ dependencies : ' lowest'
4247 extensions : ' '
4348 coverage : true
4449 - php : ' 8.3'
45- phpcs_version : ' dev-master '
50+ dependencies : ' stable '
4651 extensions : ' '
4752 coverage : true
4853 - php : ' 8.3'
49- phpcs_version : ' lowest'
54+ dependencies : ' lowest'
5055 extensions : ' '
5156 coverage : true
5257
58+ # Test against dev versions of all dependencies with select PHP versions for early detection of issues.
59+ - php : ' 5.4'
60+ dependencies : ' dev'
61+ extensions : ' '
62+ coverage : false
63+ - php : ' 7.0'
64+ dependencies : ' dev'
65+ extensions : ' '
66+ coverage : false
67+ - php : ' 7.4'
68+ dependencies : ' dev'
69+ extensions : ' '
70+ coverage : false
71+ - php : ' 8.3'
72+ dependencies : ' dev'
73+ extensions : ' '
74+ coverage : false
75+
5376 # Add extra build to test against PHPCS 4.
5477 # - php: '7.4'
55- # phpcs_version : '4.0.x-dev as 3.9.99'
78+ # dependencies : '4.0.x-dev as 3.9.99'
5679
57- name : PHP ${{ matrix.php }} on PHPCS ${{ matrix.phpcs_version }}
80+ name : PHP ${{ matrix.php }} on PHPCS ${{ matrix.dependencies }}
5881
5982 continue-on-error : ${{ matrix.php == '8.4' }}
6083
6184 steps :
6285 - name : Checkout repository
6386 uses : actions/checkout@v4
6487
65- # On stable PHPCS versions , allow for PHP deprecation notices.
88+ # With stable PHPCS dependencies , allow for PHP deprecation notices.
6689 # Unit tests don't need to fail on those for stable releases where those issues won't get fixed anymore.
6790 - name : Setup ini config
6891 id : set_ini
6992 run : |
70- if [ "${{ matrix.phpcs_version }}" != "dev-master " ]; then
93+ if [ "${{ matrix.dependencies }}" != "dev" ]; then
7194 echo 'PHP_INI=error_reporting=E_ALL & ~E_DEPRECATED, display_errors=On' >> $GITHUB_OUTPUT
7295 else
7396 echo 'PHP_INI=error_reporting=-1, display_errors=On' >> $GITHUB_OUTPUT
@@ -81,22 +104,30 @@ jobs:
81104 coverage : ${{ matrix.coverage && 'xdebug' || 'none' }}
82105 tools : cs2pr
83106
84- - name : " Set PHPCS version (master)"
85- if : ${{ matrix.phpcs_version != 'lowest' }}
86- run : composer require squizlabs/php_codesniffer:"${{ matrix.phpcs_version }}" --no-update --no-scripts --no-interaction
107+ - name : " Composer: set PHPCS dependencies for tests (dev)"
108+ if : ${{ matrix.dependencies == 'dev' }}
109+ run : >
110+ composer require --no-update --no-scripts --no-interaction
111+ squizlabs/php_codesniffer:"${{ env.PHPCS_DEV }}"
112+ phpcsstandards/phpcsutils:"${{ env.UTILS_DEV }}"
113+ phpcsstandards/phpcsextra:"${{ env.EXTRA_DEV }}"
87114
88115 - name : Install Composer dependencies
89116 uses : ramsey/composer-install@v2
90117 with :
91118 # Bust the cache at least once a month - output format: YYYY-MM.
92119 custom-cache-suffix : $(date -u "+%Y-%m")
93120
94- - name : " Set PHPCS version (lowest)"
95- if : ${{ matrix.phpcs_version == 'lowest' }}
96- run : composer update squizlabs/php_codesniffer --prefer-lowest --ignore-platform-req=php+ --no-scripts --no-interaction
121+ - name : " Composer: downgrade PHPCS dependencies for tests (lowest)"
122+ if : ${{ ! startsWith( matrix.php, '8' ) && matrix.dependencies == 'lowest' }}
123+ run : >
124+ composer update --prefer-lowest --no-scripts --no-interaction
125+ squizlabs/php_codesniffer
126+ phpcsstandards/phpcsutils
127+ phpcsstandards/phpcsextra
97128
98129 - name : Lint PHP files against parse errors
99- if : ${{ matrix.phpcs_version == 'dev-master ' }}
130+ if : ${{ matrix.dependencies == 'stable ' }}
100131 run : composer lint -- --checkstyle | cs2pr
101132
102133 - name : Run the unit tests without code coverage
0 commit comments