Make WordPress Core

Changeset 49530


Ignore:
Timestamp:
11/06/2020 05:32:00 PM (5 years ago)
Author:
desrosj
Message:

Build/Test Tools: Backport the local Docker environment to the 4.9 branch.

This commit introduces the Docker-based local WordPress development environment to the 4.9 branch and converts the Travis test jobs to utilize this environment for easier and more consistent testing.

Until existing blockers with the PHP 5.2 Docker container can be solved, the PHP 5.2 test job will remain using the Travis precise image.

Merges [45745,45762,45783-45784,45800,45819,45885,46320,46999,47225,47912,48121,49335,49358,49360,49362] to the 4.9 branch.
See #48301, #47767.

Location:
branches/4.9
Files:
11 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/4.9

  • branches/4.9/.travis.yml

    r45006 r49530  
    1 sudo: false
    2 dist: trusty
    31language: php
     2
     3services:
     4  - docker
     5
    46cache:
    57  apt: true
     
    79    - $HOME/.npm
    810    - vendor
    9     - $HOME/.composer/cache
     11
    1012env:
    1113  global:
    12     - WP_TRAVISCI=travis:phpunit
     14    - LOCAL_DIR: build
     15    - NPM_INSTALL: true
     16    - WP_INSTALL: true
     17    - PHP_FPM_UID: "`id -u`"
     18    - PHP_FPM_GID: "`id -g`"
     19
    1320matrix:
    1421  include:
    15   - php: 7.1
    16     env: WP_TRAVISCI=travis:js
    17   - php: 7.2
    18   - php: 5.6
    19     env: WP_TRAVIS_OBJECT_CACHE=true
    20     services: memcached
    21   - php: 5.2
    22     dist: precise
     22    - env: WP_TRAVISCI=travis:js LOCAL_PHP=7.1-fpm WP_INSTALL=false
     23      name: "JS Tests"
     24    - env: LOCAL_PHPUNIT=6-php-7.2-fpm WP_TRAVISCI=test:php
     25      name: "PHPUnit Tests: PHP 7.2"
     26    - env: LOCAL_PHP_MEMCACHED=true LOCAL_PHP=5.6-fpm LOCAL_PHPUNIT=4-php-5.6-fpm WP_TRAVISCI=test:php
     27      name: "PHPUnit Tests: PHP 5.6 with Memcached"
     28    - env: WP_TRAVISCI=travis:phpunit WP_INSTALL=false
     29      php: 5.2
     30      dist: precise
     31      name: "PHPUnit Tests: PHP 5.2"
     32  fast_finish: true
     33
    2334before_install:
    24 - |
    25   if [[ "$WP_TRAVISCI" == "travis:phpunit" ]]; then
     35  - |
     36    if [[ "$WP_TRAVISCI" == "test:php" ]]; then
     37      travis_retry svn checkout https://plugins.svn.wordpress.org/wordpress-importer/tags/0.6.3/ tests/phpunit/data/plugins/wordpress-importer
     38    fi
     39  - |
     40    if [[ "$WP_TRAVISCI" != "travis:phpunit" ]]; then
     41      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
     42      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
     43      sudo apt-get update
     44      sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
     45    fi
     46  - |
     47    sudo rm /usr/local/bin/docker-compose
     48    curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > docker-compose
     49    chmod +x docker-compose
     50    sudo mv docker-compose /usr/local/bin
     51  - |
     52    if [[ "$WP_TRAVISCI" == "travis:phpunit" ]]; then
    2653      mysql -u root -e "CREATE DATABASE wordpress_tests;"
    2754      cp wp-tests-config-sample.php wp-tests-config.php
     
    2956      sed -i "s/yourusernamehere/root/" wp-tests-config.php
    3057      sed -i "s/yourpasswordhere//" wp-tests-config.php
    31       svn checkout https://plugins.svn.wordpress.org/wordpress-importer/tags/0.6.3/ tests/phpunit/data/plugins/wordpress-importer
    32   fi
    33 - |
    34   if [[ "$WP_TRAVIS_OBJECT_CACHE" == "true" ]]; then
    35     cp tests/phpunit/includes/object-cache.php src/wp-content/object-cache.php
    36     echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
    37   fi
     58      travis_retry svn checkout https://plugins.svn.wordpress.org/wordpress-importer/tags/0.6.3/ tests/phpunit/data/plugins/wordpress-importer
     59    fi
     60
    3861before_script:
    39 - |
    40   # Remove Xdebug for a huge performance increase:
    41   if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then
    42     phpenv config-rm xdebug.ini
    43   else
    44     echo "xdebug.ini does not exist"
    45   fi
    46 - |
    47   # Export Composer's global bin dir to PATH, but not on PHP 5.2:
    48   if [[ ${TRAVIS_PHP_VERSION:0:3} != "5.2" ]]; then
    49     composer config --list --global
    50     export PATH=`composer config --list --global | grep '\[home\]' | { read a; echo "${a#* }/vendor/bin:$PATH"; }`
    51   fi
    52 - |
    53   # Install the specified version of PHPUnit depending on the PHP version:
    54   if [[ "$WP_TRAVISCI" == "travis:phpunit" ]]; then
    55     case "$TRAVIS_PHP_VERSION" in
    56       7.2|7.1|7.0|nightly)
    57         echo "Using PHPUnit 6.x"
    58         composer global require "phpunit/phpunit:^6"
    59         ;;
    60       5.6|5.5|5.4|5.3)
    61         echo "Using PHPUnit 4.x"
    62         composer global require "phpunit/phpunit:^4"
    63         ;;
    64       5.2)
    65         # Do nothing, use default PHPUnit 3.6.x
    66         echo "Using default PHPUnit, hopefully 3.6"
    67         ;;
    68       *)
    69         echo "No PHPUnit version handling for PHP version $TRAVIS_PHP_VERSION"
    70         exit 1
    71         ;;
    72     esac
    73   fi
    74 - npm --version
    75 - node --version
    76 - nvm install 6.9.1
    77 - npm install -g grunt-cli
    78 - npm install
    79 - npm prune
    80 - mysql --version
    81 - phpenv versions
    82 - php --version
    83 - php -m
    84 - npm --version
    85 - node --version
    86 - which phpunit
    87 - phpunit --version
    88 - curl --version
    89 - grunt --version
    90 - git --version
    91 - svn --version
    92 - locale -a
    93 script: grunt $WP_TRAVISCI
     62  - npm --version
     63  - node --version
     64  - nvm install
     65  - |
     66    if [[ "$WP_TRAVISCI" == "travis:phpunit" ]]; then
     67      phpenv config-rm xdebug.ini
     68      mysql --version
     69      phpenv versions
     70      php --version
     71      php -m
     72    fi
     73  - |
     74    if [[ "$NPM_INSTALL" == "true" ]]; then
     75      npm install
     76    fi
     77  - |
     78    if [[ "$WP_TRAVISCI" == "test:php" ]]; then
     79      npm run env:start
     80      npm run build
     81      docker-compose run --rm mysql mysql --version
     82      docker-compose run --rm php php --version
     83      docker-compose run --rm php php -m
     84      docker-compose run --rm phpunit phpunit --version
     85    fi
     86  - |
     87    if [[ "$LOCAL_PHP_MEMCACHED" == "true" ]]; then
     88      cp tests/phpunit/includes/object-cache.php build/wp-content/object-cache.php
     89      # The memcached server needs to start after `npm run env:start`, which sets up the Docker network.
     90      docker run --name memcached --net $(basename "$PWD")_wpdevnet -d memcached
     91    fi
     92  - |
     93    if [[ "$WP_INSTALL" == "true" ]]; then
     94      # Run the install process after memcached has started.
     95      npm run env:install
     96    fi
     97  - npm --version
     98  - node --version
     99  - curl --version
     100  - git --version
     101  - svn --version
     102  - php --version
     103  - php -i
     104  - locale -a
     105
     106script:
     107  - |
     108    if [[ "$WP_TRAVISCI" == "test:php" ]]; then
     109      npm run test:php -- --verbose -c phpunit.xml.dist &&
     110      npm run test:php -- --verbose -c phpunit.xml.dist --group ajax &&
     111      npm run test:php -- --verbose -c tests/phpunit/multisite.xml &&
     112      npm run test:php -- --verbose -c tests/phpunit/multisite.xml --group ms-files &&
     113      npm run test:php -- --verbose -c phpunit.xml.dist --group external-http &&
     114      npm run test:php -- --verbose -c phpunit.xml.dist --group restapi-jsclient &&
     115      # __fakegroup__ is excluded to force PHPUnit to ignore the <exclude> settings in phpunit.xml.dist.
     116      LOCAL_PHP_XDEBUG=true npm run test:php -- -v --group xdebug --exclude-group __fakegroup__
     117    else
     118      npm run grunt $WP_TRAVISCI
     119    fi
     120
     121after_script:
     122  - |
     123    if [[ "$WP_TEST_REPORTER" == "true" ]]; then
     124      git clone https://github.com/WordPress/phpunit-test-runner.git test-runner
     125      docker-compose run --rm -e WPT_PREPARE_DIR=/var/www -e WPT_TEST_DIR=/var/www php php test-runner/report.php
     126    fi
     127
    94128notifications:
    95129  slack:
  • branches/4.9/npm-shrinkwrap.json

    r42168 r49530  
    11{
    22  "name": "WordPress",
    3   "version": "4.9.0",
     3  "version": "4.9.16",
    44  "dependencies": {
    55    "abbrev": {
     
    948948      "dev": true
    949949    },
     950    "core-js": {
     951      "version": "2.6.11",
     952      "from": "core-js@>=2.5.7 <3.0.0",
     953      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
     954      "dev": true
     955    },
    950956    "core-util-is": {
    951957      "version": "1.0.2",
     
    13371343      "from": "domutils@>=1.5.0 <1.6.0",
    13381344      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
     1345      "dev": true
     1346    },
     1347    "dotenv": {
     1348      "version": "8.2.0",
     1349      "from": "dotenv@>=8.2.0 <9.0.0",
     1350      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
     1351      "dev": true
     1352    },
     1353    "dotenv-expand": {
     1354      "version": "5.1.0",
     1355      "from": "dotenv-expand@>=5.1.0 <6.0.0",
     1356      "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
    13391357      "dev": true
    13401358    },
     
    21992217      "dev": true
    22002218    },
     2219    "grunt-cli": {
     2220      "version": "0.1.13",
     2221      "from": "grunt-cli@0.1.13",
     2222      "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-0.1.13.tgz",
     2223      "dev": true,
     2224      "dependencies": {
     2225        "resolve": {
     2226          "version": "0.3.1",
     2227          "from": "resolve@>=0.3.1 <0.4.0",
     2228          "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.3.1.tgz",
     2229          "dev": true
     2230        }
     2231      }
     2232    },
    22012233    "grunt-contrib-clean": {
    22022234      "version": "1.0.0",
     
    33043336      "dev": true
    33053337    },
     3338    "isemail": {
     3339      "version": "3.2.0",
     3340      "from": "isemail@>=3.0.0 <4.0.0",
     3341      "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
     3342      "dev": true,
     3343      "dependencies": {
     3344        "punycode": {
     3345          "version": "2.1.1",
     3346          "from": "punycode@>=2.0.0 <3.0.0",
     3347          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
     3348          "dev": true
     3349        }
     3350      }
     3351    },
    33063352    "isexe": {
    33073353      "version": "2.0.0",
     
    33213367      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
    33223368      "dev": true
     3369    },
     3370    "joi": {
     3371      "version": "13.7.0",
     3372      "from": "joi@>=13.0.0 <14.0.0",
     3373      "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
     3374      "dev": true,
     3375      "dependencies": {
     3376        "hoek": {
     3377          "version": "5.0.4",
     3378          "from": "hoek@>=5.0.0 <6.0.0",
     3379          "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz",
     3380          "dev": true
     3381        }
     3382      }
    33233383    },
    33243384    "jpegtran-bin": {
     
    45654625      "from": "pseudomap@>=1.0.2 <2.0.0",
    45664626      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
     4627      "dev": true
     4628    },
     4629    "psl": {
     4630      "version": "1.8.0",
     4631      "from": "psl@>=1.1.28 <2.0.0",
     4632      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
    45674633      "dev": true
    45684634    },
     
    49244990      "dev": true
    49254991    },
     4992    "rx": {
     4993      "version": "4.1.0",
     4994      "from": "rx@>=4.1.0 <5.0.0",
     4995      "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
     4996      "dev": true
     4997    },
    49264998    "rx-lite": {
    49274999      "version": "3.1.2",
     
    55825654      "dev": true
    55835655    },
     5656    "topo": {
     5657      "version": "3.0.3",
     5658      "from": "topo@>=3.0.0 <4.0.0",
     5659      "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
     5660      "dev": true,
     5661      "dependencies": {
     5662        "hoek": {
     5663          "version": "6.1.3",
     5664          "from": "hoek@>=6.0.0 <7.0.0",
     5665          "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
     5666          "dev": true
     5667        }
     5668      }
     5669    },
    55845670    "tough-cookie": {
    55855671      "version": "2.3.3",
     
    57095795      "dev": true
    57105796    },
     5797    "uri-js": {
     5798      "version": "4.4.0",
     5799      "from": "uri-js@>=4.2.2 <5.0.0",
     5800      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
     5801      "dev": true,
     5802      "dependencies": {
     5803        "punycode": {
     5804          "version": "2.1.1",
     5805          "from": "punycode@^2.1.0",
     5806          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
     5807          "dev": true
     5808        }
     5809      }
     5810    },
    57115811    "uri-path": {
    57125812      "version": "1.0.0",
     
    58495949      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
    58505950      "dev": true
     5951    },
     5952    "wait-on": {
     5953      "version": "3.2.0",
     5954      "from": "wait-on@>=3.2.0 <3.3.0",
     5955      "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.2.0.tgz",
     5956      "dev": true,
     5957      "dependencies": {
     5958        "ajv": {
     5959          "version": "6.12.6",
     5960          "from": "ajv@>=6.12.3 <7.0.0",
     5961          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
     5962          "dev": true
     5963        },
     5964        "aws4": {
     5965          "version": "1.11.0",
     5966          "from": "aws4@>=1.8.0 <2.0.0",
     5967          "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
     5968          "dev": true
     5969        },
     5970        "combined-stream": {
     5971          "version": "1.0.8",
     5972          "from": "combined-stream@>=1.0.6 <1.1.0",
     5973          "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
     5974          "dev": true
     5975        },
     5976        "extend": {
     5977          "version": "3.0.2",
     5978          "from": "extend@>=3.0.2 <3.1.0",
     5979          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
     5980          "dev": true
     5981        },
     5982        "fast-deep-equal": {
     5983          "version": "3.1.3",
     5984          "from": "fast-deep-equal@>=3.1.1 <4.0.0",
     5985          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
     5986          "dev": true
     5987        },
     5988        "form-data": {
     5989          "version": "2.3.3",
     5990          "from": "form-data@>=2.3.2 <2.4.0",
     5991          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
     5992          "dev": true
     5993        },
     5994        "har-validator": {
     5995          "version": "5.1.5",
     5996          "from": "har-validator@>=5.1.3 <5.2.0",
     5997          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
     5998          "dev": true
     5999        },
     6000        "json-schema-traverse": {
     6001          "version": "0.4.1",
     6002          "from": "json-schema-traverse@>=0.4.1 <0.5.0",
     6003          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
     6004          "dev": true
     6005        },
     6006        "mime-db": {
     6007          "version": "1.44.0",
     6008          "from": "mime-db@1.44.0",
     6009          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
     6010          "dev": true
     6011        },
     6012        "mime-types": {
     6013          "version": "2.1.27",
     6014          "from": "mime-types@>=2.1.19 <2.2.0",
     6015          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
     6016          "dev": true
     6017        },
     6018        "oauth-sign": {
     6019          "version": "0.9.0",
     6020          "from": "oauth-sign@>=0.9.0 <0.10.0",
     6021          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
     6022          "dev": true
     6023        },
     6024        "punycode": {
     6025          "version": "2.1.1",
     6026          "from": "punycode@^2.1.1",
     6027          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
     6028          "dev": true
     6029        },
     6030        "qs": {
     6031          "version": "6.5.2",
     6032          "from": "qs@>=6.5.2 <6.6.0",
     6033          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
     6034          "dev": true
     6035        },
     6036        "request": {
     6037          "version": "2.88.2",
     6038          "from": "request@>=2.88.0 <3.0.0",
     6039          "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
     6040          "dev": true
     6041        },
     6042        "safe-buffer": {
     6043          "version": "5.2.1",
     6044          "from": "safe-buffer@>=5.1.2 <6.0.0",
     6045          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
     6046          "dev": true
     6047        },
     6048        "tough-cookie": {
     6049          "version": "2.5.0",
     6050          "from": "tough-cookie@>=2.5.0 <2.6.0",
     6051          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
     6052          "dev": true
     6053        },
     6054        "tunnel-agent": {
     6055          "version": "0.6.0",
     6056          "from": "tunnel-agent@>=0.6.0 <0.7.0",
     6057          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
     6058          "dev": true
     6059        },
     6060        "uuid": {
     6061          "version": "3.4.0",
     6062          "from": "uuid@>=3.3.2 <4.0.0",
     6063          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
     6064          "dev": true
     6065        }
     6066      }
    58516067    },
    58526068    "walkdir": {
  • branches/4.9/package.json

    r49415 r49530  
    1414  "devDependencies": {
    1515    "autoprefixer": "^6.5.1",
     16    "dotenv": "^8.2.0",
     17    "dotenv-expand": "^5.1.0",
    1618    "grunt": "~0.4.5",
    1719    "grunt-banner": "^0.6.0",
    1820    "grunt-contrib-clean": "~1.0.0",
     21    "grunt-cli": "0.1.13",
    1922    "grunt-contrib-compress": "~1.3.0",
    2023    "grunt-contrib-concat": "~1.0.0",
     
    3538    "grunt-rtlcss": "~2.0.1",
    3639    "grunt-sass": "~1.2.1",
     40    "grunt-webpack": "^3.0.2",
    3741    "ink-docstrap": "^1.3.0",
    38     "grunt-webpack": "^3.0.2",
    3942    "matchdep": "~1.0.0",
     43    "wait-on": "~3.2.0",
    4044    "webpack": "^3.6.0",
    4145    "webpack-dev-server": "^2.9.1"
     46  },
     47  "scripts": {
     48    "build": "grunt build",
     49    "build:dev": "grunt build --dev",
     50    "dev": "grunt watch --dev",
     51    "test": "grunt test",
     52    "watch": "grunt watch",
     53    "grunt": "grunt",
     54    "env:start": "node ./tools/local-env/scripts/start.js",
     55    "env:stop": "node ./tools/local-env/scripts/docker.js down",
     56    "env:restart": "npm run env:stop && npm run env:start",
     57    "env:clean": "node ./tools/local-env/scripts/docker.js down -v --remove-orphans",
     58    "env:reset": "node ./tools/local-env/scripts/docker.js down --rmi all -v --remove-orphans",
     59    "env:install": "node ./tools/local-env/scripts/install.js",
     60    "env:cli": "node ./tools/local-env/scripts/docker.js run cli",
     61    "env:logs": "node ./tools/local-env/scripts/docker.js logs",
     62    "env:pull": "node ./tools/local-env/scripts/docker.js pull",
     63    "test:php": "node ./tools/local-env/scripts/docker.js run --rm phpunit phpunit"
    4264  }
    4365}
  • branches/4.9/tests/phpunit/includes/object-cache.php

    r41289 r49530  
    830830            $this->servers = $memcached_servers;
    831831        else
    832             $this->servers = array( array( '127.0.0.1', 11211 ) );
     832            $this->servers = array( array( 'memcached', 11211 ) );
    833833
    834834        $this->addServers( $this->servers );
  • branches/4.9/tests/phpunit/tests/ajax/CustomizeMenus.php

    r41887 r49530  
    5555        if ( 'administrator' != $role ) {
    5656            // If we're not an admin, we should get a wp_die(-1).
    57             $this->setExpectedException( 'WPAjaxDieStopException' );
     57            $this->setExpectedException( 'WPAjaxDieStopException', '-1' );
    5858        }
    5959
     
    430430        if ( 'administrator' != $role ) {
    431431            // If we're not an admin, we should get a wp_die(-1).
    432             $this->setExpectedException( 'WPAjaxDieStopException' );
     432            $this->setExpectedException( 'WPAjaxDieStopException', '-1' );
    433433        }
    434434
Note: See TracChangeset for help on using the changeset viewer.