Repository navigation
Tests: Add unit test coverage for the plugin activation, deactivation and uninstall hook functions - #14523
Open
huzaifaalmesbah wants to merge 1 commit into
Open
Tests: Add unit test coverage for the plugin activation, deactivation and uninstall hook functions#14523huzaifaalmesbah wants to merge 1 commit into
huzaifaalmesbah wants to merge 1 commit into
Conversation
… and uninstall hook functions.
huzaifaalmesbah
marked this pull request as ready for review
October 20, 2026 05:35
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds tests for
register_activation_hook(),register_deactivation_hook()andregister_uninstall_hook(), which plugins use to run code when they are activated, deactivated or deleted. None of the three had tests.For the activation and deactivation hooks, the tests cover:
activate_{$plugin}/deactivate_{$plugin}at the default priority, with the plugin file reduced to its basename for plugins in a directory, single-file plugins, relative paths, must-use plugins and backslash separators;For the uninstall hook, they cover:
uninstall_pluginsoption under the plugin basename;_doing_it_wrong()and nothing being stored;Removing or changing each branch of the three functions makes at least one test fail.
The uninstall tests start from an empty
uninstall_pluginsoption. When the option does not exist yet,(array) get_option( 'uninstall_plugins' )turnsfalseintoarray( false ), so the first plugin to register an uninstall hook also saves a stray0 => falseentry. That behavior is left out of these tests and can be handled separately.This is a test-only change; no production code is modified.
Testing Instructions
npm run test:php -- --filter 'Tests_Functions_Register(Uninstall|Activation|Deactivation)Hook'npm run test:php -- --filter 'Tests_Functions_Register(Uninstall|Activation|Deactivation)Hook' -c tests/phpunit/multisite.xmlnpm run test:php -- --filter 'Tests_Functions_Register(Uninstall|Activation|Deactivation)Hook' --order-by=randomnpm run test:php -- --group pluginsnode ./tools/local-env/scripts/docker.js run --rm php ./vendor/bin/phpcs tests/phpunit/tests/functions/registerActivationHook.php tests/phpunit/tests/functions/registerDeactivationHook.php tests/phpunit/tests/functions/registerUninstallHook.phpTrac ticket: https://core.trac.wordpress.org/ticket/65819
Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Brainstorming edge-case scenarios and drafting test boilerplate; test architecture, assertions, and local PHPUnit verification were written and validated by me.