From 1dc930ba130e58e7d948bd386953ab5a32c21690 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Fri, 22 Nov 2013 16:24:25 +0000 Subject: [PATCH] Add unit tests for `links_add_target()`. Alter the patterns in `links_add_target()` and `_links_add_target()` slightly based on learnings after running tests. Props mdbitz. Fixes #26164. git-svn-id: https://develop.svn.wordpress.org/trunk@26328 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/formatting.php | 4 +- .../tests/formatting/LinksAddTarget.php | 84 +++++++++++++++++++ 2 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 tests/phpunit/tests/formatting/LinksAddTarget.php diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index 56aac4ca29..4aa2cd3183 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -3243,7 +3243,7 @@ function links_add_target( $content, $target = '_blank', $tags = array('a') ) { global $_links_add_target; $_links_add_target = $target; $tags = implode('|', (array)$tags); - return preg_replace_callback( "!<($tags)(.+?)>!i", '_links_add_target', $content ); + return preg_replace_callback( "!<($tags)([^>]*)>!i", '_links_add_target', $content ); } /** @@ -3258,7 +3258,7 @@ function links_add_target( $content, $target = '_blank', $tags = array('a') ) { function _links_add_target( $m ) { global $_links_add_target; $tag = $m[1]; - $link = preg_replace('|(target=([\'"])(.*?)\2)|i', '', $m[2]); + $link = preg_replace('|( target=([\'"])(.*?)\2)|i', '', $m[2]); return '<' . $tag . $link . ' target="' . esc_attr( $_links_add_target ) . '">'; } diff --git a/tests/phpunit/tests/formatting/LinksAddTarget.php b/tests/phpunit/tests/formatting/LinksAddTarget.php new file mode 100644 index 0000000000..fdf4003f9d --- /dev/null +++ b/tests/phpunit/tests/formatting/LinksAddTarget.php @@ -0,0 +1,84 @@ + SOME ADDITIONAL TEXT LINK HERE END TEXT', + null, + null, + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + null, + null, + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
LINKEND TEXT', + null, + null, + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
LINKEND TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + null, + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + array( 'span'), + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + array( 'SPAN'), + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + array( 'span', 'div'), + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + array( 'span', 'div'), + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + array ( + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT', + "_top", + array( 'span'), + 'MY CONTENT
SOME ADDITIONAL TEXT LINK HERE
END TEXT' + ), + ); + } + + /** + * Validate the normalize_whitespace function + * + * @dataProvider get_input_output + */ + function test_normalize_whitespace( $content, $target, $tags, $exp_str ) { + if ( true === is_null( $target ) ) { + $this->assertEquals( $exp_str, links_add_target( $content ) ); + } elseif ( true === is_null( $tags ) ) { + $this->assertEquals( $exp_str, links_add_target( $content, $target ) ); + } else { + $this->assertEquals( $exp_str, links_add_target( $content, $target, $tags ) ); + } + } +} \ No newline at end of file