Changeset 50604
- Timestamp:
- 03/26/2021 06:20:24 PM (4 years ago)
- Location:
- branches/5.4
- Files:
-
- 2 added
- 3 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.4
-
branches/5.4/.github/workflows/coding-standards.yml
r50303 r50604 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.3' … … 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" … … 92 113 steps: 93 114 - name: Checkout repository 94 uses: actions/checkout@ v2115 uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 95 116 96 117 - name: Log debug information … … 102 123 103 124 - name: Install NodeJS 104 uses: actions/setup-node@ v1125 uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5 105 126 with: 106 127 node-version: 14 107 128 108 129 - name: Cache NodeJS modules 109 uses: actions/cache@ v2130 uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4 110 131 env: 111 132 cache-name: cache-node-modules … … 114 135 path: ~/.npm 115 136 key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} 116 restore-keys: |117 ${{ runner.os }}-npm-118 137 119 138 - name: Log debug information … … 123 142 124 143 - name: Install Dependencies 125 run: np x install-changed --install-command="npm ci"144 run: npm ci 126 145 127 146 - name: Run JSHint -
branches/5.4/.github/workflows/javascript-tests.yml
r50303 r50604 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.4/.github/workflows/php-compatibility.yml
r50303 r50604 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.4/.github/workflows/phpunit-tests.yml
r50303 r50604 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.4/.github/workflows/welcome-new-contributors.yml
r50303 r50604 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.4/Gruntfile.js
r50189 r50604 7 7 var path = require('path'), 8 8 fs = require( 'fs' ), 9 glob = require( 'glob' ), 10 assert = require( 'assert' ).strict, 9 11 spawn = require( 'child_process' ).spawnSync, 10 12 SOURCE_DIR = 'src/', … … 1401 1403 ] ); 1402 1404 1405 /** 1406 * Build verification tasks. 1407 */ 1408 grunt.registerTask( 'verify:build', [ 1409 'verify:wp-embed', 1410 'verify:old-files', 1411 'verify:source-maps', 1412 ] ); 1413 1414 /** 1415 * Build assertions for wp-embed.min.js. 1416 * 1417 * @ticket 34698 1418 */ 1419 grunt.registerTask( 'verify:wp-embed', function() { 1420 const file = `${ BUILD_DIR }/wp-includes/js/wp-embed.min.js`; 1421 1422 assert( 1423 fs.existsSync( file ), 1424 'The build/wp-includes/js/wp-embed.min.js file does not exist.' 1425 ); 1426 1427 const contents = fs.readFileSync( file, { 1428 encoding: 'utf8', 1429 } ); 1430 1431 assert( 1432 contents.length > 0, 1433 'The build/wp-includes/js/wp-embed.min.js file must not be empty.' 1434 ); 1435 assert( 1436 false === contents.includes( '&' ), 1437 'The build/wp-includes/js/wp-embed.min.js file must not contain ampersands.' 1438 ); 1439 } ); 1440 1441 /** 1442 * Build assertions to ensure no project files are inside `$_old_files` in the build directory. 1443 * 1444 * @ticket 36083 1445 */ 1446 grunt.registerTask( 'verify:old-files', function() { 1447 const file = `${ BUILD_DIR }wp-admin/includes/update-core.php`; 1448 1449 assert( 1450 fs.existsSync( file ), 1451 'The build/wp-admin/includes/update-core.php file does not exist.' 1452 ); 1453 1454 const contents = fs.readFileSync( file, { 1455 encoding: 'utf8', 1456 } ); 1457 1458 assert( 1459 contents.length > 0, 1460 'The build/wp-admin/includes/update-core.php file must not be empty.' 1461 ); 1462 1463 const match = contents.match( /\$_old_files = array\(([^\)]+)\);/ ); 1464 1465 assert( 1466 match.length > 0, 1467 'The build/wp-admin/includes/update-core.php file does not include an `$_old_files` array.' 1468 ); 1469 1470 const files = match[1].split( '\n\t' ).filter( function( file ) { 1471 // Filter out empty lines 1472 if ( '' === file ) { 1473 return false; 1474 } 1475 1476 // Filter out commented out lines 1477 if ( 0 === file.indexOf( '/' ) ) { 1478 return false; 1479 } 1480 1481 return true; 1482 } ).map( function( file ) { 1483 // Strip leading and trailing single quotes and commas 1484 return file.replace( /^\'|\',$/g, '' ); 1485 } ); 1486 1487 files.forEach(function( file ){ 1488 const search = `${ BUILD_DIR }${ file }`; 1489 assert( 1490 false === fs.existsSync( search ), 1491 `${ search } should not be present in the $_old_files array.` 1492 ); 1493 }); 1494 } ); 1495 1496 /** 1497 * Build assertions for the lack of source maps in JavaScript files. 1498 * 1499 * @ticket 24994 1500 * @ticket 46218 1501 */ 1502 grunt.registerTask( 'verify:source-maps', function() { 1503 const path = `${ BUILD_DIR }**/*.js`; 1504 const files = glob.sync( path ); 1505 1506 assert( 1507 files.length > 0, 1508 'No JavaScript files found in the build directory.' 1509 ); 1510 1511 files.forEach( function( file ) { 1512 const contents = fs.readFileSync( file, { 1513 encoding: 'utf8', 1514 } ); 1515 // `data:` URLs are allowed: 1516 const match = contents.match( /sourceMappingURL=((?!data:).)/ ); 1517 1518 assert( 1519 match === null, 1520 `The ${ file } file must not contain a sourceMappingURL.` 1521 ); 1522 } ); 1523 } ); 1524 1403 1525 grunt.registerTask( 'build', function() { 1404 1526 if ( grunt.option( 'dev' ) ) { … … 1414 1536 'includes:emoji', 1415 1537 'includes:embed', 1538 'verify:build' 1416 1539 ] ); 1417 1540 } -
branches/5.4/package-lock.json
r50189 r50604 1826 1826 }, 1827 1827 "@sideway/address": { 1828 "version": "4.1. 0",1829 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1. 0.tgz",1830 "integrity": "sha512- wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA==",1828 "version": "4.1.1", 1829 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz", 1830 "integrity": "sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==", 1831 1831 "dev": true, 1832 1832 "requires": { … … 5385 5385 }, 5386 5386 "check-node-version": { 5387 "version": "4. 0.3",5388 "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4. 0.3.tgz",5389 "integrity": "sha512- kbnOaF7SE1uasWx3hqxzsU2yz7I+rkxSMuTW0eKoF39eUtSR/a0F4Sm35LwJNx4itOIARf9eLhWHOOh7rlZ5/g==",5387 "version": "4.1.0", 5388 "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", 5389 "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", 5390 5390 "dev": true, 5391 5391 "requires": { … … 5629 5629 }, 5630 5630 "clean-css": { 5631 "version": " 4.2.1",5632 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css- 4.2.1.tgz",5633 "integrity": "sha512- 4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",5631 "version": "5.1.2", 5632 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz", 5633 "integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==", 5634 5634 "dev": true, 5635 5635 "requires": { … … 10447 10447 }, 10448 10448 "grunt-contrib-cssmin": { 10449 "version": " 3.0.0",10450 "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin- 3.0.0.tgz",10451 "integrity": "sha512- eXpooYmVGKMs/xV7DzTLgJFPVOfMuawPD3x0JwhlH0mumq2NtH3xsxaHxp1Y3NKxp0j0tRhFS6kSBRsz6TuTGg==",10452 "dev": true, 10453 "requires": { 10454 "chalk": "^ 2.4.1",10455 "clean-css": " ~4.2.1",10456 "maxmin": "^ 2.1.0"10449 "version": "4.0.0", 10450 "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-4.0.0.tgz", 10451 "integrity": "sha512-jXU+Zlk8Q8XztOGNGpjYlD/BDQ0n95IHKrQKtFR7Gd8hZrzgqiG1Ra7cGYc8h2DD9vkSFGNlweb9Q00rBxOK2w==", 10452 "dev": true, 10453 "requires": { 10454 "chalk": "^4.1.0", 10455 "clean-css": "^5.0.1", 10456 "maxmin": "^3.0.0" 10457 10457 }, 10458 10458 "dependencies": { 10459 10459 "ansi-styles": { 10460 "version": " 3.2.1",10461 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles- 3.2.1.tgz",10462 "integrity": "sha512- VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",10463 "dev": true, 10464 "requires": { 10465 "color-convert": "^ 1.9.0"10460 "version": "4.3.0", 10461 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 10462 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 10463 "dev": true, 10464 "requires": { 10465 "color-convert": "^2.0.1" 10466 10466 } 10467 10467 }, 10468 10468 "chalk": { 10469 "version": "2.4.2", 10470 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 10471 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 10472 "dev": true, 10473 "requires": { 10474 "ansi-styles": "^3.2.1", 10475 "escape-string-regexp": "^1.0.5", 10476 "supports-color": "^5.3.0" 10477 } 10469 "version": "4.1.0", 10470 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 10471 "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 10472 "dev": true, 10473 "requires": { 10474 "ansi-styles": "^4.1.0", 10475 "supports-color": "^7.1.0" 10476 } 10477 }, 10478 "color-convert": { 10479 "version": "2.0.1", 10480 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 10481 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 10482 "dev": true, 10483 "requires": { 10484 "color-name": "~1.1.4" 10485 } 10486 }, 10487 "color-name": { 10488 "version": "1.1.4", 10489 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 10490 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 10491 "dev": true 10492 }, 10493 "figures": { 10494 "version": "3.2.0", 10495 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 10496 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 10497 "dev": true, 10498 "requires": { 10499 "escape-string-regexp": "^1.0.5" 10500 } 10501 }, 10502 "has-flag": { 10503 "version": "4.0.0", 10504 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 10505 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 10506 "dev": true 10507 }, 10508 "maxmin": { 10509 "version": "3.0.0", 10510 "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-3.0.0.tgz", 10511 "integrity": "sha512-wcahMInmGtg/7c6a75fr21Ch/Ks1Tb+Jtoan5Ft4bAI0ZvJqyOw8kkM7e7p8hDSzY805vmxwHT50KcjGwKyJ0g==", 10512 "dev": true, 10513 "requires": { 10514 "chalk": "^4.1.0", 10515 "figures": "^3.2.0", 10516 "gzip-size": "^5.1.1", 10517 "pretty-bytes": "^5.3.0" 10518 } 10519 }, 10520 "pretty-bytes": { 10521 "version": "5.6.0", 10522 "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", 10523 "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", 10524 "dev": true 10478 10525 }, 10479 10526 "supports-color": { 10480 "version": " 5.5.0",10481 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color- 5.5.0.tgz",10482 "integrity": "sha512- QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",10483 "dev": true, 10484 "requires": { 10485 "has-flag": "^ 3.0.0"10527 "version": "7.2.0", 10528 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 10529 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 10530 "dev": true, 10531 "requires": { 10532 "has-flag": "^4.0.0" 10486 10533 } 10487 10534 } … … 14183 14230 }, 14184 14231 "joi": { 14185 "version": "17. 3.0",14186 "resolved": "https://registry.npmjs.org/joi/-/joi-17. 3.0.tgz",14187 "integrity": "sha512- Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg==",14232 "version": "17.4.0", 14233 "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", 14234 "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", 14188 14235 "dev": true, 14189 14236 "requires": { … … 19256 19303 }, 19257 19304 "sass": { 19258 "version": "1.32. 6",19259 "resolved": "https://registry.npmjs.org/sass/-/sass-1.32. 6.tgz",19260 "integrity": "sha512- 1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==",19305 "version": "1.32.8", 19306 "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", 19307 "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", 19261 19308 "dev": true, 19262 19309 "requires": { … … 21831 21878 }, 21832 21879 "uglify-js": { 21833 "version": "3.1 2.6",21834 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1 2.6.tgz",21835 "integrity": "sha512- aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw==",21880 "version": "3.13.2", 21881 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz", 21882 "integrity": "sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw==", 21836 21883 "dev": true 21837 21884 }, … … 22374 22421 }, 22375 22422 "wait-on": { 22376 "version": "5. 2.1",22377 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5. 2.1.tgz",22378 "integrity": "sha512- H2F986kNWMU9hKlI9l/ppO6tN8ZSJd35yBljMLa1/vjzWP++Qh6aXyt77/u7ySJFZQqBtQxnvm/xgG48AObXcw==",22423 "version": "5.3.0", 22424 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", 22425 "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", 22379 22426 "dev": true, 22380 22427 "requires": { 22381 22428 "axios": "^0.21.1", 22382 22429 "joi": "^17.3.0", 22383 "lodash": "^4.17.2 0",22430 "lodash": "^4.17.21", 22384 22431 "minimist": "^1.2.5", 22385 22432 "rxjs": "^6.6.3" … … 22387 22434 "dependencies": { 22388 22435 "lodash": { 22389 "version": "4.17.2 0",22390 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2 0.tgz",22391 "integrity": "sha512- PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",22436 "version": "4.17.21", 22437 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 22438 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 22392 22439 "dev": true 22393 22440 }, … … 22399 22446 }, 22400 22447 "rxjs": { 22401 "version": "6.6. 3",22402 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6. 3.tgz",22403 "integrity": "sha512- trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",22448 "version": "6.6.6", 22449 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", 22450 "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", 22404 22451 "dev": true, 22405 22452 "requires": { -
branches/5.4/package.json
r50189 r50604 32 32 "@wordpress/scripts": "6.2.0", 33 33 "autoprefixer": "^9.8.6", 34 "check-node-version": "4. 0.3",34 "check-node-version": "4.1.0", 35 35 "copy-webpack-plugin": "^5.1.2", 36 36 "cssnano": "4.1.10", … … 42 42 "grunt-contrib-concat": "1.0.1", 43 43 "grunt-contrib-copy": "~1.0.0", 44 "grunt-contrib-cssmin": "~ 3.0.0",44 "grunt-contrib-cssmin": "~4.0.0", 45 45 "grunt-contrib-imagemin": "~4.0.0", 46 46 "grunt-contrib-jshint": "3.0.0", … … 62 62 "jquery-migrate": "1.4.1", 63 63 "matchdep": "~2.0.0", 64 "sass": "^1.32. 6",64 "sass": "^1.32.8", 65 65 "source-map-loader": "^1.1.3", 66 "uglify-js": "^3.1 2.6",66 "uglify-js": "^3.13.2", 67 67 "uglifyjs-webpack-plugin": "2.2.0", 68 "wait-on": "5. 2.1",68 "wait-on": "5.3.0", 69 69 "webpack": "4.43.0", 70 70 "webpack-dev-server": "3.11.2", -
branches/5.4/tests/phpunit/includes/abstract-testcase.php
r47198 r50604 1240 1240 ); 1241 1241 } 1242 1243 /** 1244 * Touches the given file and its directory if it doesn't already exist. 1245 * 1246 * This can be used to ensure a file that is implictly relied on in a test exists 1247 * without it having to be built. 1248 * 1249 * @param string $file The file name. 1250 */ 1251 public static function touch( $file ) { 1252 if ( file_exists( $file ) ) { 1253 return; 1254 } 1255 1256 $dir = dirname( $file ); 1257 1258 if ( ! file_exists( $dir ) ) { 1259 mkdir( $dir, 0777, true ); 1260 } 1261 1262 touch( $file ); 1263 } 1242 1264 } -
branches/5.4/tests/phpunit/tests/admin/includesPlugin.php
r47122 r50604 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.4/tests/phpunit/tests/dependencies/jquery.php
r46586 r50604 29 29 $this->assertEquals( $jquery_scripts[ $dep ], $o->src ); 30 30 } 31 }32 33 function test_presence_of_jquery_no_conflict() {34 $contents = trim( file_get_contents( ABSPATH . WPINC . '/js/jquery/jquery.js' ) );35 $noconflict = 'jQuery.noConflict();';36 $end = substr( $contents, - strlen( $noconflict ) );37 $this->assertEquals( $noconflict, $end );38 31 } 39 32 -
branches/5.4/tests/phpunit/tests/dependencies/scripts.php
r47416 r50604 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,jquery-migrate&ver={$ver}'></script>\n"; 716 717 $expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n"; 717 718 $expected .= "<script type='text/javascript' src='http://example.com'></script>\n"; 718 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/vendor/wp-polyfill .min.js'></script>\n";719 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/vendor/wp-polyfill{$suffix}.js'></script>\n"; 719 720 $expected .= "<script type='text/javascript'>\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'></script>\n";723 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/a11y .min.js'></script>\n";723 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/dom-ready{$suffix}.js'></script>\n"; 724 $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/a11y{$suffix}.js'></script>\n"; 724 725 $expected .= "<script type='text/javascript' src='http://example2.com'></script>\n"; 725 726 $expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n"; … … 1380 1381 ); 1381 1382 } 1382 1383 function test_no_source_mapping() {1384 $all_files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( dirname( ABSPATH ) . '/build/' ) );1385 $js_files = new RegexIterator( $all_files, '/\.js$/' );1386 foreach ( $js_files as $js_file ) {1387 $contents = trim( file_get_contents( $js_file ) );1388 1389 // We allow data: URLs.1390 $found = preg_match( '/sourceMappingURL=((?!data:).)/', $contents );1391 $this->assertSame( $found, 0, "sourceMappingURL found in $js_file" );1392 }1393 }1394 1383 } -
branches/5.4/tests/phpunit/tests/formatting/Emoji.php
r47122 r50604 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.4/tests/phpunit/tests/oembed/controller.php
r46586 r50604 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.4/tests/phpunit/tests/oembed/getResponseData.php
r46586 r50604 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.4/tests/phpunit/tests/oembed/template.php
r47198 r50604 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.4/tests/phpunit/tests/oembed/wpOembed.php
r45663 r50604 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.4/tests/phpunit/tests/shortcode.php
r47198 r50604 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.4/wp-tests-config-sample.php
r47201 r50604 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.