This is the development repo for mu-plugins on VIP Go,
We recommend using the Lando-based development environment for local development: https://github.com/Automattic/vip-go-mu-dev
Follow the instructions in the vip-go-mu-dev
repo to get set up (it includes a clone of this repo).
npm run phplint
We use eslines to incrementally scan changed code. It will automatically run on pre-commit (see .huskyrc.json
).
This is also run on Circle CI for all PRs.
If you want too scan the entire codebase:
npm run phpcs
If you're using the Lando-based environvment and it's already running, you can run unit tests by calling:
lando test
If you don't have the Lando-based environment running (e.g. in a CI context), we have a script that runs unit tests in a self-contained Docker environment. To run these tests, execute the following from the project root:
./bin/phpunit-docker.sh [wp-version]
You can either pass a version number to test against a specific version, or leave it blank to test against the latest version.
You can also pass the path to a specific test as well as extra PHPUnit arguments:
./bin/phpunit-docker.sh tests/path/to/the/test-something.php --stop-on-failure [...args]
PHP Linting and PHPUnit tests are run by Circle CI as part of PRs and merges. See .circleci/config.yml
for more.
We run core tests as part of the CI pipeline. We run core tests both with and without mu-plugins installed. There are many failures when running with mu-plugins so we had to ignore several tests. To add another test there chack bin/utils.sh
.
To investigate failing test locally you can do following (buckle up as this is not so easy:()):
-
While in your mu-plugins folder do
MU_PLUGINS_DIR=$(pwd)
-
Switch to where you want to checkout core code e.g.
cd ~/svn/wp
-
Checkout the core code (pick the latest version):
svn co --quiet --ignore-externals https://develop.svn.wordpress.org/tags/5.5.3 .
-
Create test config:
cp wp-tests-config-sample.php wp-tests-config.php && sed -i 's/youremptytestdbnamehere/wordpress_test/; s/yourusernamehere/root/; s/yourpasswordhere//; s/localhost/127.0.0.1/' wp-tests-config.php
-
Build core
npm ci && npm run build
-
Export env variable
export WP_TESTS_DIR="$(pwd)/tests/phpunit"
-
Start local DB:
docker run -d -p 3306:3306 circleci/mariadb:10.2
-
Create empty DB
mysqladmin create wordpress_test --user="root" --password="" --host="127.0.0.1" --protocol=tcp
-
Copy over MU-plugins
cp -r $MU_PLUGINS_DIR build/wp-content/mu-plugins
-
Run the test you want (in this case
test_allowed_anon_comments
)$MU_PLUGINS_DIR/vendor/bin/phpunit --filter test_allowed_anon_comments
You can find selective PHPDoc documentation here: https://automattic.github.io/vip-go-mu-plugins/
These are generated via CI by the generate-docs.sh
script.
For Automattic Use: Instructions are in the FG :)
This is a repo primarily meant for local non-development use.
Every commit merged into master
is automatically pushed to the public copy at Automattic/vip-go-mu-plugins-built. This is handled via CI by the deploy.sh
script script, which builds pushes a copy of this repo and expanded submodules.
- The private part of a deploy key for Automattic/vip-mu-plugins-built is encrypted against this repository (Automattic/vip-mu-plugins-built), meaning it can only be decrypted by Travis running scripts related to this repo
- This repository and it's submodules are checked out, again, to start the build
- All VCS config and metadata is removed from the build
- Various files are removed, including the
.travis.yml
containing the encrypted private part of the deploy key - The Automattic/vip-mu-plugins-built repo is checked out
- The
.git
directory from theAutomattic/vip-go-mu-plugins-built
repository is moved into the build directory, and a commit is created representing the changes from this build - The commit is pushed to the
Automattic/vip-go-mu-plugins-built
repository