@@ -127,8 +127,6 @@ public function set_up() {
127127 $ this ->original_wp_styles = $ wp_styles ;
128128 $ wp_scripts = null ;
129129 $ wp_styles = null ;
130- wp_scripts ();
131- wp_styles ();
132130
133131 foreach ( self ::RESTORED_CONFIG_OPTIONS as $ option ) {
134132 $ this ->original_ini_config [ $ option ] = ini_get ( $ option );
@@ -1647,6 +1645,9 @@ function (): void {
16471645 * @dataProvider data_wp_hoist_late_printed_styles
16481646 */
16491647 public function test_wp_hoist_late_printed_styles ( ?Closure $ set_up , int $ inline_size_limit , array $ expected_styles ): void {
1648+ $ GLOBALS ['debug_on_demand_block_style ' ] = true ; // TODO: Remove.
1649+ error_log ( "\n##BEGIN DEBUG #################################### \n" );
1650+
16501651 switch_theme ( 'default ' );
16511652 global $ wp_styles ;
16521653 $ wp_styles = null ;
@@ -1674,8 +1675,49 @@ static function () {
16741675
16751676 // Ensure that separate core block assets get registered.
16761677 register_core_block_style_handles ();
1678+ $ this ->assertTrue ( WP_Block_Type_Registry::get_instance ()->is_registered ( 'core/separator ' ), 'Expected the core/separator block to be registered. ' );
1679+
1680+ // Ensure
1681+ $ this ->ensure_style_asset_file_created ( 'wp-block-library ' , 'css/dist/block-library/style.css ' );
1682+ // $handle = 'wp-block-library';
1683+ // $this->assertTrue( wp_style_is( $handle, 'registered' ), 'Expected the wp-block-library style to be registered.' );
1684+ // $dependency = wp_styles()->query( $handle );
1685+ // $relative_path = 'css/dist/block-library/style.css';
1686+ // error_log( __FILE__ . ':' . __LINE__ . ' $dependency->src === ' . $dependency->src );
1687+ // $dependency->src = includes_url( $relative_path );
1688+ // $path = ABSPATH . WPINC . '/blocks/separator/style.css';
1689+ // if ( ! file_exists( $path ) ) {
1690+ // mkdir( dirname( $path ), 0777, true );
1691+ // error_log( __FILE__ . ':' . __LINE__ . ' FILE DOES NOT EXIST: ' . $path );
1692+ // file_put_contents( $path, '/* The separator CSS */' );
1693+ // } else {
1694+ // error_log( __FILE__ . ':' . __LINE__ . ' FILE DOES EXIST: ' . $path );
1695+ // }
1696+ // wp_style_add_data( $handle, 'path', $path );
1697+
16771698 if ( wp_should_load_separate_core_block_assets () ) {
1678- $ this ->assertTrue ( wp_style_is ( 'wp-block-separator ' , 'registered ' ), 'Expected the wp-block-separator style to be registered. ' );
1699+ $ this ->ensure_style_asset_file_created ( 'wp-block-separator ' , 'blocks/separator/style.css ' );
1700+
1701+ // $handle = 'wp-block-separator';
1702+ // $this->assertTrue( wp_style_is( $handle, 'registered' ), 'Expected the wp-block-separator style to be registered.' );
1703+ // $dependency = wp_styles()->query( $handle );
1704+ // error_log( __FILE__ . ':' . __LINE__ . ' $dependency->src === ' . $dependency->src );
1705+ // $relative_path = 'blocks/separator/style.css';
1706+ // $dependency->src = includes_url( $relative_path );
1707+ // $path = ABSPATH . WPINC . '/' . $relative_path;
1708+ // if ( ! file_exists( $path ) ) {
1709+ // mkdir( dirname( $path ), 0777, true );
1710+ // error_log( __FILE__ . ':' . __LINE__ . ' FILE DOES NOT EXIST: ' . $path );
1711+ // file_put_contents( $path, '/* The separator CSS */' );
1712+ // } else {
1713+ // error_log( __FILE__ . ':' . __LINE__ . ' FILE DOES EXIST: ' . $path );
1714+ // }
1715+ // wp_style_add_data( $handle, 'path', $path );
1716+
1717+ $ handle = 'wp-block-separator ' ;
1718+ $ done = wp_styles ()->done ;
1719+ error_log ( __FILE__ . ': ' . __LINE__ . ": wp_print_styles( $ handle): " . get_echo ( 'wp_print_styles ' , array ( $ handle ) ) );
1720+ wp_styles ()->done = $ done ;
16791721 }
16801722
16811723 $ this ->assertFalse ( wp_is_block_theme (), 'Test is not relevant to block themes (only classic themes). ' );
@@ -1712,6 +1754,9 @@ static function () {
17121754 'the_content ' ,
17131755 '<!-- wp:separator --><hr class="wp-block-separator has-alpha-channel-opacity"/><!-- /wp:separator --> '
17141756 );
1757+ if ( ! empty ( $ GLOBALS ['debug_on_demand_block_style ' ] ) ) {
1758+ error_log ( __FILE__ . ': ' . __LINE__ . ' wp_styles()->queue: ' . json_encode ( wp_styles ()->queue ) );
1759+ }
17151760
17161761 // Simulate footer scripts.
17171762 $ footer_output = get_echo ( 'wp_footer ' );
@@ -1757,6 +1802,39 @@ static function () {
17571802 $ found_subset_styles ,
17581803 'Expected the same styles. Snapshot: ' . self ::get_array_snapshot_export ( $ found_styles )
17591804 );
1805+
1806+ unset( $ GLOBALS ['debug_on_demand_block_style ' ] ); // TODO: Remove.
1807+ error_log ( "\n##END DEBUG #################################### \n" ); // TODO: Remove.
1808+ }
1809+
1810+ /**
1811+ * Ensures a CSS file is on the filesystem.
1812+ *
1813+ * This is needed because unit tests may be run without a build step having been done. Something similar can be seen
1814+ * elsewhere in tests for the `wp-emoji-loader.js` script:
1815+ *
1816+ * self::touch( ABSPATH . WPINC . '/js/wp-emoji-loader.js' );
1817+ *
1818+ * @param string $handle Style handle.
1819+ * @param string $relative_path Relative path to the CSS file in the includes directory.
1820+ */
1821+ private function ensure_style_asset_file_created ( string $ handle , string $ relative_path ) {
1822+ $ this ->assertTrue ( wp_style_is ( $ handle , 'registered ' ), 'Expected the wp-block-separator style to be registered. ' );
1823+ $ dependency = wp_styles ()->query ( $ handle );
1824+ error_log ( __FILE__ . ': ' . __LINE__ . ' $dependency->src === ' . $ dependency ->src );
1825+ $ dependency ->src = includes_url ( $ relative_path );
1826+ $ path = ABSPATH . WPINC . '/ ' . $ relative_path ;
1827+ if ( ! file_exists ( $ path ) ) {
1828+ $ dir = dirname ( $ path );
1829+ if ( ! file_exists ( $ dir ) ) {
1830+ mkdir ( $ dir , 0777 , true );
1831+ }
1832+ error_log ( __FILE__ . ': ' . __LINE__ . ' FILE DOES NOT EXIST: ' . $ path );
1833+ file_put_contents ( $ path , "/* CSS for $ handle */ " );
1834+ } else {
1835+ error_log ( __FILE__ . ': ' . __LINE__ . ' FILE DOES EXIST: ' . $ path );
1836+ }
1837+ wp_style_add_data ( $ handle , 'path ' , $ path );
17601838 }
17611839
17621840 public function assertTemplateHierarchy ( $ url , array $ expected , $ message = '' ) {
0 commit comments