Skip to content

Commit da9ee19

Browse files
committed
Update regexes, add Behat tests
1 parent 23779de commit da9ee19

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

features/upgradables.feature

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,3 +212,27 @@ Feature: Manage WordPress themes and plugins
212212
| type | type_name | item | item_title | version | zip_file | file_to_check |
213213
| theme | Theme | moina | Moina | 1.1.2 | https://wordpress.org/themes/download/moina.1.1.2.zip | {CONTENT_DIR}/moina/style.css |
214214
| plugin | Plugin | category-checklist-tree | Category Checklist Tree | 1.2 | https://downloads.wordpress.org/plugin/category-checklist-tree.1.2.zip | {CONTENT_DIR}/category-checklist-tree/category-checklist-tree.php |
215+
216+
@require-wp-4.5
217+
Scenario Outline: Caches certain GitHub URLs
218+
Given a WP install
219+
And I run `wp plugin delete --all`
220+
221+
When I run `wp plugin install <zip_file>`
222+
Then STDOUT should contain:
223+
"""
224+
Plugin installed successfully
225+
"""
226+
227+
When I run `wp plugin delete --all`
228+
And I run `wp plugin install <zip_file>`
229+
Then STDOUT should contain:
230+
"""
231+
Using cached file '{SUITE_CACHE_DIR}/plugin/<item>-<version>
232+
"""
233+
234+
Examples:
235+
| item | version | zip_file |
236+
| one-time-login | 0.4.0 | https://github.com/danielbachhuber/one-time-login/releases/latest |
237+
| preferred-languages | 2.4.0 | https://github.com/swissspidy/preferred-languages/releases/download/2.4.0/preferred-languages.zip |
238+
| generic-example-plugin | 0.1.1 | https://github.com/wp-cli-test/generic-example-plugin/archive/v0.1.1.zip |

src/WP_CLI/CommandWithUpgrade.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -853,12 +853,13 @@ protected static function maybe_cache( $url, $item_type ) {
853853
$matches = [];
854854

855855
// cache release URLs like `https://github.com/wp-cli-test/generic-example-plugin/releases/download/v0.1.0/generic-example-plugin.0.1.0.zip`
856-
if ( preg_match( '#github\.com/[^/]+/([^/]+)/releases/download/tags/([^/]+)/(.+)\.zip#', $url, $matches ) ) {
857-
WP_CLI::get_http_cache_manager()->whitelist_package( $url, $item_type, $matches[2], $matches[3] );
856+
if ( preg_match( '#github\.com/[^/]+/([^/]+)/releases/download/v?([^/]+)/.+\.zip#', $url, $matches ) ) {
857+
WP_CLI::get_http_cache_manager()->whitelist_package( $url, $item_type, $matches[1], $matches[2] );
858858
// cache archive URLs like `https://github.com/wp-cli-test/generic-example-plugin/archive/v0.1.0.zip`
859-
} elseif ( preg_match( '#github\.com/[^/]+/([^/]+)/archive/(version/|)([^/]+)\.zip#', $url, $matches ) ) {
859+
} elseif ( preg_match( '#github\.com/[^/]+/([^/]+)/archive/(version/|)v?([^/]+)\.zip#', $url, $matches ) ) {
860860
WP_CLI::get_http_cache_manager()->whitelist_package( $url, $item_type, $matches[1], $matches[3] );
861-
} elseif ( preg_match( '#api\.github\.com/repos/[^/]+/([^/]+)/zipball/([^/]+)#', $url, $matches ) ) {
861+
// cache release URLs like `https://api.github.com/repos/danielbachhuber/one-time-login/zipball/v0.4.0`
862+
} elseif ( preg_match( '#api\.github\.com/repos/[^/]+/([^/]+)/zipball/v?([^/]+)#', $url, $matches ) ) {
862863
WP_CLI::get_http_cache_manager()->whitelist_package( $url, $item_type, $matches[1], $matches[2] );
863864
}
864865
}

0 commit comments

Comments
 (0)