upskill-event-manager/wordpress-dev/vendor/yoast/phpunit-polyfills/phpunitpolyfills-autoload.php
bengizmo 37f7b426b6 feat: Implement auto page creation & fix login E2E tests
Implements automatic creation of required plugin pages (Community Login,
Trainer Registration, Trainer Dashboard) upon plugin activation. This
addresses E2E test failures caused by missing pages in the test
environment.

- Adds activation hook in `hvac-community-events.php` to call
  `hvac_ce_create_required_pages`.
- The callback function checks for existing pages by slug and creates
  them using `wp_insert_post` if missing. Includes debug logging.

Also fixes issues identified during E2E test debugging:
- Corrects fatal error in `includes/community/class-login-handler.php`
  by replacing undefined constant `HVAC_COMMUNITY_EVENTS_PATH` with
  `HVAC_CE_PLUGIN_DIR`.
- Updates `tests/e2e/tests/login.spec.ts` to use the correct selector
  `#wp-submit` for the login form submit button instead of
  `button[type="submit"]`.

Documentation updates:
- Adds `docs/automatic-page-creation-plan.md`.
- Updates `README.md` regarding automatic page creation.
- Updates Memory Bank files (`decisionLog.md`, `progress.md`,
  `activeContext.md`).

Note: Activation hook logging did not appear during WP-CLI activation,
requiring further investigation if page creation issues persist. E2E
test confirmation pending.
2025-03-28 17:18:21 -03:00

524 lines
16 KiB
PHP

<?php
namespace Yoast\PHPUnitPolyfills;
use PHPUnit\Runner\Version as PHPUnit_Version;
use PHPUnit_Runner_Version;
if ( \class_exists( 'Yoast\PHPUnitPolyfills\Autoload', false ) === false ) {
/**
* Custom autoloader.
*
* @since 0.1.0
*/
final class Autoload {
/**
* Version number.
*
* @since 1.0.1
*
* @var string
*/
const VERSION = '1.1.4';
/**
* Loads a class.
*
* @param string $className The name of the class to load.
*
* @return bool
*/
public static function load( $className ) {
/*
* Polyfill two PHP 7.0 classes.
* The autoloader will only be called for these if these classes don't already
* exist in PHP natively.
*/
if ( $className === 'Error' || $className === 'TypeError' ) {
$file = \realpath( __DIR__ . '/src/Exceptions/' . $className . '.php' );
if ( \is_string( $file ) && \file_exists( $file ) === true ) {
require_once $file;
return true;
}
return false;
}
// Only load classes belonging to this library.
if ( \stripos( $className, 'Yoast\PHPUnitPolyfills' ) !== 0 ) {
return false;
}
switch ( $className ) {
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertNumericType':
self::loadAssertNumericType();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\ExpectException':
self::loadExpectException();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertFileDirectory':
self::loadAssertFileDirectory();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\ExpectExceptionObject':
self::loadExpectExceptionObject();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertIsType':
self::loadAssertIsType();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertStringContains':
self::loadAssertStringContains();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertEqualsSpecializations':
self::loadAssertEqualsSpecializations();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\ExpectPHPException':
self::loadExpectPHPException();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\ExpectExceptionMessageMatches':
self::loadExpectExceptionMessageMatches();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertFileEqualsSpecializations':
self::loadAssertFileEqualsSpecializations();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\EqualToSpecializations':
self::loadEqualToSpecializations();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertionRenames':
self::loadAssertionRenames();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertClosedResource':
self::loadAssertClosedResource();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertObjectEquals':
self::loadAssertObjectEquals();
return true;
case 'Yoast\PHPUnitPolyfills\Polyfills\AssertObjectProperty':
self::loadAssertObjectProperty();
return true;
case 'Yoast\PHPUnitPolyfills\TestCases\TestCase':
self::loadTestCase();
return true;
case 'Yoast\PHPUnitPolyfills\TestListeners\TestListenerDefaultImplementation':
self::loadTestListenerDefaultImplementation();
return true;
/*
* Handles:
* - Yoast\PHPUnitPolyfills\Exceptions\InvalidComparisonMethodException
* - Yoast\PHPUnitPolyfills\Helpers\AssertAttributeHelper
* - Yoast\PHPUnitPolyfills\Helpers\ResourceHelper
* - Yoast\PHPUnitPolyfills\TestCases\XTestCase
* - Yoast\PHPUnitPolyfills\TestListeners\TestListenerSnakeCaseMethods
*/
default:
$file = \realpath( __DIR__ . '/src/' . \strtr( \substr( $className, 23 ), '\\', '/' ) . '.php' );
if ( \is_string( $file ) && \file_exists( $file ) === true ) {
require_once $file;
return true;
}
}
return false;
}
/**
* Load the AssertNumericType polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertNumericType() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertNan' ) === false ) {
// PHPUnit < 5.0.0.
require_once __DIR__ . '/src/Polyfills/AssertNumericType.php';
return;
}
// PHPUnit >= 5.0.0.
require_once __DIR__ . '/src/Polyfills/AssertNumericType_Empty.php';
}
/**
* Load the ExpectException polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadExpectException() {
/*
* Alias the PHPUnit 4/5 Exception class used to its PHPUnit >= 6 name.
*
* This allow for catching the potential exceptions thrown by the methods
* polyfilled in a cross-version compatible way.
*
* {@internal The `class_exists` wrappers are needed to play nice with
* PHPUnit bootstrap files of test suites implementing this library
* which may be creating cross-version compatibility in a similar manner.}}
*/
if ( \class_exists( 'PHPUnit_Framework_Exception' ) === true
&& \class_exists( 'PHPUnit\Framework\Exception' ) === false
) {
\class_alias( 'PHPUnit_Framework_Exception', 'PHPUnit\Framework\Exception' );
}
if ( \method_exists( '\PHPUnit\Framework\TestCase', 'expectException' ) === false ) {
// PHPUnit < 5.2.0.
require_once __DIR__ . '/src/Polyfills/ExpectException.php';
return;
}
// PHPUnit >= 5.2.0.
require_once __DIR__ . '/src/Polyfills/ExpectException_Empty.php';
}
/**
* Load the AssertFileDirectory polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertFileDirectory() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertIsReadable' ) === false ) {
// PHPUnit < 5.6.0.
require_once __DIR__ . '/src/Polyfills/AssertFileDirectory.php';
return;
}
// PHPUnit >= 5.6.0.
require_once __DIR__ . '/src/Polyfills/AssertFileDirectory_Empty.php';
}
/**
* Load the ExpectExceptionObject polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadExpectExceptionObject() {
if ( \method_exists( '\PHPUnit\Framework\TestCase', 'expectExceptionObject' ) === false ) {
// PHPUnit < 6.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectExceptionObject.php';
return;
}
// PHPUnit >= 6.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectExceptionObject_Empty.php';
}
/**
* Load the AssertIsType polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertIsType() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertIsArray' ) === false ) {
// PHPUnit < 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertIsType.php';
return;
}
// PHPUnit >= 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertIsType_Empty.php';
}
/**
* Load the AssertStringContains polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertStringContains() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertStringContainsString' ) === false ) {
// PHPUnit < 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertStringContains.php';
return;
}
// PHPUnit >= 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertStringContains_Empty.php';
}
/**
* Load the AssertEqualsSpecializations polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertEqualsSpecializations() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertEqualsWithDelta' ) === false ) {
// PHPUnit < 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertEqualsSpecializations.php';
return;
}
// PHPUnit >= 7.5.0.
require_once __DIR__ . '/src/Polyfills/AssertEqualsSpecializations_Empty.php';
}
/**
* Load the ExpectPHPException polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* Includes aliasing any PHPUnit native classes needed for this functionality
* which aren't available under their namespaced name in PHPUnit 4.x/5.x.
*
* @return void
*/
public static function loadExpectPHPException() {
/*
* Alias the PHPUnit 4/5 Error classes to their PHPUnit >= 6 name.
*
* {@internal The `class_exists` wrappers are needed to play nice with
* PHPUnit bootstrap files of test suites implementing this library
* which may be creating cross-version compatibility in a similar manner.}}
*/
if ( \class_exists( 'PHPUnit_Framework_Error' ) === true
&& \class_exists( 'PHPUnit\Framework\Error\Error' ) === false
) {
\class_alias( 'PHPUnit_Framework_Error', 'PHPUnit\Framework\Error\Error' );
}
if ( \class_exists( 'PHPUnit_Framework_Error_Warning' ) === true
&& \class_exists( 'PHPUnit\Framework\Error\Warning' ) === false
) {
\class_alias( 'PHPUnit_Framework_Error_Warning', 'PHPUnit\Framework\Error\Warning' );
}
if ( \class_exists( 'PHPUnit_Framework_Error_Notice' ) === true
&& \class_exists( 'PHPUnit\Framework\Error\Notice' ) === false
) {
\class_alias( 'PHPUnit_Framework_Error_Notice', 'PHPUnit\Framework\Error\Notice' );
}
if ( \class_exists( 'PHPUnit_Framework_Error_Deprecated' ) === true
&& \class_exists( 'PHPUnit\Framework\Error\Deprecated' ) === false
) {
\class_alias( 'PHPUnit_Framework_Error_Deprecated', 'PHPUnit\Framework\Error\Deprecated' );
}
if ( \method_exists( '\PHPUnit\Framework\TestCase', 'expectErrorMessage' ) === false ) {
// PHPUnit < 8.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectPHPException.php';
return;
}
// PHPUnit >= 8.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectPHPException_Empty.php';
}
/**
* Load the ExpectExceptionMessageMatches polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadExpectExceptionMessageMatches() {
if ( \method_exists( '\PHPUnit\Framework\TestCase', 'expectExceptionMessageMatches' ) === false ) {
// PHPUnit < 8.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectExceptionMessageMatches.php';
return;
}
// PHPUnit >= 8.4.0.
require_once __DIR__ . '/src/Polyfills/ExpectExceptionMessageMatches_Empty.php';
}
/**
* Load the AssertFileEqualsSpecializations polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertFileEqualsSpecializations() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertFileEqualsIgnoringCase' ) === false ) {
// PHPUnit < 8.5.0.
require_once __DIR__ . '/src/Polyfills/AssertFileEqualsSpecializations.php';
return;
}
// PHPUnit >= 8.5.0.
require_once __DIR__ . '/src/Polyfills/AssertFileEqualsSpecializations_Empty.php';
}
/**
* Load the EqualToSpecializations polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadEqualToSpecializations() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'equalToWithDelta' ) === false ) {
// PHPUnit < 9.0.0.
require_once __DIR__ . '/src/Polyfills/EqualToSpecializations.php';
return;
}
// PHPUnit >= 9.0.0.
require_once __DIR__ . '/src/Polyfills/EqualToSpecializations_Empty.php';
}
/**
* Load the AssertionRenames polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertionRenames() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertMatchesRegularExpression' ) === false ) {
// PHPUnit < 9.1.0.
require_once __DIR__ . '/src/Polyfills/AssertionRenames.php';
return;
}
// PHPUnit >= 9.1.0.
require_once __DIR__ . '/src/Polyfills/AssertionRenames_Empty.php';
}
/**
* Load the AssertClosedResource polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertClosedResource() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertIsClosedResource' ) === false ) {
// PHPUnit < 9.3.0.
require_once __DIR__ . '/src/Polyfills/AssertClosedResource.php';
return;
}
// PHPUnit >= 9.3.0.
require_once __DIR__ . '/src/Polyfills/AssertClosedResource_Empty.php';
}
/**
* Load the AssertObjectEquals polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertObjectEquals() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertObjectEquals' ) === false ) {
// PHPUnit < 9.4.0.
require_once __DIR__ . '/src/Polyfills/AssertObjectEquals.php';
return;
}
// PHPUnit >= 9.4.0.
require_once __DIR__ . '/src/Polyfills/AssertObjectEquals_Empty.php';
}
/**
* Load the AssertObjectProperty polyfill or an empty trait with the same name
* if a PHPUnit version is used which already contains this functionality.
*
* @return void
*/
public static function loadAssertObjectProperty() {
if ( \method_exists( '\PHPUnit\Framework\Assert', 'assertObjectHasProperty' ) === false ) {
// PHPUnit < 9.6.11.
require_once __DIR__ . '/src/Polyfills/AssertObjectProperty.php';
return;
}
// PHPUnit >= 9.6.11.
require_once __DIR__ . '/src/Polyfills/AssertObjectProperty_Empty.php';
}
/**
* Load the appropriate TestCase class based on the PHPUnit version being used.
*
* @return void
*/
public static function loadTestCase() {
if ( \version_compare( self::getPHPUnitVersion(), '8.0.0', '<' ) ) {
// PHPUnit < 8.0.0.
require_once __DIR__ . '/src/TestCases/TestCasePHPUnitLte7.php';
return;
}
// PHPUnit >= 8.0.0.
require_once __DIR__ . '/src/TestCases/TestCasePHPUnitGte8.php';
}
/**
* Load the appropriate TestListenerDefaultImplementation trait based on the PHPUnit version being used.
*
* @return void
*/
public static function loadTestListenerDefaultImplementation() {
if ( \version_compare( self::getPHPUnitVersion(), '6.0.0', '<' ) ) {
/*
* Alias one particular PHPUnit 4/5 class to its PHPUnit >= 6 name.
*
* All other classes needed are part of the forward-compatibility layer.
*
* {@internal The `class_exists` wrappers are needed to play nice with
* PHPUnit bootstrap files of test suites implementing this library
* which may be creating cross-version compatibility in a similar manner.}}
*/
if ( \class_exists( 'PHPUnit_Framework_Warning' ) === true
&& \class_exists( 'PHPUnit\Framework\Warning' ) === false
) {
\class_alias( 'PHPUnit_Framework_Warning', 'PHPUnit\Framework\Warning' );
}
// PHPUnit < 6.0.0.
require_once __DIR__ . '/src/TestListeners/TestListenerDefaultImplementationPHPUnitLte5.php';
return;
}
if ( \version_compare( PHPUnit_Version::id(), '7.0.0', '<' ) ) {
// PHPUnit 6.0.0 < 7.0.0.
require_once __DIR__ . '/src/TestListeners/TestListenerDefaultImplementationPHPUnit6.php';
return;
}
// PHPUnit >= 7.0.0.
require_once __DIR__ . '/src/TestListeners/TestListenerDefaultImplementationPHPUnitGte7.php';
}
/**
* Retrieve the PHPUnit version id.
*
* As both the pre-PHPUnit 6 class, as well as the PHPUnit 6+ class contain the `id()` function,
* this should work independently of whether or not another library may have aliased the class.
*
* @return string Version number as a string.
*/
public static function getPHPUnitVersion() {
if ( \class_exists( '\PHPUnit\Runner\Version' ) ) {
return PHPUnit_Version::id();
}
if ( \class_exists( '\PHPUnit_Runner_Version' ) ) {
return PHPUnit_Runner_Version::id();
}
return '0';
}
}
\spl_autoload_register( __NAMESPACE__ . '\Autoload::load' );
}