Changeset 50603 for branches/5.5
- Timestamp:
- 03/26/2021 05:47:03 PM (3 years ago)
- Location:
- branches/5.5
- Files:
-
- 2 added
- 3 deleted
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.5
-
branches/5.5/.github/workflows/coding-standards.yml
r50302 r50603 2 2 3 3 on: 4 # JSHint was introduced in WordPress 3.8. 5 # PHPCS checking was introduced in WordPress 5.1. 4 6 push: 5 7 branches: 6 8 - master 7 # JSHint was introduced in WordPress 3.8. 8 # PHPCS checking was introduced in WordPress 5.1. 9 - trunk 9 10 - '3.[89]' 10 11 - '[4-9].[0-9]' … … 13 14 - '[4-9].[0-9]*' 14 15 pull_request: 16 branches: 17 - master 18 - trunk 19 - '3.[89]' 20 - '[4-9].[0-9]' 21 paths: 22 # Any change to a PHP or JavaScript file should run checks. 23 - '**.js' 24 - '**.php' 25 # These files configure NPM. Changes could affect the outcome. 26 - 'package*.json' 27 # These files configure Composer. Changes could affect the outcome. 28 - 'composer.*' 29 # This file configures JSHint. Changes could affect the outcome. 30 - '.jshintrc' 31 # This file configures PHPCS. Changes could affect the outcome. 32 - 'phpcs.xml.dist' 33 # Changes to workflow files should always verify all workflows are successful. 34 - '.github/workflows/*.yml' 35 workflow_dispatch: 15 36 16 37 jobs: … … 36 57 steps: 37 58 - name: Checkout repository 38 uses: actions/checkout@ v259 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 39 60 40 61 - name: Set up PHP 41 uses: shivammathur/setup-php@ v262 uses: shivammathur/setup-php@afefcaf556d98dc7896cca380e181decb609ca44 # v2.10.0 42 63 with: 43 64 php-version: '7.4' … … 51 72 52 73 - name: Install Composer dependencies 53 uses: ramsey/composer-install@ v174 uses: ramsey/composer-install@92a7904348d4ad30236f3611e33b7f0c6f9edd70 # v1.1.0 54 75 with: 55 76 composer-options: "--no-progress --no-ansi --no-interaction" … … 89 110 steps: 90 111 - name: Checkout repository 91 uses: actions/checkout@ v2112 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 92 113 93 114 - name: Log debug information … … 99 120 100 121 - name: Install NodeJS 101 uses: actions/setup-node@ v1122 uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5 102 123 with: 103 124 node-version: 14 104 125 105 126 - name: Cache NodeJS modules 106 uses: actions/cache@ v2127 uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4 107 128 env: 108 129 cache-name: cache-node-modules … … 111 132 path: ~/.npm 112 133 key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} 113 restore-keys: |114 ${{ runner.os }}-npm-115 134 116 135 - name: Log debug information … … 120 139 121 140 - name: Install Dependencies 122 run: np x install-changed --install-command="npm ci"141 run: npm ci 123 142 124 143 - name: Run JSHint -
branches/5.5/.github/workflows/javascript-tests.yml
r50302 r50603 2 2 3 3 on: 4 # JavaScript testing was introduced in WordPress 3.8. 4 5 push: 5 6 branches: 6 7 - master 7 # JavaScript testing was introduced in WordPress 3.8.8 - trunk 8 9 - '3.[89]' 9 10 - '[4-9].[0-9]' … … 12 13 - '[4-9].[0-9]*' 13 14 pull_request: 15 branches: 16 - master 17 - trunk 18 - '3.[89]' 19 - '[4-9].[0-9]' 20 paths: 21 # Any change to a JavaScript file should run tests. 22 - '**.js' 23 # These files configure NPM. Changes could affect the outcome. 24 - 'package*.json' 25 # This file configures ESLint. Changes could affect the outcome. 26 - '.eslintignore' 27 # This file configures JSHint. Changes could affect the outcome. 28 - '.jshintrc' 29 # Any change to the QUnit directory should run tests. 30 - 'tests/qunit/**' 31 # Changes to workflow files should always verify all workflows are successful. 32 - '.github/workflows/*.yml' 33 workflow_dispatch: 14 34 15 35 jobs: … … 34 54 - name: Cancel previous runs of this workflow (pull requests only) 35 55 if: ${{ github.event_name == 'pull_request' }} 36 uses: styfle/cancel-workflow-action@0.5.0 37 with: 38 access_token: ${{ github.token }} 56 uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0 39 57 40 58 - name: Checkout repository 41 uses: actions/checkout@ v259 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 42 60 43 61 - name: Log debug information … … 49 67 50 68 - name: Install NodeJS 51 uses: actions/setup-node@ v169 uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5 52 70 with: 53 71 node-version: 14 54 72 55 73 - name: Cache NodeJS modules 56 uses: actions/cache@ v274 uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4 57 75 env: 58 76 cache-name: cache-node-modules … … 61 79 path: ~/.npm 62 80 key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} 63 restore-keys: |64 ${{ runner.os }}-npm-65 81 66 82 - name: Log debug information … … 70 86 71 87 - name: Install Dependencies 72 run: np x install-changed --install-command="npm ci"88 run: npm ci 73 89 74 90 - name: Run QUnit tests -
branches/5.5/.github/workflows/php-compatibility.yml
r50302 r50603 2 2 3 3 on: 4 # PHP compatibility testing was introduced in WordPress 5.5. 4 5 push: 5 6 branches: 6 7 - master 7 # The PHP compatibility testing was introduced in WordPress 5.5.8 - trunk 8 9 - '5.[5-9]' 9 10 - '[6-9].[0-9]' … … 12 13 - '[6-9].[0-9]*' 13 14 pull_request: 15 branches: 16 - master 17 - trunk 18 - '5.[5-9]' 19 - '[6-9].[0-9]' 20 paths: 21 # This workflow only scans PHP files. 22 - '**.php' 23 # These files configure Composer. Changes could affect the outcome. 24 - 'composer.*' 25 # This file configures PHP Compatibility scanning. Changes could affect the outcome. 26 - 'phpcompat.xml.dist' 27 # Changes to workflow files should always verify all workflows are successful. 28 - '.github/workflows/*.yml' 29 workflow_dispatch: 14 30 15 31 jobs: … … 35 51 steps: 36 52 - name: Checkout repository 37 uses: actions/checkout@ v253 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 38 54 39 55 - name: Set up PHP 40 uses: shivammathur/setup-php@ v256 uses: shivammathur/setup-php@afefcaf556d98dc7896cca380e181decb609ca44 # v2.10.0 41 57 with: 42 58 php-version: '7.4' … … 50 66 51 67 - name: Install Composer dependencies 52 uses: ramsey/composer-install@ v168 uses: ramsey/composer-install@92a7904348d4ad30236f3611e33b7f0c6f9edd70 # v1.1.0 53 69 with: 54 70 composer-options: "--no-progress --no-ansi --no-interaction" -
branches/5.5/.github/workflows/phpunit-tests.yml
r50302 r50603 5 5 branches: 6 6 - master 7 - trunk 7 8 - '3.[7-9]' 8 9 - '[4-9].[0-9]' … … 11 12 - '[4-9].[0-9]*' 12 13 pull_request: 14 branches: 15 - master 16 - trunk 17 - '3.[7-9]' 18 - '[4-9].[0-9]' 19 workflow_dispatch: 13 20 # Once weekly On Sundays at 00:00 UTC. 14 21 schedule: … … 16 23 17 24 env: 18 LOCAL_DIR: build19 25 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }} 20 26 COMPOSER_INSTALL: ${{ false }} … … 22 28 PHPUNIT_SCRIPT: php 23 29 LOCAL_PHP_MEMCACHED: ${{ false }} 30 SLOW_TESTS: 'external-http,media,restapi' 24 31 25 32 jobs: 26 # Sets up WordPress for testing or development use.33 # Sets up the workflow for testing. 27 34 # 28 35 # Performs the following steps: 29 36 # - Cancels all previous workflow runs for pull requests that have not completed. 30 # - Checks out the repository. 31 # - Logs debug information about the runner container. 32 # - Installs NodeJS 14. 33 # - Sets up caching for NPM. 34 # _ Installs NPM dependencies using install-changed to hash the `package.json` file. 35 # - Builds WordPress to run from the `build` directory. 36 # - Creates a ZIP file of compiled WordPress. 37 # - Uploads ZIP file as an artifact. 38 setup-wordpress: 39 name: Setup WordPress 37 setup-workflow: 38 name: Setup Workflow 40 39 runs-on: ubuntu-latest 41 40 if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} … … 44 43 - name: Cancel previous runs of this workflow (pull requests only) 45 44 if: ${{ github.event_name == 'pull_request' }} 46 uses: styfle/cancel-workflow-action@0.5.0 47 with: 48 access_token: ${{ github.token }} 49 50 - name: Checkout repository 51 uses: actions/checkout@v2 52 53 - name: Log debug information 54 run: | 55 echo "$GITHUB_REF" 56 echo "$GITHUB_EVENT_NAME" 57 npm --version 58 node --version 59 curl --version 60 git --version 61 svn --version 62 php --version 63 php -i 64 locale -a 65 66 - name: Install NodeJS 67 uses: actions/setup-node@v1 68 with: 69 node-version: 14 70 71 - name: Cache NodeJS modules 72 uses: actions/cache@v2 73 env: 74 cache-name: cache-node-modules 75 with: 76 # npm cache files are stored in `~/.npm` on Linux/macOS 77 path: ~/.npm 78 key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} 79 restore-keys: | 80 ${{ runner.os }}-npm- 81 82 - name: Install Dependencies 83 run: npx install-changed --install-command="npm ci" 84 85 - name: Build WordPress 86 run: npm run build 87 88 - name: Create ZIP artifact 89 uses: thedoctor0/zip-release@0.4.1 90 with: 91 filename: built-wp-${{ github.sha }}.zip 92 exclusions: '*.git* /*node_modules/* packagehash.txt' 93 94 - name: Upload build artifact 95 uses: actions/upload-artifact@v2 96 with: 97 name: built-wp-${{ github.sha }} 98 path: built-wp-${{ github.sha }}.zip 99 if-no-files-found: error 45 uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0 100 46 101 47 # Runs the PHPUnit tests for WordPress. … … 104 50 # - Set environment variables. 105 51 # - Sets up the environment variables needed for testing with memcached (if desired). 106 # - Downloads the built WordPress artifact from the previous job.107 # - Unzips the artifact.108 52 # - Installs NodeJS 14. 109 53 # - Sets up caching for NPM. 110 # _ Installs NPM dependencies using install-changed to hash the `package.json` file.54 # - Installs NPM dependencies 111 55 # - Configures caching for Composer. 112 # _Installs Composer dependencies (if desired).56 # - Installs Composer dependencies (if desired). 113 57 # - Logs Docker debug information (about both the Docker installation within the runner). 114 58 # - Starts the WordPress Docker container. … … 125 69 # - todo: Configure Slack notifications for failing tests. 126 70 test-php: 127 name: ${{ matrix.php }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }} 128 needs: setup-wordpress 71 name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.split_slow && ' slow tests' || '' }} ${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }} 129 72 runs-on: ${{ matrix.os }} 130 73 strategy: 74 fail-fast: false 131 75 matrix: 132 php: [ ' 7.4', '7.3', '7.2', '7.1', '7.0', '5.6' ]76 php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4' ] 133 77 os: [ ubuntu-latest ] 134 78 memcached: [ false ] 79 split_slow: [ false ] 80 multisite: [ false, true ] 135 81 include: 136 # Include job for PHP 7.4 with memcached. 82 # Additional "slow" jobs for PHP 5.6. 83 - php: '5.6.20' 84 os: ubuntu-latest 85 memcached: false 86 multisite: false 87 split_slow: true 88 - php: '5.6.20' 89 os: ubuntu-latest 90 memcached: false 91 multisite: true 92 split_slow: true 93 # Include jobs for PHP 7.4 with memcached. 137 94 - php: '7.4' 138 95 os: ubuntu-latest 139 96 memcached: true 97 multisite: false 98 - php: '7.4' 99 os: ubuntu-latest 100 memcached: true 101 multisite: true 140 102 # Report the results of the PHP 7.4 without memcached job. 141 103 - php: '7.4' 142 104 os: ubuntu-latest 143 105 memcached: false 106 multisite: false 144 107 report: true 145 108 env: 146 109 LOCAL_PHP: ${{ matrix.php }}-fpm 147 110 LOCAL_PHP_MEMCACHED: ${{ matrix.memcached }} 111 PHPUNIT_CONFIG: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }} 148 112 149 113 steps: … … 153 117 echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV 154 118 155 - name: Download the built WordPress artifact 156 uses: actions/download-artifact@v2 157 with: 158 name: built-wp-${{ github.sha }} 159 160 - name: Unzip built artifact 161 run: unzip built-wp-${{ github.sha }}.zip 119 - name: Checkout repository 120 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 162 121 163 122 - name: Install NodeJS 164 uses: actions/setup-node@ v1123 uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5 165 124 with: 166 125 node-version: 14 167 126 168 127 - name: Use cached Node modules 169 uses: actions/cache@ v2128 uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4 170 129 env: 171 130 cache-name: cache-node-modules … … 174 133 path: ~/.npm 175 134 key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} 176 restore-keys: |177 ${{ runner.os }}-npm-178 135 179 136 - name: Install Dependencies 180 run: npx install-changed --install-command="npm ci" 137 run: npm ci 138 139 - name: Get composer cache directory 140 id: composer-cache 141 if: ${{ env.COMPOSER_INSTALL == true }} 142 run: echo "::set-output name=dir::$(composer config cache-files-dir)" 181 143 182 144 - name: Cache Composer dependencies 183 145 if: ${{ env.COMPOSER_INSTALL == true }} 184 uses: actions/cache@ v2146 uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4 185 147 env: 186 148 cache-name: cache-composer-dependencies … … 188 150 path: ${{ steps.composer-cache.outputs.dir }} 189 151 key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }} 190 restore-keys: |191 ${{ runner.os }}-php-${{ matrix.php }}-composer-192 152 193 153 - name: Install Composer dependencies … … 210 170 if: ${{ matrix.memcached }} 211 171 run: | 212 cp tests/phpunit/includes/object-cache.php build/wp-content/object-cache.php172 cp tests/phpunit/includes/object-cache.php src/wp-content/object-cache.php 213 173 docker run --name memcached --net $(basename "$PWD")_wpdevnet -d memcached 214 174 … … 235 195 run: npm run env:install 236 196 197 - name: Run slow PHPUnit tests 198 if: ${{ matrix.split_slow }} 199 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ${{ env.SLOW_TESTS }} 200 201 - name: Run PHPUnit tests for single site excluding slow tests 202 if: ${{ matrix.php < '7.0' && ! matrix.split_slow && ! matrix.multisite }} 203 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-required 204 205 - name: Run PHPUnit tests for Multisite excluding slow tests 206 if: ${{ matrix.php < '7.0' && ! matrix.split_slow && matrix.multisite }} 207 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-excluded,oembed-headers 208 237 209 - name: Run PHPUnit tests 238 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist 210 if: ${{ matrix.php >= '7.0' }} 211 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} 239 212 240 213 - name: Run AJAX tests 241 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group ajax 242 243 - name: Run tests as a multisite install 244 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml 214 if: ${{ ! matrix.split_slow && ! matrix.multisite }} 215 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ajax 245 216 246 217 - name: Run ms-files tests as a multisite install 218 if: ${{ matrix.multisite && ! matrix.split_slow }} 247 219 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml --group ms-files 248 220 249 221 - name: Run external HTTP tests 222 if: ${{ ! matrix.multisite && ! matrix.split_slow }} 250 223 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group external-http 251 252 - name: Run REST API tests253 run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group restapi-jsclient254 224 255 225 # __fakegroup__ is excluded to force PHPUnit to ignore the <exclude> settings in phpunit.xml.dist. 256 226 - name: Run (xDebug) tests 257 run: LOCAL_PHP_XDEBUG=true npm run test:php -- -v --group xdebug --exclude-group __fakegroup__ 227 if: ${{ ! matrix.split_slow }} 228 run: LOCAL_PHP_XDEBUG=true npm run test:${{ env.PHPUNIT_SCRIPT }} -- -v --group xdebug --exclude-group __fakegroup__ 258 229 259 230 - name: Checkout the WordPress Test Reporter 260 231 if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/master' && matrix.report }} 261 uses: actions/checkout@ v2232 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 262 233 with: 263 234 repository: 'WordPress/phpunit-test-runner' 264 235 path: 'test-runner' 265 266 - name: Set up the Git repository267 if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/master' && matrix.report }}268 run: |269 git init270 git remote add origin https://github.com/WordPress/wordpress-develop.git271 git fetch272 git reset origin/master273 236 274 237 - name: Submit test results to the WordPress.org host test results -
branches/5.5/.github/workflows/welcome-new-contributors.yml
r50302 r50603 12 12 13 13 steps: 14 - uses: bubkoo/welcome-action@ v114 - uses: bubkoo/welcome-action@8dbbac2540d155744c90e4e37da6b05ffc9c5e2c # v1.0.3 15 15 with: 16 16 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -
branches/5.5/Gruntfile.js
r50188 r50603 8 8 var path = require('path'), 9 9 fs = require( 'fs' ), 10 glob = require( 'glob' ), 11 assert = require( 'assert' ).strict, 10 12 spawn = require( 'child_process' ).spawnSync, 11 13 SOURCE_DIR = 'src/', … … 1426 1428 ] ); 1427 1429 1430 /** 1431 * Build verification tasks. 1432 */ 1433 grunt.registerTask( 'verify:build', [ 1434 'verify:wp-embed', 1435 'verify:old-files', 1436 'verify:source-maps', 1437 ] ); 1438 1439 /** 1440 * Build assertions for wp-embed.min.js. 1441 * 1442 * @ticket 34698 1443 */ 1444 grunt.registerTask( 'verify:wp-embed', function() { 1445 const file = `${ BUILD_DIR }/wp-includes/js/wp-embed.min.js`; 1446 1447 assert( 1448 fs.existsSync( file ), 1449 'The build/wp-includes/js/wp-embed.min.js file does not exist.' 1450 ); 1451 1452 const contents = fs.readFileSync( file, { 1453 encoding: 'utf8', 1454 } ); 1455 1456 assert( 1457 contents.length > 0, 1458 'The build/wp-includes/js/wp-embed.min.js file must not be empty.' 1459 ); 1460 assert( 1461 false === contents.includes( '&' ), 1462 'The build/wp-includes/js/wp-embed.min.js file must not contain ampersands.' 1463 ); 1464 } ); 1465 1466 /** 1467 * Build assertions to ensure no project files are inside `$_old_files` in the build directory. 1468 * 1469 * @ticket 36083 1470 */ 1471 grunt.registerTask( 'verify:old-files', function() { 1472 const file = `${ BUILD_DIR }wp-admin/includes/update-core.php`; 1473 1474 assert( 1475 fs.existsSync( file ), 1476 'The build/wp-admin/includes/update-core.php file does not exist.' 1477 ); 1478 1479 const contents = fs.readFileSync( file, { 1480 encoding: 'utf8', 1481 } ); 1482 1483 assert( 1484 contents.length > 0, 1485 'The build/wp-admin/includes/update-core.php file must not be empty.' 1486 ); 1487 1488 const match = contents.match( /\$_old_files = array\(([^\)]+)\);/ ); 1489 1490 assert( 1491 match.length > 0, 1492 'The build/wp-admin/includes/update-core.php file does not include an `$_old_files` array.' 1493 ); 1494 1495 const files = match[1].split( '\n\t' ).filter( function( file ) { 1496 // Filter out empty lines 1497 if ( '' === file ) { 1498 return false; 1499 } 1500 1501 // Filter out commented out lines 1502 if ( 0 === file.indexOf( '/' ) ) { 1503 return false; 1504 } 1505 1506 return true; 1507 } ).map( function( file ) { 1508 // Strip leading and trailing single quotes and commas 1509 return file.replace( /^\'|\',$/g, '' ); 1510 } ); 1511 1512 files.forEach(function( file ){ 1513 const search = `${ BUILD_DIR }${ file }`; 1514 assert( 1515 false === fs.existsSync( search ), 1516 `${ search } should not be present in the $_old_files array.` 1517 ); 1518 }); 1519 } ); 1520 1521 /** 1522 * Build assertions for the lack of source maps in JavaScript files. 1523 * 1524 * @ticket 24994 1525 * @ticket 46218 1526 */ 1527 grunt.registerTask( 'verify:source-maps', function() { 1528 const path = `${ BUILD_DIR }**/*.js`; 1529 const files = glob.sync( path ); 1530 1531 assert( 1532 files.length > 0, 1533 'No JavaScript files found in the build directory.' 1534 ); 1535 1536 files.forEach( function( file ) { 1537 const contents = fs.readFileSync( file, { 1538 encoding: 'utf8', 1539 } ); 1540 // `data:` URLs are allowed: 1541 const match = contents.match( /sourceMappingURL=((?!data:).)/ ); 1542 1543 assert( 1544 match === null, 1545 `The ${ file } file must not contain a sourceMappingURL.` 1546 ); 1547 } ); 1548 } ); 1549 1428 1550 grunt.registerTask( 'build', function() { 1429 1551 if ( grunt.option( 'dev' ) ) { … … 1439 1561 'includes:emoji', 1440 1562 'includes:embed', 1441 'replace:emojiBannerText' 1563 'replace:emojiBannerText', 1564 'verify:build' 1442 1565 ] ); 1443 1566 } -
branches/5.5/README.md
r47752 r50603 44 44 45 45 ``` 46 npm run watch46 npm run dev 47 47 ``` 48 48 -
branches/5.5/package-lock.json
r50188 r50603 2142 2142 }, 2143 2143 "@sideway/address": { 2144 "version": "4.1. 0",2145 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1. 0.tgz",2146 "integrity": "sha512- wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA==",2144 "version": "4.1.1", 2145 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz", 2146 "integrity": "sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==", 2147 2147 "dev": true, 2148 2148 "requires": { … … 6682 6682 }, 6683 6683 "check-node-version": { 6684 "version": "4. 0.3",6685 "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4. 0.3.tgz",6686 "integrity": "sha512- kbnOaF7SE1uasWx3hqxzsU2yz7I+rkxSMuTW0eKoF39eUtSR/a0F4Sm35LwJNx4itOIARf9eLhWHOOh7rlZ5/g==",6684 "version": "4.1.0", 6685 "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", 6686 "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", 6687 6687 "dev": true, 6688 6688 "requires": { … … 6894 6894 }, 6895 6895 "clean-css": { 6896 "version": " 4.2.1",6897 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css- 4.2.1.tgz",6898 "integrity": "sha512- 4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",6896 "version": "5.1.2", 6897 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz", 6898 "integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==", 6899 6899 "dev": true, 6900 6900 "requires": { … … 12231 12231 }, 12232 12232 "grunt-contrib-cssmin": { 12233 "version": "3.0.0", 12234 "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-3.0.0.tgz", 12235 "integrity": "sha512-eXpooYmVGKMs/xV7DzTLgJFPVOfMuawPD3x0JwhlH0mumq2NtH3xsxaHxp1Y3NKxp0j0tRhFS6kSBRsz6TuTGg==", 12236 "dev": true, 12237 "requires": { 12238 "chalk": "^2.4.1", 12239 "clean-css": "~4.2.1", 12240 "maxmin": "^2.1.0" 12241 }, 12242 "dependencies": { 12243 "ansi-styles": { 12244 "version": "3.2.1", 12245 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 12246 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 12247 "dev": true, 12248 "requires": { 12249 "color-convert": "^1.9.0" 12250 } 12251 }, 12252 "chalk": { 12253 "version": "2.4.2", 12254 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 12255 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 12256 "dev": true, 12257 "requires": { 12258 "ansi-styles": "^3.2.1", 12259 "escape-string-regexp": "^1.0.5", 12260 "supports-color": "^5.3.0" 12261 } 12262 }, 12263 "supports-color": { 12264 "version": "5.5.0", 12265 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 12266 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 12267 "dev": true, 12268 "requires": { 12269 "has-flag": "^3.0.0" 12270 } 12233 "version": "4.0.0", 12234 "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-4.0.0.tgz", 12235 "integrity": "sha512-jXU+Zlk8Q8XztOGNGpjYlD/BDQ0n95IHKrQKtFR7Gd8hZrzgqiG1Ra7cGYc8h2DD9vkSFGNlweb9Q00rBxOK2w==", 12236 "dev": true, 12237 "requires": { 12238 "chalk": "^4.1.0", 12239 "clean-css": "^5.0.1", 12240 "maxmin": "^3.0.0" 12241 }, 12242 "dependencies": { 12243 "figures": { 12244 "version": "3.2.0", 12245 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 12246 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 12247 "dev": true, 12248 "requires": { 12249 "escape-string-regexp": "^1.0.5" 12250 } 12251 }, 12252 "maxmin": { 12253 "version": "3.0.0", 12254 "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-3.0.0.tgz", 12255 "integrity": "sha512-wcahMInmGtg/7c6a75fr21Ch/Ks1Tb+Jtoan5Ft4bAI0ZvJqyOw8kkM7e7p8hDSzY805vmxwHT50KcjGwKyJ0g==", 12256 "dev": true, 12257 "requires": { 12258 "chalk": "^4.1.0", 12259 "figures": "^3.2.0", 12260 "gzip-size": "^5.1.1", 12261 "pretty-bytes": "^5.3.0" 12262 } 12263 }, 12264 "pretty-bytes": { 12265 "version": "5.6.0", 12266 "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", 12267 "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", 12268 "dev": true 12271 12269 } 12272 12270 } … … 15870 15868 }, 15871 15869 "joi": { 15872 "version": "17. 3.0",15873 "resolved": "https://registry.npmjs.org/joi/-/joi-17. 3.0.tgz",15874 "integrity": "sha512- Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg==",15870 "version": "17.4.0", 15871 "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", 15872 "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", 15875 15873 "dev": true, 15876 15874 "requires": { … … 17710 17708 }, 17711 17709 "nise": { 17712 "version": "4. 0.4",17713 "resolved": "https://registry.npmjs.org/nise/-/nise-4. 0.4.tgz",17714 "integrity": "sha512- bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A==",17710 "version": "4.1.0", 17711 "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", 17712 "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", 17715 17713 "dev": true, 17716 17714 "requires": { … … 20304 20302 }, 20305 20303 "mime-db": { 20306 "version": "1.4 5.0",20307 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.4 5.0.tgz",20308 "integrity": "sha512- CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==",20304 "version": "1.46.0", 20305 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", 20306 "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", 20309 20307 "dev": true 20310 20308 }, 20311 20309 "mime-types": { 20312 "version": "2.1.2 8",20313 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.2 8.tgz",20314 "integrity": "sha512- 0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",20315 "dev": true, 20316 "requires": { 20317 "mime-db": "1.4 5.0"20310 "version": "2.1.29", 20311 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", 20312 "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", 20313 "dev": true, 20314 "requires": { 20315 "mime-db": "1.46.0" 20318 20316 } 20319 20317 }, … … 20383 20381 }, 20384 20382 "qunit": { 20385 "version": "2.14. 0",20386 "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.14. 0.tgz",20387 "integrity": "sha512- CYfenbgdpmhl2Ql2rDrrj0felY4h8k6lYhtWwGBCLL4qQC33YOj0psV8MWo85L1i0SIOmEDRXkFopWnGCLmf7g==",20388 "dev": true, 20389 "requires": { 20390 "commander": " 6.2.0",20383 "version": "2.14.1", 20384 "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.14.1.tgz", 20385 "integrity": "sha512-jtFw8bf8+GjzY8UpnwbjqTOdK/rvrjcafUFTNpRc6/9N4q5dBwcwSMlcC76kAn5BRiSFj5Ssn2dfHtEYvtsXSw==", 20386 "dev": true, 20387 "requires": { 20388 "commander": "7.1.0", 20391 20389 "js-reporters": "1.2.3", 20392 20390 "node-watch": "0.7.1", … … 20395 20393 "dependencies": { 20396 20394 "commander": { 20397 "version": " 6.2.0",20398 "resolved": "https://registry.npmjs.org/commander/-/commander- 6.2.0.tgz",20399 "integrity": "sha512- zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==",20395 "version": "7.1.0", 20396 "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", 20397 "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", 20400 20398 "dev": true 20401 20399 } … … 21841 21839 }, 21842 21840 "sass": { 21843 "version": "1.32. 6",21844 "resolved": "https://registry.npmjs.org/sass/-/sass-1.32. 6.tgz",21845 "integrity": "sha512- 1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==",21841 "version": "1.32.8", 21842 "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", 21843 "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", 21846 21844 "dev": true, 21847 21845 "requires": { … … 22427 22425 }, 22428 22426 "sinon": { 22429 "version": " 9.2.4",22430 "resolved": "https://registry.npmjs.org/sinon/-/sinon- 9.2.4.tgz",22431 "integrity": "sha512- zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==",22427 "version": "10.0.0", 22428 "resolved": "https://registry.npmjs.org/sinon/-/sinon-10.0.0.tgz", 22429 "integrity": "sha512-XAn5DxtGVJBlBWYrcYKEhWCz7FLwZGdyvANRyK06419hyEpdT0dMc5A8Vcxg5SCGHc40CsqoKsc1bt1CbJPfNw==", 22432 22430 "dev": true, 22433 22431 "requires": { … … 22436 22434 "@sinonjs/samsam": "^5.3.1", 22437 22435 "diff": "^4.0.2", 22438 "nise": "^4. 0.4",22436 "nise": "^4.1.0", 22439 22437 "supports-color": "^7.1.0" 22440 22438 }, … … 24996 24994 }, 24997 24995 "uglify-js": { 24998 "version": "3.1 2.6",24999 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1 2.6.tgz",25000 "integrity": "sha512- aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw==",24996 "version": "3.13.2", 24997 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", 24998 "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", 25001 24999 "dev": true 25002 25000 }, … … 25624 25622 }, 25625 25623 "wait-on": { 25626 "version": "5. 2.1",25627 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5. 2.1.tgz",25628 "integrity": "sha512- H2F986kNWMU9hKlI9l/ppO6tN8ZSJd35yBljMLa1/vjzWP++Qh6aXyt77/u7ySJFZQqBtQxnvm/xgG48AObXcw==",25624 "version": "5.3.0", 25625 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", 25626 "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", 25629 25627 "dev": true, 25630 25628 "requires": { 25631 25629 "axios": "^0.21.1", 25632 25630 "joi": "^17.3.0", 25633 "lodash": "^4.17.2 0",25631 "lodash": "^4.17.21", 25634 25632 "minimist": "^1.2.5", 25635 25633 "rxjs": "^6.6.3" … … 25637 25635 "dependencies": { 25638 25636 "lodash": { 25639 "version": "4.17.2 0",25640 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2 0.tgz",25641 "integrity": "sha512- PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",25637 "version": "4.17.21", 25638 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 25639 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 25642 25640 "dev": true 25643 25641 }, 25644 25642 "rxjs": { 25645 "version": "6.6. 3",25646 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6. 3.tgz",25647 "integrity": "sha512- trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",25643 "version": "6.6.6", 25644 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", 25645 "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", 25648 25646 "dev": true, 25649 25647 "requires": { -
branches/5.5/package.json
r50188 r50603 33 33 "autoprefixer": "^9.8.6", 34 34 "chalk": "4.1.0", 35 "check-node-version": "4. 0.3",35 "check-node-version": "4.1.0", 36 36 "copy-webpack-plugin": "^5.1.2", 37 37 "cssnano": "4.1.10", … … 43 43 "grunt-contrib-concat": "1.0.1", 44 44 "grunt-contrib-copy": "~1.0.0", 45 "grunt-contrib-cssmin": "~ 3.0.0",45 "grunt-contrib-cssmin": "~4.0.0", 46 46 "grunt-contrib-imagemin": "~4.0.0", 47 47 "grunt-contrib-jshint": "3.0.0", … … 66 66 "prettier": "npm:wp-prettier@2.0.5", 67 67 "puppeteer": "npm:puppeteer-core@3.0.0", 68 "qunit": "~2.14. 0",69 "sass": "^1.32. 6",70 "sinon": "~ 9.2.4",68 "qunit": "~2.14.1", 69 "sass": "^1.32.8", 70 "sinon": "~10.0.0", 71 71 "sinon-test": "~3.0.0", 72 72 "source-map-loader": "^1.1.3", 73 "uglify-js": "^3.1 2.6",73 "uglify-js": "^3.13.2", 74 74 "uglifyjs-webpack-plugin": "2.2.0", 75 75 "uuid": "8.3.2", 76 "wait-on": "5. 2.1",76 "wait-on": "5.3.0", 77 77 "webpack": "4.43.0", 78 78 "webpack-dev-server": "3.11.2", -
branches/5.5/tests/phpunit/includes/abstract-testcase.php
r48914 r50603 1247 1247 ); 1248 1248 } 1249 1250 /** 1251 * Touches the given file and its directory if it doesn't already exist. 1252 * 1253 * This can be used to ensure a file that is implictly relied on in a test exists 1254 * without it having to be built. 1255 * 1256 * @param string $file The file name. 1257 */ 1258 public static function touch( $file ) { 1259 if ( file_exists( $file ) ) { 1260 return; 1261 } 1262 1263 $dir = dirname( $file ); 1264 1265 if ( ! file_exists( $dir ) ) { 1266 mkdir( $dir, 0777, true ); 1267 } 1268 1269 touch( $file ); 1270 } 1249 1271 } -
branches/5.5/tests/phpunit/tests/admin/includesPlugin.php
r47122 r50603 5 5 */ 6 6 class Tests_Admin_includesPlugin extends WP_UnitTestCase { 7 public static function wpSetUpBeforeClass( $factory ) { 8 self::_back_up_mu_plugins(); 9 } 10 11 public static function wpTearDownAfterClass() { 12 self::_restore_mu_plugins(); 13 } 14 7 15 function test_get_plugin_data() { 8 16 $data = get_plugin_data( DIR_TESTDATA . '/plugins/hello.php' ); … … 370 378 'list_files_test_plugin/subdir/subfile.php', 371 379 ); 372 $this->assertEquals( $expected, $plugin_files );373 380 374 381 unlink( $sub_dir . '/subfile.php' ); … … 376 383 rmdir( $sub_dir ); 377 384 rmdir( $plugin_dir ); 385 386 $this->assertSame( $expected, $plugin_files ); 378 387 } 379 388 … … 382 391 */ 383 392 public function test_get_mu_plugins_when_mu_plugins_exists_but_is_empty() { 384 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 385 $exists = true; 386 $this->_back_up_mu_plugins(); 387 } else { 388 $exists = false; 389 mkdir( WPMU_PLUGIN_DIR ); 390 } 391 392 $this->assertEquals( array(), get_mu_plugins() ); 393 394 // Clean up. 395 if ( $exists ) { 396 $this->_restore_mu_plugins(); 397 } else { 398 rmdir( WPMU_PLUGIN_DIR ); 399 } 393 mkdir( WPMU_PLUGIN_DIR ); 394 395 $mu_plugins = get_mu_plugins(); 396 397 rmdir( WPMU_PLUGIN_DIR ); 398 399 $this->assertSame( array(), $mu_plugins ); 400 400 } 401 401 … … 404 404 */ 405 405 public function test_get_mu_plugins_when_mu_plugins_directory_does_not_exist() { 406 $exists = false; 407 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 408 $exists = true; 409 $this->_back_up_mu_plugins(); 410 rmdir( WPMU_PLUGIN_DIR ); 411 } 412 413 $this->assertEquals( array(), get_mu_plugins() ); 414 415 // Clean up. 416 if ( $exists ) { 417 mkdir( WPMU_PLUGIN_DIR ); 418 $this->_restore_mu_plugins(); 419 } 406 $this->assertFileNotExists( WPMU_PLUGIN_DIR ); 407 $this->assertSame( array(), get_mu_plugins() ); 420 408 } 421 409 … … 424 412 */ 425 413 public function test_get_mu_plugins_should_ignore_index_php_containing_silence_is_golden() { 426 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 427 $exists = true; 428 $this->_back_up_mu_plugins(); 429 } else { 430 $exists = false; 431 mkdir( WPMU_PLUGIN_DIR ); 432 } 414 mkdir( WPMU_PLUGIN_DIR ); 433 415 434 416 $this->_create_plugin( '<?php\n//Silence is golden.', 'index.php', WPMU_PLUGIN_DIR ); 435 $this->assertEquals( array(), get_mu_plugins() ); 417 418 $mu_plugins = get_mu_plugins(); 419 420 unlink( WPMU_PLUGIN_DIR . '/index.php' ); 421 rmdir( WPMU_PLUGIN_DIR ); 422 423 $this->assertSame( array(), $mu_plugins ); 424 } 425 426 /** 427 * @covers ::get_mu_plugins 428 */ 429 public function test_get_mu_plugins_should_not_ignore_index_php_containing_something_other_than_silence_is_golden() { 430 mkdir( WPMU_PLUGIN_DIR ); 431 432 $this->_create_plugin( '<?php\n//Silence is not golden.', 'index.php', WPMU_PLUGIN_DIR ); 433 $found = get_mu_plugins(); 436 434 437 435 // Clean up. 438 436 unlink( WPMU_PLUGIN_DIR . '/index.php' ); 439 if ( $exists ) { 440 $this->_restore_mu_plugins(); 441 } else { 442 rmdir( WPMU_PLUGIN_DIR ); 443 } 437 rmdir( WPMU_PLUGIN_DIR ); 438 439 $this->assertSame( array( 'index.php' ), array_keys( $found ) ); 444 440 } 445 441 … … 447 443 * @covers ::get_mu_plugins 448 444 */ 449 public function test_get_mu_plugins_should_not_ignore_index_php_containing_something_other_than_silence_is_golden() {450 if ( is_dir( WPMU_PLUGIN_DIR ) ) {451 $exists = true;452 $this->_back_up_mu_plugins();453 } else {454 $exists = false;455 mkdir( WPMU_PLUGIN_DIR );456 }457 458 $this->_create_plugin( '<?php\n//Silence is not golden.', 'index.php', WPMU_PLUGIN_DIR );459 $found = get_mu_plugins();460 $this->assertEquals( array( 'index.php' ), array_keys( $found ) );461 462 // Clean up.463 unlink( WPMU_PLUGIN_DIR . '/index.php' );464 if ( $exists ) {465 $this->_restore_mu_plugins();466 } else {467 rmdir( WPMU_PLUGIN_DIR );468 }469 }470 471 /**472 * @covers ::get_mu_plugins473 */474 445 public function test_get_mu_plugins_should_ignore_files_without_php_extensions() { 475 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 476 $exists = true; 477 $this->_back_up_mu_plugins(); 478 } else { 479 $exists = false; 480 mkdir( WPMU_PLUGIN_DIR ); 481 } 446 mkdir( WPMU_PLUGIN_DIR ); 482 447 483 448 $this->_create_plugin( '<?php\n//Test', 'foo.php', WPMU_PLUGIN_DIR ); 484 449 $this->_create_plugin( '<?php\n//Test 2', 'bar.txt', WPMU_PLUGIN_DIR ); 485 450 $found = get_mu_plugins(); 486 $this->assertEquals( array( 'foo.php' ), array_keys( $found ) );487 451 488 452 // Clean up. 489 453 unlink( WPMU_PLUGIN_DIR . '/foo.php' ); 490 454 unlink( WPMU_PLUGIN_DIR . '/bar.txt' ); 491 if ( $exists ) { 492 $this->_restore_mu_plugins(); 493 } else { 494 rmdir( WPMU_PLUGIN_DIR ); 495 } 455 456 $this->assertSame( array( 'foo.php' ), array_keys( $found ) ); 496 457 } 497 458 … … 652 613 653 614 /** 654 * Move existing mu-plugins to wp-content/mu-plugin /backup.615 * Move existing mu-plugins to wp-content/mu-plugin-backup. 655 616 * 656 617 * @since 4.2.0 … … 658 619 * @access private 659 620 */ 660 private function _back_up_mu_plugins() {621 private static function _back_up_mu_plugins() { 661 622 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 662 623 $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup'; 663 if ( ! is_dir( $mu_bu_dir ) ) { 664 mkdir( $mu_bu_dir ); 665 } 666 667 $files_to_move = array(); 668 $mu_plugins = opendir( WPMU_PLUGIN_DIR ); 669 if ( $mu_plugins ) { 670 while ( false !== $plugin = readdir( $mu_plugins ) ) { 671 if ( 0 !== strpos( $plugin, '.' ) ) { 672 $files_to_move[] = $plugin; 673 } 674 } 675 } 676 677 closedir( $mu_plugins ); 678 679 foreach ( $files_to_move as $file_to_move ) { 680 $f = rename( WPMU_PLUGIN_DIR . '/' . $file_to_move, $mu_bu_dir . '/' . $file_to_move ); 681 } 624 rename( WPMU_PLUGIN_DIR, $mu_bu_dir ); 682 625 } 683 626 } … … 690 633 * @access private 691 634 */ 692 private function _restore_mu_plugins() { 693 $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup'; 694 $files_to_move = array(); 695 $mu_plugins = @opendir( $mu_bu_dir ); 696 if ( $mu_plugins ) { 697 while ( false !== $plugin = readdir( $mu_plugins ) ) { 698 if ( 0 !== strpos( $plugin, '.' ) ) { 699 $files_to_move[] = $plugin; 700 } 701 } 702 } 703 704 closedir( $mu_plugins ); 705 706 foreach ( $files_to_move as $file_to_move ) { 707 rename( $mu_bu_dir . '/' . $file_to_move, WPMU_PLUGIN_DIR . '/' . $file_to_move ); 635 private static function _restore_mu_plugins() { 636 $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup'; 637 638 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 639 rmdir( WPMU_PLUGIN_DIR ); 708 640 } 709 641 710 642 if ( is_dir( $mu_bu_dir ) ) { 711 r mdir( $mu_bu_dir);643 rename( $mu_bu_dir, WPMU_PLUGIN_DIR ); 712 644 } 713 645 } -
branches/5.5/tests/phpunit/tests/dependencies/jquery.php
r48325 r50603 37 37 } 38 38 39 function test_presence_of_jquery_no_conflict() { 40 $contents = trim( file_get_contents( ABSPATH . WPINC . '/js/jquery/jquery.js' ) ); 41 $noconflict = 'jQuery.noConflict();'; 42 $end = substr( $contents, - strlen( $noconflict ) ); 43 $this->assertEquals( $noconflict, $end ); 44 } 45 39 /** 46 40 /** 47 41 * @ticket 22896 -
branches/5.5/tests/phpunit/tests/dependencies/scripts.php
r48893 r50603 713 713 714 714 $ver = get_bloginfo( 'version' ); 715 $suffix = wp_scripts_get_suffix(); 715 716 $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core&ver={$ver}'></script>\n"; 716 717 $expected .= "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n"; 717 718 $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n"; 718 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/vendor/wp-polyfill .min.js' id='wp-polyfill-js'></script>\n";719 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/vendor/wp-polyfill{$suffix}.js' id='wp-polyfill-js'></script>\n"; 719 720 $expected .= "<script type='text/javascript' id='wp-polyfill-js-after'>\n"; 720 $expected .= "( 'fetch' in window ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-fetch .min.js\"></scr' + 'ipt>' );( document.contains ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-node-contains.min.js\"></scr' + 'ipt>' );( window.DOMRect ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-dom-rect.min.js\"></scr' + 'ipt>' );( window.URL && window.URL.prototype && window.URLSearchParams ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-url.min.js\"></scr' + 'ipt>' );( window.FormData && window.FormData.prototype.keys ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-formdata.min.js\"></scr' + 'ipt>' );( Element.prototype.matches && Element.prototype.closest ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-element-closest.min.js\"></scr' + 'ipt>' );\n";721 $expected .= "( 'fetch' in window ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-fetch{$suffix}.js\"></scr' + 'ipt>' );( document.contains ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-node-contains{$suffix}.js\"></scr' + 'ipt>' );( window.DOMRect ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-dom-rect{$suffix}.js\"></scr' + 'ipt>' );( window.URL && window.URL.prototype && window.URLSearchParams ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-url{$suffix}.js\"></scr' + 'ipt>' );( window.FormData && window.FormData.prototype.keys ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-formdata{$suffix}.js\"></scr' + 'ipt>' );( Element.prototype.matches && Element.prototype.closest ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-element-closest{$suffix}.js\"></scr' + 'ipt>' );\n"; 721 722 $expected .= "</script>\n"; 722 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/dom-ready .min.js' id='wp-dom-ready-js'></script>\n";723 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/i18n .min.js' id='wp-i18n-js'></script>\n";723 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/dom-ready{$suffix}.js' id='wp-dom-ready-js'></script>\n"; 724 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/i18n{$suffix}.js' id='wp-i18n-js'></script>\n"; 724 725 $expected .= "<script type='text/javascript' id='wp-a11y-js-translations'>\n"; 725 726 $expected .= "( function( domain, translations ) {\n"; … … 729 730 $expected .= "} )( \"default\", { \"locale_data\": { \"messages\": { \"\": {} } } } );\n"; 730 731 $expected .= "</script>\n"; 731 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/a11y .min.js' id='wp-a11y-js'></script>\n";732 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/a11y{$suffix}.js' id='wp-a11y-js'></script>\n"; 732 733 $expected .= "<script type='text/javascript' src='http://example2.com' id='test-example2-js'></script>\n"; 733 734 $expected .= "<script type='text/javascript' id='test-example2-js-after'>\nconsole.log(\"after\");\n</script>\n"; … … 1402 1403 ); 1403 1404 } 1404 1405 function test_no_source_mapping() {1406 $all_files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( dirname( ABSPATH ) . '/build/' ) );1407 $js_files = new RegexIterator( $all_files, '/\.js$/' );1408 foreach ( $js_files as $js_file ) {1409 $contents = trim( file_get_contents( $js_file ) );1410 1411 // We allow data: URLs.1412 $found = preg_match( '/sourceMappingURL=((?!data:).)/', $contents );1413 $this->assertSame( $found, 0, "sourceMappingURL found in $js_file" );1414 }1415 }1416 1405 } -
branches/5.5/tests/phpunit/tests/formatting/Emoji.php
r48048 r50603 14 14 */ 15 15 public function test_unfiltered_emoji_cdns() { 16 // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present: 17 self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' ); 16 18 $output = get_echo( '_print_emoji_detection_script' ); 17 19 … … 32 34 add_filter( 'emoji_svg_url', array( $this, '_filtered_emoji_svn_cdn' ) ); 33 35 36 // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present: 37 self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' ); 34 38 $output = get_echo( '_print_emoji_detection_script' ); 35 39 … … 53 57 add_filter( 'emoji_url', array( $this, '_filtered_emoji_png_cdn' ) ); 54 58 59 // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present: 60 self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' ); 55 61 $output = get_echo( '_print_emoji_detection_script' ); 56 62 -
branches/5.5/tests/phpunit/tests/oembed/controller.php
r48135 r50603 35 35 ) 36 36 ); 37 38 // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present: 39 self::touch( ABSPATH . WPINC . '/js/wp-embed.js' ); 37 40 } 38 41 -
branches/5.5/tests/phpunit/tests/oembed/getResponseData.php
r47615 r50603 5 5 */ 6 6 class Tests_oEmbed_Response_Data extends WP_UnitTestCase { 7 public function setUp() { 8 parent::setUp(); 9 10 // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present: 11 self::touch( ABSPATH . WPINC . '/js/wp-embed.js' ); 12 } 13 7 14 function test_get_oembed_response_data_non_existent_post() { 8 15 $this->assertFalse( get_oembed_response_data( 0, 100 ) ); -
branches/5.5/tests/phpunit/tests/oembed/template.php
r47198 r50603 23 23 24 24 $this->assertQueryTrue( 'is_single', 'is_singular', 'is_embed' ); 25 26 // `print_embed_scripts()` assumes `wp-includes/js/wp-embed-template.js` is present: 27 self::touch( ABSPATH . WPINC . '/js/wp-embed-template.js' ); 25 28 26 29 ob_start(); … … 291 294 292 295 /** 296 * Confirms that no ampersands exist in src/wp-includes/js/wp-embed.js. 297 * 298 * See also the `verify:wp-embed` Grunt task for verifying the built file. 299 * 293 300 * @ticket 34698 294 301 */ … … 296 303 $this->assertNotContains( '&', file_get_contents( ABSPATH . WPINC . '/js/wp-embed.js' ) ); 297 304 } 298 299 /**300 * @ticket 34698301 *302 * @depends test_js_no_ampersands303 *304 * The previous test confirms that no ampersands exist in src/wp-includes/js/wp-embed.js.305 * However, we must also confirm that UglifyJS does not add ampersands during its306 * optimizations (which we tweak to avoid, but indirectly -- understandably, there's307 * no "don't add ampersands to my JavaScript file" option).308 *309 * So this test checks for ampersands in build/wp-includes/js/wp-embed.min.js.310 * In many cases, this file will not exist; in those cases, we simply skip the test.311 *312 * So when would it be run? We have Travis CI run `npm run test` which then runs, in order,313 * `qunit:compiled` (which runs the build) and then `phpunit`. Thus, this test will at least be314 * run during continuous integration.315 *316 * However, we need to verify that `qunit:compiled` runs before `phpunit`. So this test also317 * does a cheap check for a registered Grunt task called `test` that contains both318 * `qunit:compiled` and `phpunit`, in that order.319 *320 * One final failsafe: The Gruntfile.js assertion takes place before checking for the existence321 * of wp-embed.min.js. If the Grunt tasks are significantly refactored later, it could indicate322 * that wp-embed.min.js doesn't exist anymore. We wouldn't want the test to silently become one323 * that is always skipped, and thus useless.324 */325 function test_js_no_ampersands_in_compiled() {326 $gruntfile = file_get_contents( dirname( ABSPATH ) . '/Gruntfile.js' );327 328 // Confirm this file *should* exist, otherwise this test will always be skipped.329 $test = '/grunt.registerTask\(\s*\'test\',.*\'qunit:compiled\'.*\'phpunit\'/';330 $this->assertTrue( (bool) preg_match( $test, $gruntfile ) );331 332 $file = dirname( ABSPATH ) . '/build/' . WPINC . '/js/wp-embed.min.js';333 if ( ! file_exists( $file ) ) {334 return;335 }336 $this->assertNotContains( '&', file_get_contents( $file ) );337 }338 339 305 } -
branches/5.5/tests/phpunit/tests/oembed/wpOembed.php
r45663 r50603 19 19 20 20 $this->pre_oembed_result_filtered = false; 21 22 // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present: 23 self::touch( ABSPATH . WPINC . '/js/wp-embed.js' ); 21 24 } 22 25 -
branches/5.5/tests/phpunit/tests/shortcode.php
r47198 r50603 747 747 function test_php_and_js_shortcode_attribute_regexes_match() { 748 748 749 $file = file_get_contents( ABSPATH . WPINC . '/js/shortcode.js' );749 $file = file_get_contents( ABSPATH . 'js/_enqueues/wp/shortcode.js' ); 750 750 $matched = preg_match( '|\s+pattern = (\/.+\/)g;|', $file, $matches ); 751 751 $php = get_shortcode_atts_regex(); -
branches/5.5/tests/qunit/index.html
r49307 r50603 151 151 <script src="wp-includes/js/shortcode.js"></script> 152 152 <script src="wp-includes/js/api-request.js"></script> 153 <script src="wp-includes/js/jquery.js"></script> 153 154 <script src="wp-includes/js/wp-api.js"></script> 154 155 <script src="wp-admin/js/customize-controls.js"></script> -
branches/5.5/wp-tests-config-sample.php
r47201 r50603 2 2 3 3 /* Path to the WordPress codebase you'd like to test. Add a forward slash in the end. */ 4 if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS ) { 5 define( 'ABSPATH', dirname( __FILE__ ) . '/build/' ); 6 } else { 7 define( 'ABSPATH', dirname( __FILE__ ) . '/src/' ); 8 } 4 define( 'ABSPATH', dirname( __FILE__ ) . '/src/' ); 9 5 10 6 /*
Note: See TracChangeset
for help on using the changeset viewer.