Initial commit

This commit is contained in:
ftc
2025-09-25 23:03:07 +03:00
commit fe417d9941
6627 changed files with 2153223 additions and 0 deletions
@@ -0,0 +1,150 @@
<?php
declare(strict_types=1);
namespace Codeception\Module;
use Codeception\Module;
use Codeception\Util\Shared\Asserts;
abstract class AbstractAsserts extends Module
{
use Asserts {
assertArrayHasKey as public;
assertArrayNotHasKey as public;
assertClassHasAttribute as public;
assertClassHasStaticAttribute as public;
assertClassNotHasAttribute as public;
assertClassNotHasStaticAttribute as public;
assertContains as public;
assertContainsEquals as public;
assertContainsOnly as public;
assertContainsOnlyInstancesOf as public;
assertCount as public;
assertDirectoryDoesNotExist as public;
assertDirectoryExists as public;
assertDirectoryIsNotReadable as public;
assertDirectoryIsNotWritable as public;
assertDirectoryIsReadable as public;
assertDirectoryIsWritable as public;
assertDoesNotMatchRegularExpression as public;
assertEmpty as public;
assertEquals as public;
assertEqualsCanonicalizing as public;
assertEqualsIgnoringCase as public;
assertEqualsWithDelta as public;
assertFalse as public;
assertFileDoesNotExist as public;
assertFileEquals as public;
assertFileEqualsCanonicalizing as public;
assertFileEqualsIgnoringCase as public;
assertFileExists as public;
assertFileIsNotReadable as public;
assertFileIsNotWritable as public;
assertFileIsReadable as public;
assertFileIsWritable as public;
assertFileNotEquals as public;
assertFileNotEqualsCanonicalizing as public;
assertFileNotEqualsIgnoringCase as public;
assertFileNotExists as public;
assertFinite as public;
assertGreaterOrEquals as public;
assertGreaterThan as public;
assertGreaterThanOrEqual as public;
assertInfinite as public;
assertInstanceOf as public;
assertIsArray as public;
assertIsBool as public;
assertIsCallable as public;
assertIsClosedResource as public;
assertIsEmpty as public;
assertIsFloat as public;
assertIsInt as public;
assertIsIterable as public;
assertIsNotArray as public;
assertIsNotBool as public;
assertIsNotCallable as public;
assertIsNotClosedResource as public;
assertIsNotFloat as public;
assertIsNotInt as public;
assertIsNotIterable as public;
assertIsNotNumeric as public;
assertIsNotObject as public;
assertIsNotReadable as public;
assertIsNotResource as public;
assertIsNotScalar as public;
assertIsNotString as public;
assertIsNotWritable as public;
assertIsNumeric as public;
assertIsObject as public;
assertIsReadable as public;
assertIsResource as public;
assertIsScalar as public;
assertIsString as public;
assertIsWritable as public;
assertJson as public;
assertJsonFileEqualsJsonFile as public;
assertJsonFileNotEqualsJsonFile as public;
assertJsonStringEqualsJsonFile as public;
assertJsonStringEqualsJsonString as public;
assertJsonStringNotEqualsJsonFile as public;
assertJsonStringNotEqualsJsonString as public;
assertLessOrEquals as public;
assertLessThan as public;
assertLessThanOrEqual as public;
assertMatchesRegularExpression as public;
assertNan as public;
assertNotContains as public;
assertNotContainsEquals as public;
assertNotContainsOnly as public;
assertNotCount as public;
assertNotEmpty as public;
assertNotEquals as public;
assertNotEqualsCanonicalizing as public;
assertNotEqualsIgnoringCase as public;
assertNotEqualsWithDelta as public;
assertNotFalse as public;
assertNotInstanceOf as public;
assertNotNull as public;
assertNotRegExp as public;
assertNotSame as public;
assertNotSameSize as public;
assertNotTrue as public;
assertNull as public;
assertObjectHasAttribute as public;
assertObjectNotHasAttribute as public;
assertRegExp as public;
assertSame as public;
assertSameSize as public;
assertStringContainsString as public;
assertStringContainsStringIgnoringCase as public;
assertStringEndsNotWith as public;
assertStringEndsWith as public;
assertStringEqualsFile as public;
assertStringEqualsFileCanonicalizing as public;
assertStringEqualsFileIgnoringCase as public;
assertStringMatchesFormat as public;
assertStringMatchesFormatFile as public;
assertStringNotContainsString as public;
assertStringNotContainsStringIgnoringCase as public;
assertStringNotEqualsFile as public;
assertStringNotEqualsFileCanonicalizing as public;
assertStringNotEqualsFileIgnoringCase as public;
assertStringNotMatchesFormat as public;
assertStringNotMatchesFormatFile as public;
assertStringStartsNotWith as public;
assertStringStartsWith as public;
assertThat as public;
assertThatItsNot as public;
assertTrue as public;
assertXmlFileEqualsXmlFile as public;
assertXmlFileNotEqualsXmlFile as public;
assertXmlStringEqualsXmlFile as public;
assertXmlStringEqualsXmlString as public;
assertXmlStringNotEqualsXmlFile as public;
assertXmlStringNotEqualsXmlString as public;
fail as public;
markTestIncomplete as public;
markTestSkipped as public;
}
}
@@ -0,0 +1,100 @@
<?php
declare(strict_types=1);
namespace Codeception\Module;
use Throwable;
use function get_debug_type;
/**
* Special module for using asserts in your tests.
*/
class Asserts extends AbstractAsserts
{
/**
* Handles and checks throwables (Exceptions/Errors) called inside the callback function.
* Either throwable class name or throwable instance should be provided.
*
* ```php
* <?php
* $I->expectThrowable(MyThrowable::class, function() {
* $this->doSomethingBad();
* });
*
* $I->expectThrowable(new MyException(), function() {
* $this->doSomethingBad();
* });
* ```
*
* If you want to check message or throwable code, you can pass them with throwable instance:
* ```php
* <?php
* // will check that throwable MyError is thrown with "Don't do bad things" message
* $I->expectThrowable(new MyError("Don't do bad things"), function() {
* $this->doSomethingBad();
* });
* ```
*/
public function expectThrowable(string|Throwable $throwable, callable $callback): void
{
if (is_object($throwable)) {
$class = get_class($throwable);
$msg = $throwable->getMessage();
$code = (int) $throwable->getCode();
} else {
$class = $throwable;
$msg = null;
$code = null;
}
try {
$callback();
} catch (Throwable $t) {
$this->checkThrowable($t, $class, $msg, $code);
return;
}
$this->fail("Expected throwable of class '{$class}' to be thrown, but nothing was caught");
}
/**
* Check if the given throwable matches the expected data,
* fail (throws an exception) if it does not.
*/
protected function checkThrowable(
Throwable $throwable,
string $expectedClass,
?string $expectedMsg,
int|null $expectedCode = null
): void {
if (!($throwable instanceof $expectedClass)) {
$this->fail(sprintf(
"Exception of class '%s' expected to be thrown, but class '%s' was caught",
$expectedClass,
get_debug_type($throwable)
));
}
if (null !== $expectedMsg && $throwable->getMessage() !== $expectedMsg) {
$this->fail(sprintf(
"Exception of class '%s' expected to have message '%s', but actual message was '%s'",
$expectedClass,
$expectedMsg,
$throwable->getMessage()
));
}
if (null !== $expectedCode && $throwable->getCode() !== $expectedCode) {
$this->fail(sprintf(
"Exception of class '%s' expected to have code '%s', but actual code was '%s'",
$expectedClass,
$expectedCode,
$throwable->getCode()
));
}
$this->assertTrue(true); // increment assertion counter
}
}