Improvements to PCRE benchmarking tests.

* Add test file accidentally omitted from [34761].
* Bail properly from benchmarker when a `preg_last_error()` is found.

Props miqrogroove.
See #34121.

git-svn-id: https://develop.svn.wordpress.org/trunk@34773 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges 2015-10-02 13:50:12 +00:00
parent 19df309491
commit f408407620
2 changed files with 58 additions and 4 deletions

View File

@ -433,15 +433,16 @@ function benchmark_pcre_backtracking( $pattern, $subject, $strategy ) {
continue;
case PREG_RECURSION_LIMIT_ERROR:
trigger_error('PCRE recursion limit encountered before backtrack limit.');
break;
return;
case PREG_BAD_UTF8_ERROR:
trigger_error('UTF-8 error during PCRE benchmark.');
break;
return;
case PREG_INTERNAL_ERROR:
trigger_error('Internal error during PCRE benchmark.');
break;
return;
default:
trigger_error('Unexpected error during PCRE benchmark.');
trigger_error('Unexpected error during PCRE benchmark.');
return;
}
}

View File

@ -0,0 +1,53 @@
<?php
/**
* @group formatting
*/
class Tests_Formatting_WpHtmlSplit extends WP_UnitTestCase {
/**
* Basic functionality goes here.
*
* @dataProvider data_basic_features
*/
function test_basic_features( $input, $output ) {
return $this->assertEquals( $output, wp_html_split( $input ) );
}
function data_basic_features() {
return array(
array(
'abcd efgh',
array( 'abcd efgh' ),
),
array(
'abcd <html> efgh',
array( 'abcd ', '<html>', ' efgh' ),
),
array(
'abcd <!-- <html> --> efgh',
array( 'abcd ', '<!-- <html> -->', ' efgh' ),
),
array(
'abcd <![CDATA[ <html> ]]> efgh',
array( 'abcd ', '<![CDATA[ <html> ]]>', ' efgh' ),
),
);
}
/**
* Automated performance testing of the main regex.
*
* @dataProvider data_whole_posts
*/
function test_pcre_performance( $input ) {
$regex = get_html_split_regex();
$result = benchmark_pcre_backtracking( $regex, $input, 'split' );
return $this->assertLessThan( 200, $result );
}
function data_whole_posts() {
require_once( DIR_TESTDATA . '/formatting/whole-posts.php' );
return data_whole_posts();
}
}