Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 3 additions & 14 deletions plugins/internal-comments/tests/Integration/PartialDeployTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
namespace DeepWebSolutions\InternalComments\Tests\Integration;

use DeepWebSolutions\InternalComments\Scoped\DeepWebSolutions\Framework\Core\Uninstall\Uninstaller;
use DeepWebSolutions\InternalComments\Tests\Support\RunsRequestsTrait;
use PHPUnit\Framework\Attributes\CoversNothing;
use PHPUnit\Framework\Attributes\RunInSeparateProcess;
use PHPUnit\Framework\TestCase;

#[CoversNothing]
final class PartialDeployTest extends TestCase {
use RunsRequestsTrait;

public function test_a_missing_built_asset_shows_the_build_notice_and_loads_nothing_built(): void {
$manifest = \dirname( DWS_IC_FILE ) . '/assets/build/meta-box.asset.php';
\rename( $manifest, "$manifest.hidden" );
Expand Down Expand Up @@ -83,18 +86,4 @@ static function ( string $class_name ): void {
\unlink( $log );
update_option( DWS_IC_OPTION_PLUGIN, DWS_IC_SETTING_DEFAULTS[ DWS_IC_OPTION_PLUGIN ] );
}

/**
* @return array{status: int, output: string, last: string}
*/
protected static function request( string $php ): array {
\exec( 'wp --path=' . \escapeshellarg( ABSPATH ) . ' eval ' . \escapeshellarg( $php ) . ' 2>&1', $output, $status ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec -- Each row needs a fresh request that loads the plugin.
$output = \array_values( \array_filter( $output, static fn ( string $line ): bool => '' !== \trim( $line ) ) );

return array(
'status' => $status,
'output' => \implode( "\n", $output ),
'last' => (string) \end( $output ),
);
}
}
13 changes: 12 additions & 1 deletion plugins/internal-comments/tests/Integration/PluginBootTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
use DeepWebSolutions\InternalComments\Scoped\DeepWebSolutions\Framework\Core\Permission\CapabilityGrants;
use DeepWebSolutions\InternalComments\Scoped\DeepWebSolutions\Framework\Core\Scheduling\Scheduler;
use DeepWebSolutions\InternalComments\Settings;
use DeepWebSolutions\InternalComments\Tests\Support\RunsRequestsTrait;
use PHPUnit\Framework\Attributes\CoversNothing;
use PHPUnit\Framework\TestCase;

#[CoversNothing]
final class PluginBootTest extends TestCase {
use RunsRequestsTrait;

public function test_the_plugin_boots_every_component(): void {
$plugin = dws_ic_plugin();

Expand All @@ -31,7 +34,15 @@ public function test_the_entry_loads_every_include_but_those_whose_names_start_w

self::assertContains( $includes . 'safeguards.php', \get_included_files() );
self::assertContains( $includes . 'index.php', \get_included_files() );
self::assertNotContains( $includes . '_disabled-example.php', \get_included_files() );
self::assertIsInt( \file_put_contents( $includes . '_ic-skipped.php', "<?php\nconst DWS_IC_SKIPPED_INCLUDE = true;\n" ) );
try {
$request = self::request( 'echo 0 < did_action( "dws_ic/boot/succeeded" ) ? ( defined( "DWS_IC_SKIPPED_INCLUDE" ) ? "loaded" : "skipped" ) : "not booted";' );
} finally {
\unlink( $includes . '_ic-skipped.php' );
}

self::assertSame( 0, $request['status'], $request['output'] );
self::assertSame( 'skipped', $request['last'], $request['output'] );
}

public function test_the_stored_data_is_at_the_revision_of_the_code(): void {
Expand Down
19 changes: 19 additions & 0 deletions plugins/internal-comments/tests/Support/RunsRequestsTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php declare( strict_types=1 );

namespace DeepWebSolutions\InternalComments\Tests\Support;

trait RunsRequestsTrait {
/**
* @return array{status: int, output: string, last: string}
*/
protected static function request( string $php ): array {
\exec( 'wp --path=' . \escapeshellarg( ABSPATH ) . ' eval ' . \escapeshellarg( $php ) . ' 2>&1', $output, $status ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec -- Each row needs a fresh request that loads the plugin.
$output = \array_values( \array_filter( $output, static fn ( string $line ): bool => '' !== \trim( $line ) ) );

return array(
'status' => $status,
'output' => \implode( "\n", $output ),
'last' => (string) \end( $output ),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
namespace DeepWebSolutions\LinkedOrders\Tests\Integration;

use DeepWebSolutions\LinkedOrders\Scoped\DeepWebSolutions\Framework\Core\Uninstall\Uninstaller;
use DeepWebSolutions\LinkedOrders\Tests\Support\RunsRequestsTrait;
use PHPUnit\Framework\Attributes\CoversNothing;
use PHPUnit\Framework\Attributes\RunInSeparateProcess;
use PHPUnit\Framework\TestCase;

#[CoversNothing]
final class PartialDeployTest extends TestCase {
use RunsRequestsTrait;

public function test_a_missing_built_asset_shows_the_build_notice_and_loads_nothing_built(): void {
$manifest = \dirname( DWS_LOWC_FILE ) . '/assets/build/orders-list-table.asset.php';
\rename( $manifest, "$manifest.hidden" );
Expand Down Expand Up @@ -83,18 +86,4 @@ static function ( string $class_name ): void {
\unlink( $log );
update_option( DWS_LOWC_OPTION_DELETE_DATA, 'no' );
}

/**
* @return array{status: int, output: string, last: string}
*/
protected static function request( string $php ): array {
\exec( 'wp --path=' . \escapeshellarg( ABSPATH ) . ' eval ' . \escapeshellarg( $php ) . ' 2>&1', $output, $status ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec -- Each row needs a fresh request that loads the plugin.
$output = \array_values( \array_filter( $output, static fn ( string $line ): bool => '' !== \trim( $line ) ) );

return array(
'status' => $status,
'output' => \implode( "\n", $output ),
'last' => (string) \end( $output ),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
use DeepWebSolutions\LinkedOrders\Scoped\DeepWebSolutions\Framework\Core\Permission\CapabilityGrants;
use DeepWebSolutions\LinkedOrders\Scoped\DeepWebSolutions\Framework\Core\Scheduling\Scheduler;
use DeepWebSolutions\LinkedOrders\Settings;
use DeepWebSolutions\LinkedOrders\Tests\Support\RunsRequestsTrait;
use PHPUnit\Framework\Attributes\CoversNothing;
use PHPUnit\Framework\TestCase;

#[CoversNothing]
final class PluginBootTest extends TestCase {
use RunsRequestsTrait;

public function test_the_plugin_boots_every_component_but_the_integration_with_an_absent_plugin(): void {
$plugin = dws_lowc_plugin();

Expand All @@ -31,15 +34,15 @@ public function test_the_entry_loads_every_include_but_those_whose_names_start_w

self::assertContains( $includes . 'safeguards.php', \get_included_files() );
self::assertContains( $includes . 'index.php', \get_included_files() );
\file_put_contents( $includes . '_lowc-skipped.php', "<?php\nconst DWS_LOWC_SKIPPED_INCLUDE = true;\n" );
self::assertIsInt( \file_put_contents( $includes . '_lowc-skipped.php', "<?php\nconst DWS_LOWC_SKIPPED_INCLUDE = true;\n" ) );
try {
\exec( 'wp --path=' . \escapeshellarg( ABSPATH ) . ' eval ' . \escapeshellarg( 'echo defined( "DWS_LOWC_SKIPPED_INCLUDE" ) ? "loaded" : "skipped";' ) . ' 2>&1', $output, $status ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec -- The loader runs only in a fresh request.
$request = self::request( 'echo 0 < did_action( "dws_lowc/boot/succeeded" ) ? ( defined( "DWS_LOWC_SKIPPED_INCLUDE" ) ? "loaded" : "skipped" ) : "not booted";' );
} finally {
\unlink( $includes . '_lowc-skipped.php' );
}

self::assertSame( 0, $status, \implode( "\n", $output ) );
self::assertSame( 'skipped', (string) \end( $output ) );
self::assertSame( 0, $request['status'], $request['output'] );
self::assertSame( 'skipped', $request['last'], $request['output'] );
}

public function test_the_stored_data_is_at_the_revision_of_the_code(): void {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php declare( strict_types=1 );

namespace DeepWebSolutions\LinkedOrders\Tests\Support;

trait RunsRequestsTrait {
/**
* @return array{status: int, output: string, last: string}
*/
protected static function request( string $php ): array {
\exec( 'wp --path=' . \escapeshellarg( ABSPATH ) . ' eval ' . \escapeshellarg( $php ) . ' 2>&1', $output, $status ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec -- Each row needs a fresh request that loads the plugin.
$output = \array_values( \array_filter( $output, static fn ( string $line ): bool => '' !== \trim( $line ) ) );

return array(
'status' => $status,
'output' => \implode( "\n", $output ),
'last' => (string) \end( $output ),
);
}
}
Loading