Script Loader: Improve test coverage for wp_print_scripts().

This is a follow-up to [56092], which further improves PHPUnit test coverage and inline docs for ensuring `async` and `defer` attributes are being properly handled for scripts that are printed without being enqueued.

Props peterwilsoncc, azaozz, westonruter, joemcgill.
See #58648.


git-svn-id: https://develop.svn.wordpress.org/trunk@56246 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Joe McGill 2023-07-17 14:04:00 +00:00
parent 8b5cfe0887
commit 967abef19e
2 changed files with 22 additions and 2 deletions

View File

@ -914,7 +914,10 @@ JS;
return '';
}
// If the intended strategy is 'defer', limit the initial list of eligibles.
/*
* If the intended strategy is 'defer', limit the initial list of eligible
* strategies, since 'async' can fallback to 'defer', but not vice-versa.
*/
$initial = ( 'defer' === $intended ) ? array( 'defer' ) : null;
$eligible = $this->filter_eligible_strategies( $handle, $initial );

View File

@ -2943,7 +2943,24 @@ HTML
$actual = get_echo( 'wp_print_scripts', array( array( 'wp-tinymce' ) ) );
$this->assertStringNotContainsString( 'async', $actual );
$this->assertStringNotContainsString( 'async', $actual, 'TinyMCE should not have an async attribute.' );
$this->assertStringNotContainsString( 'defer', $actual, 'TinyMCE should not have a defer attribute.' );
}
/**
* Make sure scripts with a loading strategy that are printed
* without being enqueued are handled properly.
*
* @ticket 58648
*
* @dataProvider data_provider_delayed_strategies
*/
public function test_printing_non_enqueued_scripts( $strategy ) {
wp_register_script( 'test-script', 'test-script.js', array(), false, array( 'strategy' => $strategy ) );
$actual = get_echo( 'wp_print_scripts', array( array( 'test-script' ) ) );
$this->assertStringContainsString( $strategy, $actual );
}
/**