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 phplintWe 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 phpcsIf you're using the Lando-based environvment and it's already running, you can run unit tests by calling:
lando testIf 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.ymlcontaining the encrypted private part of the deploy key - The Automattic/vip-mu-plugins-built repo is checked out
- The
.gitdirectory from theAutomattic/vip-go-mu-plugins-builtrepository 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-builtrepository