Formatting: `wp_make_link_relative()` should return an empty string if no path is present in the link.

Props bcworkz, MikeHansenMe, chriscct7, SergeyBiryukov.
Fixes #26819.

git-svn-id: https://develop.svn.wordpress.org/trunk@35497 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2015-11-03 21:35:17 +00:00
parent b077aecd6a
commit 88c274fad8
3 changed files with 48 additions and 31 deletions

View File

@ -3621,7 +3621,7 @@ function tag_escape( $tag_name ) {
* @return string Absolute path.
*/
function wp_make_link_relative( $link ) {
return preg_replace( '|^(https?:)?//[^/]+(/.*)|i', '$2', $link );
return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link );
}
/**

View File

@ -0,0 +1,47 @@
<?php
/**
* @group formatting
*/
class Tests_Formatting_WPMakeLinkRelative extends WP_UnitTestCase {
public function test_wp_make_link_relative_with_http_scheme() {
$link = 'http://example.com/this-is-a-test-http-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-http-url/', $relative_link );
}
public function test_wp_make_link_relative_with_https_scheme() {
$link = 'https://example.com/this-is-a-test-https-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-https-url/', $relative_link );
}
/**
* @ticket 30373
*/
public function test_wp_make_link_relative_with_no_scheme() {
$link = '//example.com/this-is-a-test-schemeless-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-schemeless-url/', $relative_link );
}
/**
* @ticket 30373
*/
public function test_wp_make_link_relative_should_retain_URL_param_that_is_also_a_URL() {
$link = 'https://example.com/this-is-a-test/?redirect=https://example.org/a-different-test-post/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test/?redirect=https://example.org/a-different-test-post/', $relative_link );
}
/**
* @ticket 26819
*/
function test_wp_make_link_relative_with_no_path() {
$link = 'http://example.com';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '', $relative_link );
}
}

View File

@ -304,36 +304,6 @@ class Tests_Link extends WP_UnitTestCase {
$this->assertEquals( $p3, $found->ID );
}
public function test_wp_make_link_relative_with_http_scheme() {
$link = 'http://example.com/this-is-a-test-http-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-http-url/', $relative_link );
}
public function test_wp_make_link_relative_with_https_scheme() {
$link = 'https://example.com/this-is-a-test-https-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-https-url/', $relative_link );
}
/**
* @ticket 30373
*/
public function test_wp_make_link_relative_with_no_scheme() {
$link = '//example.com/this-is-a-test-schemeless-url/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test-schemeless-url/', $relative_link );
}
/**
* @ticket 30373
*/
public function test_wp_make_link_relative_should_retain_URL_param_that_is_also_a_URL() {
$link = 'https://example.com/this-is-a-test/?redirect=https://example.org/a-different-test-post/';
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test/?redirect=https://example.org/a-different-test-post/', $relative_link );
}
/**
* @ticket 30910
*/