<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[50464] branches/5.7: Build/Test Tools: PHPUnit test improvements:</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/50464">50464</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/50464","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>johnbillion</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2021-03-01 20:21:23 +0000 (Mon, 01 Mar 2021)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Build/Test Tools: PHPUnit test improvements:

* Switch back to running the PHPUnit test suite against the `src` directory instead of `build`
* Increase the reliability of backing up the `mu-plugins` directory during tests
* Split the PHPUnit tests for PHP versions below 7.0 in half, allowing them to run in parallel and reduce the overall test run duration on GitHub Actions

Merges [50441-50444] to the 5.7 branch.

Fixes <a href="https://core.trac.wordpress.org/ticket/51734">#51734</a>, <a href="https://core.trac.wordpress.org/ticket/51735">#51735</a>, <a href="https://core.trac.wordpress.org/ticket/52645">#52645</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branches57githubworkflowsphpunittestsyml">branches/5.7/.github/workflows/phpunit-tests.yml</a></li>
<li><a href="#branches57githubworkflowstestcoverageyml">branches/5.7/.github/workflows/test-coverage.yml</a></li>
<li><a href="#branches57Gruntfilejs">branches/5.7/Gruntfile.js</a></li>
<li><a href="#branches57READMEmd">branches/5.7/README.md</a></li>
<li><a href="#branches57testsphpunitincludesabstracttestcasephp">branches/5.7/tests/phpunit/includes/abstract-testcase.php</a></li>
<li><a href="#branches57testsphpunittestsadminincludesPluginphp">branches/5.7/tests/phpunit/tests/admin/includesPlugin.php</a></li>
<li><a href="#branches57testsphpunittestsdependenciesjqueryphp">branches/5.7/tests/phpunit/tests/dependencies/jquery.php</a></li>
<li><a href="#branches57testsphpunittestsdependenciesscriptsphp">branches/5.7/tests/phpunit/tests/dependencies/scripts.php</a></li>
<li><a href="#branches57testsphpunittestsformattingEmojiphp">branches/5.7/tests/phpunit/tests/formatting/Emoji.php</a></li>
<li><a href="#branches57testsphpunittestsoembedcontrollerphp">branches/5.7/tests/phpunit/tests/oembed/controller.php</a></li>
<li><a href="#branches57testsphpunittestsoembedgetResponseDataphp">branches/5.7/tests/phpunit/tests/oembed/getResponseData.php</a></li>
<li><a href="#branches57testsphpunittestsoembedtemplatephp">branches/5.7/tests/phpunit/tests/oembed/template.php</a></li>
<li><a href="#branches57testsphpunittestsoembedwpOembedphp">branches/5.7/tests/phpunit/tests/oembed/wpOembed.php</a></li>
<li><a href="#branches57testsphpunittestsshortcodephp">branches/5.7/tests/phpunit/tests/shortcode.php</a></li>
<li><a href="#branches57testsqunitindexhtml">branches/5.7/tests/qunit/index.html</a></li>
<li><a href="#branches57wptestsconfigsamplephp">branches/5.7/wp-tests-config-sample.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branches57testsqunitwpincludesjsjqueryjs">branches/5.7/tests/qunit/wp-includes/js/jquery.js</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#branches57testsphpunittestsadminincludesUpdateCorephp">branches/5.7/tests/phpunit/tests/admin/includesUpdateCore.php</a></li>
<li><a href="#branches57testsphpunittestsdependenciesmediaelementjsphp">branches/5.7/tests/phpunit/tests/dependencies/mediaelementjs.php</a></li>
</ul>

<h3>Property Changed</h3>
<ul>
<li><a href="#branches57">branches/5.7/</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<span class="cx" style="display: block; padding: 0 10px">Index: branches/5.7
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- branches/5.7 2021-03-01 18:42:49 UTC (rev 50463)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ branches/5.7  2021-03-01 20:21:23 UTC (rev 50464)
</ins><a id="branches57"></a>
<div class="propset"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Property changes: branches/5.7</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svnmergeinfo"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: svn:mergeinfo</h4></div>
<span class="cx" style="display: block; padding: 0 10px"> /branches/4.9:43557,43622
</span><span class="cx" style="display: block; padding: 0 10px"> /branches/5.0:43681-43682,43684-43688,43719-43720,43723,43726-43727,43729-43731,43734-43744,43747,43751-43754,43758,43760-43765,43767-43770,43772,43774-43781,43783,43785,43790-43806,43808-43821,43825,43828,43830-43834,43836-43843,43846-43863,43867-43889,43891-43894,43897-43905,43908-43909,43911-43929,43931-43942,43946-43947,43949-43956,43959-43964,43967-43969,43988,43994,44014,44017,44047,44183,44185,44187-44206,44208-44213,44231-44232,44235,44248,44284,44287-44288
</span><span class="cx" style="display: block; padding: 0 10px"> /branches/5.5:49373-49379,49381
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-/trunk:50428-50430,50439,50445
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/trunk:50428-50430,50439,50441-50445
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="branches57githubworkflowsphpunittestsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/.github/workflows/phpunit-tests.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/.github/workflows/phpunit-tests.yml  2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/.github/workflows/phpunit-tests.yml    2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,28 +15,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">     - cron: '0 0 * * 0'
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> env:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  LOCAL_DIR: build
</del><span class="cx" style="display: block; padding: 0 10px">   PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
</span><span class="cx" style="display: block; padding: 0 10px">   COMPOSER_INSTALL: ${{ false }}
</span><span class="cx" style="display: block; padding: 0 10px">   # Controls which NPM script to use for running PHPUnit tests. Options ar `php` and `php-composer`.
</span><span class="cx" style="display: block; padding: 0 10px">   PHPUNIT_SCRIPT: php
</span><span class="cx" style="display: block; padding: 0 10px">   LOCAL_PHP_MEMCACHED: ${{ false }}
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  SLOW_TESTS: 'external-http,media,restapi'
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # Sets up WordPress for testing or development use.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  # Sets up the workflow for testing.
</ins><span class="cx" style="display: block; padding: 0 10px">   #
</span><span class="cx" style="display: block; padding: 0 10px">   # Performs the following steps:
</span><span class="cx" style="display: block; padding: 0 10px">   # - Cancels all previous workflow runs for pull requests that have not completed.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # - Checks out the repository.
-  # - Logs debug information about the runner container.
-  # - Installs NodeJS 14.
-  # - Sets up caching for NPM.
-  # _ Installs NPM dependencies using install-changed to hash the `package.json` file.
-  # - Builds WordPress to run from the `build` directory.
-  # - Creates a ZIP file of compiled WordPress.
-  # - Uploads ZIP file as an artifact.
-  setup-wordpress:
-    name: Setup WordPress
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  setup-workflow:
+    name: Setup Workflow
</ins><span class="cx" style="display: block; padding: 0 10px">     runs-on: ubuntu-latest
</span><span class="cx" style="display: block; padding: 0 10px">     if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,69 +39,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         with:
</span><span class="cx" style="display: block; padding: 0 10px">           access_token: ${{ github.token }}
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      - name: Checkout repository
-        uses: actions/checkout@v2
-
-      - name: Log debug information
-        run: |
-          echo "$GITHUB_REF"
-          echo "$GITHUB_EVENT_NAME"
-          npm --version
-          node --version
-          curl --version
-          git --version
-          svn --version
-          php --version
-          php -i
-          locale -a
-
-      - name: Install NodeJS
-        uses: actions/setup-node@v2
-        with:
-          node-version: 14
-
-      - name: Cache NodeJS modules
-        uses: actions/cache@v2
-        env:
-          cache-name: cache-node-modules
-        with:
-          # npm cache files are stored in `~/.npm` on Linux/macOS
-          path: ~/.npm
-          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: |
-            ${{ runner.os }}-npm-
-
-      - name: Install Dependencies
-        run: npx install-changed --install-command="npm ci"
-
-      - name: Build WordPress
-        run: npm run build
-
-      - name: Create ZIP artifact
-        uses: thedoctor0/zip-release@0.4.1
-        with:
-          filename: built-wp-${{ github.sha }}.zip
-          exclusions: '*.git* /*node_modules/* packagehash.txt'
-
-      - name: Upload build artifact
-        uses: actions/upload-artifact@v2
-        with:
-          name: built-wp-${{ github.sha }}
-          path: built-wp-${{ github.sha }}.zip
-          if-no-files-found: error
-
</del><span class="cx" style="display: block; padding: 0 10px">   # Runs the PHPUnit tests for WordPress.
</span><span class="cx" style="display: block; padding: 0 10px">   #
</span><span class="cx" style="display: block; padding: 0 10px">   # Performs the following steps:
</span><span class="cx" style="display: block; padding: 0 10px">   # - Set environment variables.
</span><span class="cx" style="display: block; padding: 0 10px">   # - Sets up the environment variables needed for testing with memcached (if desired).
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # - Downloads the built WordPress artifact from the previous job.
-  # - Unzips the artifact.
</del><span class="cx" style="display: block; padding: 0 10px">   # - Installs NodeJS 14.
</span><span class="cx" style="display: block; padding: 0 10px">   # - Sets up caching for NPM.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # _ Installs NPM dependencies using install-changed to hash the `package.json` file.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  # - Installs NPM dependencies
</ins><span class="cx" style="display: block; padding: 0 10px">   # - Configures caching for Composer.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # _ Installs Composer dependencies (if desired).
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  # - Installs Composer dependencies (if desired).
</ins><span class="cx" style="display: block; padding: 0 10px">   # - Logs Docker debug information (about both the Docker installation within the runner).
</span><span class="cx" style="display: block; padding: 0 10px">   # - Starts the WordPress Docker container.
</span><span class="cx" style="display: block; padding: 0 10px">   # - Starts the memcached server after the Docker network has been created (if desired).
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -124,8 +63,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">   # - Submit the test results to the WordPress.org host test results.
</span><span class="cx" style="display: block; padding: 0 10px">   # - todo: Configure Slack notifications for failing tests.
</span><span class="cx" style="display: block; padding: 0 10px">   test-php:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-    name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
-    needs: setup-wordpress
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.split_slow && ' slow tests' || '' }} ${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
</ins><span class="cx" style="display: block; padding: 0 10px">     runs-on: ${{ matrix.os }}
</span><span class="cx" style="display: block; padding: 0 10px">     strategy:
</span><span class="cx" style="display: block; padding: 0 10px">       matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -132,8 +70,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         php: [ '5.6.20', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0' ]
</span><span class="cx" style="display: block; padding: 0 10px">         os: [ ubuntu-latest ]
</span><span class="cx" style="display: block; padding: 0 10px">         memcached: [ false ]
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        split_slow: [ false ]
</ins><span class="cx" style="display: block; padding: 0 10px">         multisite: [ false, true ]
</span><span class="cx" style="display: block; padding: 0 10px">         include:
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          # Additional "slow" jobs for PHP 5.6.
+          - php: '5.6.20'
+            os: ubuntu-latest
+            memcached: false
+            multisite: false
+            split_slow: true
+          - php: '5.6.20'
+            os: ubuntu-latest
+            memcached: false
+            multisite: true
+            split_slow: true
</ins><span class="cx" style="display: block; padding: 0 10px">           # Include jobs for PHP 7.4 with memcached.
</span><span class="cx" style="display: block; padding: 0 10px">           - php: '7.4'
</span><span class="cx" style="display: block; padding: 0 10px">             os: ubuntu-latest
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -160,14 +110,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">           echo "PHP_FPM_UID=$(id -u)" >> $GITHUB_ENV
</span><span class="cx" style="display: block; padding: 0 10px">           echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      - name: Download the built WordPress artifact
-        uses: actions/download-artifact@v2
-        with:
-          name: built-wp-${{ github.sha }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      - name: Checkout repository
+        uses: actions/checkout@v2
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      - name: Unzip built artifact
-        run: unzip built-wp-${{ github.sha }}.zip
-
</del><span class="cx" style="display: block; padding: 0 10px">       - name: Install NodeJS
</span><span class="cx" style="display: block; padding: 0 10px">         uses: actions/setup-node@v2
</span><span class="cx" style="display: block; padding: 0 10px">         with:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -231,7 +176,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Start the Memcached server.
</span><span class="cx" style="display: block; padding: 0 10px">         if: ${{ matrix.memcached }}
</span><span class="cx" style="display: block; padding: 0 10px">         run: |
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-          cp tests/phpunit/includes/object-cache.php build/wp-content/object-cache.php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          cp tests/phpunit/includes/object-cache.php src/wp-content/object-cache.php
</ins><span class="cx" style="display: block; padding: 0 10px">           docker run --name memcached --net $(basename "$PWD")_wpdevnet -d memcached
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       - name: General debug information
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -256,22 +201,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Install WordPress
</span><span class="cx" style="display: block; padding: 0 10px">         run: npm run env:install
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      - name: Run slow PHPUnit tests
+        if: ${{ matrix.split_slow }}
+        run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ${{ env.SLOW_TESTS }}
+
+      - name: Run PHPUnit tests for single site excluding slow tests
+        if: ${{ matrix.php < '7.0' && ! matrix.split_slow && ! matrix.multisite }}
+        run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-required
+
+      - name: Run PHPUnit tests for Multisite excluding slow tests
+        if: ${{ matrix.php < '7.0' && ! matrix.split_slow && matrix.multisite }}
+        run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-excluded,oembed-headers
+
</ins><span class="cx" style="display: block; padding: 0 10px">       - name: Run PHPUnit tests
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if: ${{ matrix.php >= '7.0' }}
</ins><span class="cx" style="display: block; padding: 0 10px">         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }}
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Run AJAX tests
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if: ${{ ! matrix.split_slow }}
</ins><span class="cx" style="display: block; padding: 0 10px">         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ajax
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Run ms-files tests as a multisite install
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if: ${{ matrix.multisite }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if: ${{ matrix.multisite && ! matrix.split_slow }}
</ins><span class="cx" style="display: block; padding: 0 10px">         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml --group ms-files
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Run external HTTP tests
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if: ${{ ! matrix.multisite }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if: ${{ ! matrix.multisite && ! matrix.split_slow }}
</ins><span class="cx" style="display: block; padding: 0 10px">         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group external-http
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       # __fakegroup__ is excluded to force PHPUnit to ignore the <exclude> settings in phpunit.xml.dist.
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Run (xDebug) tests
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if: ${{ ! matrix.split_slow }}
</ins><span class="cx" style="display: block; padding: 0 10px">         run: LOCAL_PHP_XDEBUG=true npm run test:${{ env.PHPUNIT_SCRIPT }} -- -v --group xdebug --exclude-group __fakegroup__
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Checkout the WordPress Test Reporter
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -281,14 +241,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">           repository: 'WordPress/phpunit-test-runner'
</span><span class="cx" style="display: block; padding: 0 10px">           path: 'test-runner'
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      - name: Set up the Git repository
-        if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/master' && matrix.report }}
-        run: |
-          git init
-          git remote add origin https://github.com/WordPress/wordpress-develop.git
-          git fetch
-          git reset origin/master
-
</del><span class="cx" style="display: block; padding: 0 10px">       - name: Submit test results to the WordPress.org host test results
</span><span class="cx" style="display: block; padding: 0 10px">         if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/master' && matrix.report }}
</span><span class="cx" style="display: block; padding: 0 10px">         env:
</span></span></pre></div>
<a id="branches57githubworkflowstestcoverageyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/.github/workflows/test-coverage.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/.github/workflows/test-coverage.yml  2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/.github/workflows/test-coverage.yml    2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,7 +6,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">     - cron: '0 0 * * *'
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> env:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  LOCAL_DIR: build
</del><span class="cx" style="display: block; padding: 0 10px">   PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
</span><span class="cx" style="display: block; padding: 0 10px">   COMPOSER_INSTALL: ${{ false }}
</span><span class="cx" style="display: block; padding: 0 10px">   # Controls which NPM script to use for running PHPUnit tests. Options ar `php` and `php-composer`.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26,7 +25,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">   # - Installs NodeJS 14.
</span><span class="cx" style="display: block; padding: 0 10px">   # - Sets up caching for NPM.
</span><span class="cx" style="display: block; padding: 0 10px">   # _ Installs NPM dependencies using install-changed to hash the `package.json` file.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-  # - Builds WordPress to run from the `build` directory.
</del><span class="cx" style="display: block; padding: 0 10px">   # - Logs Docker debug information (about the Docker installation within the runner).
</span><span class="cx" style="display: block; padding: 0 10px">   # - Starts the WordPress Docker container.
</span><span class="cx" style="display: block; padding: 0 10px">   # - Logs debug general information.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,9 +85,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">       - name: Install Dependencies
</span><span class="cx" style="display: block; padding: 0 10px">         run: npx install-changed --install-command="npm ci"
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      - name: Build WordPress
-        run: npm run build
-
</del><span class="cx" style="display: block; padding: 0 10px">       - name: Docker debug information
</span><span class="cx" style="display: block; padding: 0 10px">         run: |
</span><span class="cx" style="display: block; padding: 0 10px">           docker -v
</span></span></pre></div>
<a id="branches57Gruntfilejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/Gruntfile.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/Gruntfile.js 2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/Gruntfile.js   2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7,6 +7,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> module.exports = function(grunt) {
</span><span class="cx" style="display: block; padding: 0 10px">        var path = require('path'),
</span><span class="cx" style="display: block; padding: 0 10px">                fs = require( 'fs' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                glob = require( 'glob' ),
+               assert = require( 'assert' ).strict,
</ins><span class="cx" style="display: block; padding: 0 10px">                 spawn = require( 'child_process' ).spawnSync,
</span><span class="cx" style="display: block; padding: 0 10px">                SOURCE_DIR = 'src/',
</span><span class="cx" style="display: block; padding: 0 10px">                BUILD_DIR = 'build/',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1433,6 +1435,126 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'copy:version',
</span><span class="cx" style="display: block; padding: 0 10px">        ] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        /**
+        * Build verification tasks.
+        */
+       grunt.registerTask( 'verify:build', [
+               'verify:wp-embed',
+               'verify:old-files',
+               'verify:source-maps',
+       ] );
+
+       /**
+        * Build assertions for wp-embed.min.js.
+        *
+        * @ticket 34698
+        */
+       grunt.registerTask( 'verify:wp-embed', function() {
+               const file = `${ BUILD_DIR }/wp-includes/js/wp-embed.min.js`;
+
+               assert(
+                       fs.existsSync( file ),
+                       'The build/wp-includes/js/wp-embed.min.js file does not exist.'
+               );
+
+               const contents = fs.readFileSync( file, {
+                       encoding: 'utf8',
+               } );
+
+               assert(
+                       contents.length > 0,
+                       'The build/wp-includes/js/wp-embed.min.js file must not be empty.'
+               );
+               assert(
+                       false === contents.includes( '&' ),
+                       'The build/wp-includes/js/wp-embed.min.js file must not contain ampersands.'
+               );
+       } );
+
+       /**
+        * Build assertions to ensure no project files are inside `$_old_files` in the build directory.
+        *
+        * @ticket 36083
+        */
+       grunt.registerTask( 'verify:old-files', function() {
+               const file = `${ BUILD_DIR }wp-admin/includes/update-core.php`;
+
+               assert(
+                       fs.existsSync( file ),
+                       'The build/wp-admin/includes/update-core.php file does not exist.'
+               );
+
+               const contents = fs.readFileSync( file, {
+                       encoding: 'utf8',
+               } );
+
+               assert(
+                       contents.length > 0,
+                       'The build/wp-admin/includes/update-core.php file must not be empty.'
+               );
+
+               const match = contents.match( /\$_old_files = array\(([^\)]+)\);/ );
+
+               assert(
+                       match.length > 0,
+                       'The build/wp-admin/includes/update-core.php file does not include an `$_old_files` array.'
+               );
+
+               const files = match[1].split( '\n\t' ).filter( function( file ) {
+                       // Filter out empty lines
+                       if ( '' === file ) {
+                               return false;
+                       }
+
+                       // Filter out commented out lines
+                       if ( 0 === file.indexOf( '/' ) ) {
+                               return false;
+                       }
+
+                       return true;
+               } ).map( function( file ) {
+                       // Strip leading and trailing single quotes and commas
+                       return file.replace( /^\'|\',$/g, '' );
+               } );
+
+               files.forEach(function( file ){
+                       const search = `${ BUILD_DIR }${ file }`;
+                       assert(
+                               false === fs.existsSync( search ),
+                               `${ search } should not be present in the $_old_files array.`
+                       );
+               });
+       } );
+
+       /**
+        * Build assertions for the lack of source maps in JavaScript files.
+        *
+        * @ticket 24994
+        * @ticket 46218
+        */
+       grunt.registerTask( 'verify:source-maps', function() {
+               const path = `${ BUILD_DIR }**/*.js`;
+               const files = glob.sync( path );
+
+               assert(
+                       files.length > 0,
+                       'No JavaScript files found in the build directory.'
+               );
+
+               files.forEach( function( file ) {
+                       const contents = fs.readFileSync( file, {
+                               encoding: 'utf8',
+                       } );
+                       // `data:` URLs are allowed:
+                       const match = contents.match( /sourceMappingURL=((?!data:).)/ );
+
+                       assert(
+                               match === null,
+                               `The ${ file } file must not contain a sourceMappingURL.`
+                       );
+               } );
+       } );
+
</ins><span class="cx" style="display: block; padding: 0 10px">         grunt.registerTask( 'build', function() {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( grunt.option( 'dev' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        grunt.task.run( [
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1446,7 +1568,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'build:css',
</span><span class="cx" style="display: block; padding: 0 10px">                                'includes:emoji',
</span><span class="cx" style="display: block; padding: 0 10px">                                'includes:embed',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'replace:emojiBannerText'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'replace:emojiBannerText',
+                               'verify:build'
</ins><span class="cx" style="display: block; padding: 0 10px">                         ] );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        } );
</span></span></pre></div>
<a id="branches57READMEmd"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/README.md</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/README.md    2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/README.md      2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,7 +45,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> If you're making changes to WordPress core files, you should start the file watcher in order to build or copy the files as necessary:
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> ```
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-npm run watch
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+npm run dev
</ins><span class="cx" style="display: block; padding: 0 10px"> ```
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> To stop the watcher, press `ctrl+c`.
</span></span></pre></div>
<a id="branches57testsphpunitincludesabstracttestcasephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/includes/abstract-testcase.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/includes/abstract-testcase.php 2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/includes/abstract-testcase.php   2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1293,4 +1293,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       /**
+        * Touches the given file and its directory if it doesn't already exist.
+        *
+        * This can be used to ensure a file that is implictly relied on in a test exists
+        * without it having to be built.
+        *
+        * @param string $file The file name.
+        */
+       public static function touch( $file ) {
+               if ( file_exists( $file ) ) {
+                       return;
+               }
+
+               $dir = dirname( $file );
+
+               if ( ! file_exists( $dir ) ) {
+                       mkdir( $dir, 0777, true );
+               }
+
+               touch( $file );
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="branches57testsphpunittestsadminincludesPluginphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/admin/includesPlugin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/admin/includesPlugin.php 2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/admin/includesPlugin.php   2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,6 +4,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @group admin
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_Admin_includesPlugin extends WP_UnitTestCase {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public static function wpSetUpBeforeClass( $factory ) {
+               self::_back_up_mu_plugins();
+       }
+
+       public static function wpTearDownAfterClass() {
+               self::_restore_mu_plugins();
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         function test_get_plugin_data() {
</span><span class="cx" style="display: block; padding: 0 10px">                $data = get_plugin_data( DIR_TESTDATA . '/plugins/hello.php' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -369,12 +377,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'list_files_test_plugin/list_files_test_plugin.php',
</span><span class="cx" style="display: block; padding: 0 10px">                        'list_files_test_plugin/subdir/subfile.php',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( $expected, $plugin_files );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                unlink( $sub_dir . '/subfile.php' );
</span><span class="cx" style="display: block; padding: 0 10px">                unlink( $plugin[1] );
</span><span class="cx" style="display: block; padding: 0 10px">                rmdir( $sub_dir );
</span><span class="cx" style="display: block; padding: 0 10px">                rmdir( $plugin_dir );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->assertSame( $expected, $plugin_files );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -381,22 +390,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::get_mu_plugins
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_mu_plugins_when_mu_plugins_exists_but_is_empty() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
-                       $exists = true;
-                       $this->_back_up_mu_plugins();
-               } else {
-                       $exists = false;
-                       mkdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         mkdir( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( array(), get_mu_plugins() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $mu_plugins = get_mu_plugins();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Clean up.
-               if ( $exists ) {
-                       $this->_restore_mu_plugins();
-               } else {
-                       rmdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         rmdir( WPMU_PLUGIN_DIR );
+
+               $this->assertSame( array(), $mu_plugins );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -403,20 +403,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::get_mu_plugins
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_mu_plugins_when_mu_plugins_directory_does_not_exist() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $exists = false;
-               if ( is_dir( WPMU_PLUGIN_DIR ) ) {
-                       $exists = true;
-                       $this->_back_up_mu_plugins();
-                       rmdir( WPMU_PLUGIN_DIR );
-               }
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertFileNotExists( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertSame( array(), get_mu_plugins() );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-               // Clean up.
-               if ( $exists ) {
-                       mkdir( WPMU_PLUGIN_DIR );
-                       $this->_restore_mu_plugins();
-               }
</del><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -423,24 +411,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::get_mu_plugins
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_mu_plugins_should_ignore_index_php_containing_silence_is_golden() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
-                       $exists = true;
-                       $this->_back_up_mu_plugins();
-               } else {
-                       $exists = false;
-                       mkdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         mkdir( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_create_plugin( '<?php\n//Silence is golden.', 'index.php', WPMU_PLUGIN_DIR );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( array(), get_mu_plugins() );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Clean up.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $mu_plugins = get_mu_plugins();
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 unlink( WPMU_PLUGIN_DIR . '/index.php' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $exists ) {
-                       $this->_restore_mu_plugins();
-               } else {
-                       rmdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         rmdir( WPMU_PLUGIN_DIR );
+
+               $this->assertSame( array(), $mu_plugins );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -447,25 +427,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::get_mu_plugins
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_mu_plugins_should_not_ignore_index_php_containing_something_other_than_silence_is_golden() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
-                       $exists = true;
-                       $this->_back_up_mu_plugins();
-               } else {
-                       $exists = false;
-                       mkdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         mkdir( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_create_plugin( '<?php\n//Silence is not golden.', 'index.php', WPMU_PLUGIN_DIR );
</span><span class="cx" style="display: block; padding: 0 10px">                $found = get_mu_plugins();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( array( 'index.php' ), array_keys( $found ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Clean up.
</span><span class="cx" style="display: block; padding: 0 10px">                unlink( WPMU_PLUGIN_DIR . '/index.php' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $exists ) {
-                       $this->_restore_mu_plugins();
-               } else {
-                       rmdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         rmdir( WPMU_PLUGIN_DIR );
+
+               $this->assertSame( array( 'index.php' ), array_keys( $found ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -472,27 +443,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::get_mu_plugins
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_get_mu_plugins_should_ignore_files_without_php_extensions() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
-                       $exists = true;
-                       $this->_back_up_mu_plugins();
-               } else {
-                       $exists = false;
-                       mkdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         mkdir( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_create_plugin( '<?php\n//Test', 'foo.php', WPMU_PLUGIN_DIR );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_create_plugin( '<?php\n//Test 2', 'bar.txt', WPMU_PLUGIN_DIR );
</span><span class="cx" style="display: block; padding: 0 10px">                $found = get_mu_plugins();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( array( 'foo.php' ), array_keys( $found ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Clean up.
</span><span class="cx" style="display: block; padding: 0 10px">                unlink( WPMU_PLUGIN_DIR . '/foo.php' );
</span><span class="cx" style="display: block; padding: 0 10px">                unlink( WPMU_PLUGIN_DIR . '/bar.txt' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $exists ) {
-                       $this->_restore_mu_plugins();
-               } else {
-                       rmdir( WPMU_PLUGIN_DIR );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->assertSame( array( 'foo.php' ), array_keys( $found ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -651,34 +612,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Move existing mu-plugins to wp-content/mu-plugin/backup.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Move existing mu-plugins to wp-content/mu-plugin-backup.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.2.0
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        private function _back_up_mu_plugins() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ private static function _back_up_mu_plugins() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( is_dir( WPMU_PLUGIN_DIR ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( ! is_dir( $mu_bu_dir ) ) {
-                               mkdir( $mu_bu_dir );
-                       }
-
-                       $files_to_move = array();
-                       $mu_plugins    = opendir( WPMU_PLUGIN_DIR );
-                       if ( $mu_plugins ) {
-                               while ( false !== $plugin = readdir( $mu_plugins ) ) {
-                                       if ( 0 !== strpos( $plugin, '.' ) ) {
-                                               $files_to_move[] = $plugin;
-                                       }
-                               }
-                       }
-
-                       closedir( $mu_plugins );
-
-                       foreach ( $files_to_move as $file_to_move ) {
-                               $f = rename( WPMU_PLUGIN_DIR . '/' . $file_to_move, $mu_bu_dir . '/' . $file_to_move );
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 rename( WPMU_PLUGIN_DIR, $mu_bu_dir );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -689,26 +632,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        private function _restore_mu_plugins() {
-               $mu_bu_dir     = WP_CONTENT_DIR . '/mu-plugin-backup';
-               $files_to_move = array();
-               $mu_plugins    = @opendir( $mu_bu_dir );
-               if ( $mu_plugins ) {
-                       while ( false !== $plugin = readdir( $mu_plugins ) ) {
-                               if ( 0 !== strpos( $plugin, '.' ) ) {
-                                       $files_to_move[] = $plugin;
-                               }
-                       }
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ private static function _restore_mu_plugins() {
+               $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                closedir( $mu_plugins );
-
-               foreach ( $files_to_move as $file_to_move ) {
-                       rename( $mu_bu_dir . '/' . $file_to_move, WPMU_PLUGIN_DIR . '/' . $file_to_move );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( is_dir( WPMU_PLUGIN_DIR ) ) {
+                       rmdir( WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_dir( $mu_bu_dir ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        rmdir( $mu_bu_dir );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 rename( $mu_bu_dir, WPMU_PLUGIN_DIR );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="branches57testsphpunittestsadminincludesUpdateCorephp"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: branches/5.7/tests/phpunit/tests/admin/includesUpdateCore.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/admin/includesUpdateCore.php     2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/admin/includesUpdateCore.php       2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,34 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-
-/**
- * @group admin
- * @group upgrade
- */
-class Tests_Admin_IncludesUpdateCore extends WP_UnitTestCase {
-       public function data_old_files() {
-               global $_old_files;
-
-               require_once ABSPATH . 'wp-admin/includes/update-core.php';
-
-               $files = $_old_files;
-
-               foreach ( $files as &$file ) {
-                       $file = array( $file );
-               }
-
-               return $files;
-       }
-
-       /**
-        * Ensure no project files are inside `$_old_files` in the build directory.
-        *
-        * @ticket 36083
-        *
-        * @dataProvider data_old_files
-        *
-        * @param string $file File name.
-        */
-       public function test_new_files_are_not_in_old_files_array_compiled( $file ) {
-               $this->assertFileNotExists( dirname( ABSPATH ) . '/build/' . $file );
-       }
-}
</del></span></pre></div>
<a id="branches57testsphpunittestsdependenciesjqueryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/dependencies/jquery.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/dependencies/jquery.php  2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/dependencies/jquery.php    2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -39,13 +39,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function test_presence_of_jquery_no_conflict() {
-               $contents   = trim( file_get_contents( ABSPATH . WPINC . '/js/jquery/jquery.js' ) );
-               $noconflict = 'jQuery.noConflict();';
-               $end        = substr( $contents, - strlen( $noconflict ) );
-               $this->assertSame( $noconflict, $end );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 22896
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span></span></pre></div>
<a id="branches57testsphpunittestsdependenciesmediaelementjsphp"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: branches/5.7/tests/phpunit/tests/dependencies/mediaelementjs.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/dependencies/mediaelementjs.php  2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/dependencies/mediaelementjs.php    2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,36 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-
-/**
- * @group dependencies
- * @group scripts
- */
-class Tests_Dependencies_MediaElementjs extends WP_UnitTestCase {
-       /**
-        * Test if the MediaElement.js Flash fallbacks have been re-added.
-        *
-        * MediaElement's Flash fallbacks were removed in WordPress 4.9.2 due to limited use cases and
-        * a history of security vulnerabilities. It's unlikely that there'll ever be a need to
-        * restore them in the future, and doing so could introduce security vulnerabilities. If you
-        * want to re-add them, please discuss that with the Security team first.
-        *
-        * @since 5.1.0
-        *
-        * @ticket 42720
-        */
-       function test_exclusion_of_flash() {
-               $mejs_folder = ABSPATH . WPINC . '/js/mediaelement';
-               $js_files    = glob( $mejs_folder . '/*.js' );
-
-               /*
-                * The path in $mejs_folder is hardcoded, so this is just a sanity check to make sure the
-                * correct directory is used, in case it gets renamed in the future.
-                */
-               $this->assertGreaterThan( 0, count( $js_files ) );
-
-               $mejs_directory_iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $mejs_folder ) );
-               $mejs_swf_iterator       = new RegexIterator( $mejs_directory_iterator, '/\.swf$/i', RecursiveRegexIterator::GET_MATCH );
-
-               // Make sure the Flash files haven't been re-added accidentally.
-               $this->assertCount( 0, iterator_to_array( $mejs_swf_iterator ) );
-       }
-}
</del></span></pre></div>
<a id="branches57testsphpunittestsdependenciesscriptsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/dependencies/scripts.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/dependencies/scripts.php 2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/dependencies/scripts.php   2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -728,7 +728,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/vendor/wp-polyfill{$suffix}.js' id='wp-polyfill-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                $expected .= "<script type='text/javascript' id='wp-polyfill-js-after'>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $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>' );( 'objectFit' in document.documentElement.style ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-object-fit.min.js\"></scr' + 'ipt>' );\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $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>' );( 'objectFit' in document.documentElement.style ) || document.write( '<script src=\"http://example.org/wp-includes/js/dist/vendor/wp-polyfill-object-fit{$suffix}.js\"></scr' + 'ipt>' );\n";
</ins><span class="cx" style="display: block; padding: 0 10px">                 $expected .= "</script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/dom-ready{$suffix}.js' id='wp-dom-ready-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/hooks{$suffix}.js' id='wp-hooks-js'></script>\n";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1417,18 +1417,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function test_no_source_mapping() {
-               $all_files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( dirname( ABSPATH ) . '/build/' ) );
-               $js_files  = new RegexIterator( $all_files, '/\.js$/' );
-               foreach ( $js_files as $js_file ) {
-                       $contents = trim( file_get_contents( $js_file ) );
-
-                       // We allow data: URLs.
-                       $found = preg_match( '/sourceMappingURL=((?!data:).)/', $contents );
-                       $this->assertSame( $found, 0, "sourceMappingURL found in $js_file" );
-               }
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 52534
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::wp_localize_script
</span></span></pre></div>
<a id="branches57testsphpunittestsformattingEmojiphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/formatting/Emoji.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/formatting/Emoji.php     2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/formatting/Emoji.php       2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,6 +13,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 36525
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_unfiltered_emoji_cdns() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $output = get_echo( '_print_emoji_detection_script' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( wp_json_encode( $this->png_cdn ), $output );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31,6 +33,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'emoji_svg_url', array( $this, '_filtered_emoji_svn_cdn' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $output = get_echo( '_print_emoji_detection_script' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( wp_json_encode( $this->png_cdn ), $output );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -52,6 +56,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'emoji_url', array( $this, '_filtered_emoji_png_cdn' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // `_print_emoji_detection_script()` assumes `wp-includes/js/wp-emoji-loader.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $output = get_echo( '_print_emoji_detection_script' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertContains( wp_json_encode( $filtered_png_cdn ), $output );
</span></span></pre></div>
<a id="branches57testsphpunittestsoembedcontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/oembed/controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/oembed/controller.php    2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/oembed/controller.php      2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -34,6 +34,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_email' => 'administrator@example.com',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-embed.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function wpTearDownAfterClass() {
</span></span></pre></div>
<a id="branches57testsphpunittestsoembedgetResponseDataphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/oembed/getResponseData.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/oembed/getResponseData.php       2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/oembed/getResponseData.php 2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,6 +5,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @covers ::get_oembed_response_data
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_oEmbed_Response_Data extends WP_UnitTestCase {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function setUp() {
+               parent::setUp();
+
+               // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-embed.js' );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         function test_get_oembed_response_data_non_existent_post() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( get_oembed_response_data( 0, 100 ) );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="branches57testsphpunittestsoembedtemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/oembed/template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/oembed/template.php      2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/oembed/template.php        2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23,6 +23,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertQueryTrue( 'is_single', 'is_singular', 'is_embed' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // `print_embed_scripts()` assumes `wp-includes/js/wp-embed-template.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-embed-template.js' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 ob_start();
</span><span class="cx" style="display: block; padding: 0 10px">                require ABSPATH . WPINC . '/theme-compat/embed.php';
</span><span class="cx" style="display: block; padding: 0 10px">                $actual = ob_get_clean();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -290,50 +293,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Confirms that no ampersands exist in src/wp-includes/js/wp-embed.js.
+        *
+        * See also the `verify:wp-embed` Grunt task for verifying the built file.
+        *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @ticket 34698
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        function test_js_no_ampersands() {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertNotContains( '&', file_get_contents( ABSPATH . WPINC . '/js/wp-embed.js' ) );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-       /**
-        * @ticket 34698
-        *
-        * @depends test_js_no_ampersands
-        *
-        * The previous test confirms that no ampersands exist in src/wp-includes/js/wp-embed.js.
-        * However, we must also confirm that UglifyJS does not add ampersands during its
-        * optimizations (which we tweak to avoid, but indirectly -- understandably, there's
-        * no "don't add ampersands to my JavaScript file" option).
-        *
-        * So this test checks for ampersands in build/wp-includes/js/wp-embed.min.js.
-        * In many cases, this file will not exist; in those cases, we simply skip the test.
-        *
-        * So when would it be run? We have Travis CI run `npm run test` which then runs, in order,
-        * `qunit:compiled` (which runs the build) and then `phpunit`. Thus, this test will at least be
-        * run during continuous integration.
-        *
-        * However, we need to verify that `qunit:compiled` runs before `phpunit`. So this test also
-        * does a cheap check for a registered Grunt task called `test` that contains both
-        * `qunit:compiled` and `phpunit`, in that order.
-        *
-        * One final failsafe: The Gruntfile.js assertion takes place before checking for the existence
-        * of wp-embed.min.js. If the Grunt tasks are significantly refactored later, it could indicate
-        * that wp-embed.min.js doesn't exist anymore. We wouldn't want the test to silently become one
-        * that is always skipped, and thus useless.
-        */
-       function test_js_no_ampersands_in_compiled() {
-               $gruntfile = file_get_contents( dirname( ABSPATH ) . '/Gruntfile.js' );
-
-               // Confirm this file *should* exist, otherwise this test will always be skipped.
-               $test = '/grunt.registerTask\(\s*\'test\',.*\'qunit:compiled\'.*\'phpunit\'/';
-               $this->assertTrue( (bool) preg_match( $test, $gruntfile ) );
-
-               $file = dirname( ABSPATH ) . '/build/' . WPINC . '/js/wp-embed.min.js';
-               if ( ! file_exists( $file ) ) {
-                       return;
-               }
-               $this->assertNotContains( '&', file_get_contents( $file ) );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="branches57testsphpunittestsoembedwpOembedphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/oembed/wpOembed.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/oembed/wpOembed.php      2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/oembed/wpOembed.php        2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,6 +18,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->oembed = _wp_oembed_get_object();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->pre_oembed_result_filtered = false;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // `get_post_embed_html()` assumes `wp-includes/js/wp-embed.js` is present:
+               self::touch( ABSPATH . WPINC . '/js/wp-embed.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function _filter_pre_oembed_result( $result ) {
</span></span></pre></div>
<a id="branches57testsphpunittestsshortcodephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/phpunit/tests/shortcode.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/phpunit/tests/shortcode.php    2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/phpunit/tests/shortcode.php      2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -746,7 +746,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        function test_php_and_js_shortcode_attribute_regexes_match() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $file    = file_get_contents( ABSPATH . WPINC . '/js/shortcode.js' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $file    = file_get_contents( ABSPATH . 'js/_enqueues/wp/shortcode.js' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $matched = preg_match( '|\s+pattern = (\/.+\/)g;|', $file, $matches );
</span><span class="cx" style="display: block; padding: 0 10px">                $php     = get_shortcode_atts_regex();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="branches57testsqunitindexhtml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/tests/qunit/index.html</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/qunit/index.html       2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/tests/qunit/index.html 2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -152,6 +152,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <script src="wp-admin/js/dashboard.js"></script>
</span><span class="cx" style="display: block; padding: 0 10px">                <script src="wp-includes/js/shortcode.js"></script>
</span><span class="cx" style="display: block; padding: 0 10px">                <script src="wp-includes/js/api-request.js"></script>
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                <script src="wp-includes/js/jquery.js"></script>
</ins><span class="cx" style="display: block; padding: 0 10px">                 <script src="wp-includes/js/wp-api.js"></script>
</span><span class="cx" style="display: block; padding: 0 10px">                <script src="wp-admin/js/customize-controls.js"></script>
</span><span class="cx" style="display: block; padding: 0 10px">                <script src="wp-admin/js/customize-controls-utils.js"></script>
</span></span></pre></div>
<a id="branches57testsqunitwpincludesjsjqueryjsfromrev50441trunktestsqunitwpincludesjsjqueryjs"></a>
<div class="copfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Copied: branches/5.7/tests/qunit/wp-includes/js/jquery.js (from rev 50441, trunk/tests/qunit/wp-includes/js/jquery.js)</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/tests/qunit/wp-includes/js/jquery.js                         (rev 0)
+++ branches/5.7/tests/qunit/wp-includes/js/jquery.js   2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,10 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+( function( QUnit ) {
+       QUnit.module( 'jQuery' );
+
+       QUnit.test( 'jQuery is run in noConflict mode', function( assert ) {
+               assert.expect( 1 );
+
+               assert.ok( 'undefined' === typeof window.$ );
+       } );
+
+} )( window.QUnit );
</ins></span></pre></div>
<a id="branches57wptestsconfigsamplephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.7/wp-tests-config-sample.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.7/wp-tests-config-sample.php   2021-03-01 18:42:49 UTC (rev 50463)
+++ branches/5.7/wp-tests-config-sample.php     2021-03-01 20:21:23 UTC (rev 50464)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,11 +1,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /* Path to the WordPress codebase you'd like to test. Add a forward slash in the end. */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS ) {
-       define( 'ABSPATH', dirname( __FILE__ ) . '/build/' );
-} else {
-       define( 'ABSPATH', dirname( __FILE__ ) . '/src/' );
-}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+define( 'ABSPATH', dirname( __FILE__ ) . '/src/' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /*
</span><span class="cx" style="display: block; padding: 0 10px">  * Path to the theme to test with.
</span></span></pre>
</div>
</div>

</body>
</html>