/
plugin-activate.feature
152 lines (134 loc) · 4.59 KB
/
plugin-activate.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Feature: Activate WordPress plugins
Background:
Given a WP install
Scenario: Activate a plugin that's already installed
When I run `wp plugin activate akismet`
Then STDOUT should be:
"""
Plugin 'akismet' activated.
Success: Activated 1 of 1 plugins.
"""
And the return code should be 0
Scenario: Attempt to activate a plugin that's not installed
When I try `wp plugin activate edit-flow`
Then STDERR should be:
"""
Warning: The 'edit-flow' plugin could not be found.
Error: No plugins activated.
"""
And the return code should be 1
When I try `wp plugin activate akismet hello edit-flow`
Then STDERR should be:
"""
Warning: The 'edit-flow' plugin could not be found.
Error: Only activated 2 of 3 plugins.
"""
And STDOUT should be:
"""
Plugin 'akismet' activated.
Plugin 'hello' activated.
"""
And the return code should be 1
Scenario: Activate all when one plugin is hidden by "all_plugins" filter
Given I run `wp plugin install user-switching`
And a wp-content/mu-plugins/hide-us-plugin.php file:
"""
<?php
/**
* Plugin Name: Hide User Switching on Production
* Description: Hides the User Switching plugin on production sites
* Author: WP-CLI tests
*/
add_filter( 'all_plugins', function( $all_plugins ) {
unset( $all_plugins['user-switching/user-switching.php'] );
return $all_plugins;
} );
"""
# Uses "try" because the SQLite plugin attempts to do a redirect.
# See https://github.com/WordPress/sqlite-database-integration/issues/49
When I try `wp plugin activate --all`
Then STDOUT should contain:
"""
Plugin 'akismet' activated.
Plugin 'hello' activated.
"""
And STDOUT should not contain:
"""
Plugin 'user-switching' activated.
"""
@require-php-7
Scenario: Activating a plugin with no network wide option passes down correct types
Given a wp-content/plugins/example-plugin.php file:
"""
<?php
// Plugin Name: Example Plugin
function example_plugin_activate( bool $network_wide = false ) {
// Doesn't matter what we do here, we just need a function definition to check the type
return;
}
register_activation_hook( __FILE__, 'example_plugin_activate' );
"""
When I run `wp plugin activate example-plugin`
Then STDOUT should be:
"""
Plugin 'example-plugin' activated.
Success: Activated 1 of 1 plugins.
"""
And STDERR should be empty
Scenario: Not giving a slug on activate should throw an error unless --all given
When I try `wp plugin activate`
Then the return code should be 1
And STDERR should be:
"""
Error: Please specify one or more plugins, or use --all.
"""
And STDOUT should be empty
# But don't give an error if no plugins and --all given for BC.
Given I run `wp plugin path`
And save STDOUT as {PLUGIN_DIR}
And an empty {PLUGIN_DIR} directory
When I run `wp plugin activate --all`
Then STDOUT should be:
"""
Success: No plugins activated.
"""
@require-wp-5.2
Scenario: Activating a plugin that does not meet PHP minimum throws a warning
Given a wp-content/plugins/high-requirements.php file:
"""
<?php
/**
* Plugin Name: High PHP Requirements
* Description: This is meant to not activate because PHP version is too low.
* Author: WP-CLI tests
* Requires PHP: 99.99
*/
"""
And I run `wp plugin deactivate --all`
And I run `php -r 'echo PHP_VERSION;'`
And save STDOUT as {PHP_VERSION}
When I try `wp plugin activate high-requirements`
Then STDERR should contain:
"""
Failed to activate plugin. Current PHP version ({PHP_VERSION}) does not meet minimum requirements for High PHP Requirements. The plugin requires PHP 99.99.
"""
And STDOUT should not contain:
"""
1 out of 1
"""
Scenario: Adding --exclude with plugin activate --all should exclude the plugins specified via --exclude
When I try `wp plugin activate --all --exclude=hello`
Then STDOUT should contain:
"""
Plugin 'akismet' activated.
"""
And the return code should be 0
Scenario: Excluding a missing plugin should not throw an error
Given a WP install
And I run `wp plugin activate --all --exclude=missing-plugin`
Then STDERR should be empty
And STDOUT should contain:
"""
Success:
"""
And the return code should be 0