| assertion | new? |
|---|---|
| assertObjectHasProperty | new |
| assertObjectNotHasProperty | new |
| assertFileMatchesFormat | new |
| assertFileMatchesFormatFile | new |
| assertArrayHasKey | exists |
| assertArrayNotHasKey | exists |
| assertIsList | exists |
| assertContains | exists |
| assertContainsEquals | exists |
| assertNotContains | exists |
| assertNotContainsEquals | exists |
| assertContainsOnly | exists |
| assertContainsOnlyInstancesOf | exists |
| assertNotContainsOnly | exists |
| assertCount | exists |
| assertNotCount | exists |
| assertEquals | exists |
| assertEqualsCanonicalizing | exists |
| assertEqualsIgnoringCase | exists |
| assertEqualsWithDelta | exists |
| assertNotEquals | exists |
| assertNotEqualsCanonicalizing | exists |
| assertNotEqualsIgnoringCase | exists |
| assertNotEqualsWithDelta | exists |
| assertObjectEquals | exists |
| assertEmpty | exists |
| assertNotEmpty | exists |
| assertGreaterThan | exists |
| assertGreaterThanOrEqual | exists |
| assertLessThan | exists |
| assertLessThanOrEqual | exists |
| assertFileEquals | exists |
| assertFileEqualsCanonicalizing | exists |
| assertFileEqualsIgnoringCase | exists |
| assertFileNotEquals | exists |
| assertFileNotEqualsCanonicalizing | exists |
| assertFileNotEqualsIgnoringCase | exists |
| assertStringEqualsFile | exists |
| assertStringEqualsFileCanonicalizing | exists |
| assertStringEqualsFileIgnoringCase | exists |
| assertStringNotEqualsFile | exists |
| assertStringNotEqualsFileCanonicalizing | exists |
| assertStringNotEqualsFileIgnoringCase | exists |
| assertIsReadable | exists |
| assertIsNotReadable | exists |
| assertIsWritable | exists |
| assertIsNotWritable | exists |
| assertDirectoryExists | exists |
| assertDirectoryDoesNotExist | exists |
| assertDirectoryIsReadable | exists |
| assertDirectoryIsNotReadable | exists |
| assertDirectoryIsWritable | exists |
| assertDirectoryIsNotWritable | exists |
| assertFileExists | exists |
| assertFileDoesNotExist | exists |
| assertFileIsReadable | exists |
| assertFileIsNotReadable | exists |
| assertFileIsWritable | exists |
| assertFileIsNotWritable | exists |
| assertTrue | exists |
| assertNotTrue | exists |
| assertFalse | exists |
| assertNotFalse | exists |
| assertNull | exists |
| assertNotNull | exists |
| assertFinite | exists |
| assertInfinite | exists |
| assertNan | exists |
| assertSame | exists |
| assertNotSame | exists |
| assertInstanceOf | exists |
| assertNotInstanceOf | exists |
| assertIsArray | exists |
| assertIsBool | exists |
| assertIsFloat | exists |
| assertIsInt | exists |
| assertIsNumeric | exists |
| assertIsObject | exists |
| assertIsResource | exists |
| assertIsClosedResource | exists |
| assertIsString | exists |
| assertIsScalar | exists |
| assertIsCallable | exists |
| assertIsIterable | exists |
| assertIsNotArray | exists |
| assertIsNotBool | exists |
| assertIsNotFloat | exists |
| assertIsNotInt | exists |
| assertIsNotNumeric | exists |
| assertIsNotObject | exists |
| assertIsNotResource | exists |
| assertIsNotClosedResource | exists |
| assertIsNotString | exists |
| assertIsNotScalar | exists |
| assertIsNotCallable | exists |
| assertIsNotIterable | exists |
| assertMatchesRegularExpression | exists |
| assertDoesNotMatchRegularExpression | exists |
| assertSameSize | exists |
| assertNotSameSize | exists |
| assertStringContainsStringIgnoringLineEndings | exists |
| assertStringEqualsStringIgnoringLineEndings | exists |
| assertStringMatchesFormat | exists |
| assertStringNotMatchesFormat | exists |
| assertStringMatchesFormatFile | exists |
| assertStringNotMatchesFormatFile | exists |
| assertStringStartsWith | exists |
| assertStringStartsNotWith | exists |
| assertStringContainsString | exists |
| assertStringContainsStringIgnoringCase | exists |
| assertStringNotContainsString | exists |
| assertStringNotContainsStringIgnoringCase | exists |
| assertStringEndsWith | exists |
| assertStringEndsNotWith | exists |
| assertXmlFileEqualsXmlFile | exists |
| assertXmlFileNotEqualsXmlFile | exists |
| assertXmlStringEqualsXmlFile | exists |
| assertXmlStringNotEqualsXmlFile | exists |
| assertXmlStringEqualsXmlString | exists |
| assertXmlStringNotEqualsXmlString | exists |
| assertThat | exists |
| assertJson | exists |
| assertJsonStringEqualsJsonString | exists |
| assertJsonStringNotEqualsJsonString | exists |
| assertJsonStringEqualsJsonFile | exists |
| assertJsonStringNotEqualsJsonFile | exists |
| assertJsonFileEqualsJsonFile | exists |
| assertJsonFileNotEqualsJsonFile | exists |
Last active
May 28, 2024 16:12
-
-
Save o0h/fe9bf8d952362bf7332d41462335bc73 to your computer and use it in GitHub Desktop.
Compare the differences in assertion methods provided across two versions of PHPUnit
| assertion | new? |
|---|---|
| assertArrayIsEqualToArrayOnlyConsideringListOfKeys | new |
| assertArrayIsEqualToArrayIgnoringListOfKeys | new |
| assertArrayIsIdenticalToArrayOnlyConsideringListOfKeys | new |
| assertArrayIsIdenticalToArrayIgnoringListOfKeys | new |
| assertObjectHasProperty | new |
| assertObjectNotHasProperty | new |
| assertFileMatchesFormat | new |
| assertFileMatchesFormatFile | new |
| assertArrayHasKey | exists |
| assertArrayNotHasKey | exists |
| assertIsList | exists |
| assertContains | exists |
| assertContainsEquals | exists |
| assertNotContains | exists |
| assertNotContainsEquals | exists |
| assertContainsOnly | exists |
| assertContainsOnlyInstancesOf | exists |
| assertNotContainsOnly | exists |
| assertCount | exists |
| assertNotCount | exists |
| assertEquals | exists |
| assertEqualsCanonicalizing | exists |
| assertEqualsIgnoringCase | exists |
| assertEqualsWithDelta | exists |
| assertNotEquals | exists |
| assertNotEqualsCanonicalizing | exists |
| assertNotEqualsIgnoringCase | exists |
| assertNotEqualsWithDelta | exists |
| assertObjectEquals | exists |
| assertEmpty | exists |
| assertNotEmpty | exists |
| assertGreaterThan | exists |
| assertGreaterThanOrEqual | exists |
| assertLessThan | exists |
| assertLessThanOrEqual | exists |
| assertFileEquals | exists |
| assertFileEqualsCanonicalizing | exists |
| assertFileEqualsIgnoringCase | exists |
| assertFileNotEquals | exists |
| assertFileNotEqualsCanonicalizing | exists |
| assertFileNotEqualsIgnoringCase | exists |
| assertStringEqualsFile | exists |
| assertStringEqualsFileCanonicalizing | exists |
| assertStringEqualsFileIgnoringCase | exists |
| assertStringNotEqualsFile | exists |
| assertStringNotEqualsFileCanonicalizing | exists |
| assertStringNotEqualsFileIgnoringCase | exists |
| assertIsReadable | exists |
| assertIsNotReadable | exists |
| assertIsWritable | exists |
| assertIsNotWritable | exists |
| assertDirectoryExists | exists |
| assertDirectoryDoesNotExist | exists |
| assertDirectoryIsReadable | exists |
| assertDirectoryIsNotReadable | exists |
| assertDirectoryIsWritable | exists |
| assertDirectoryIsNotWritable | exists |
| assertFileExists | exists |
| assertFileDoesNotExist | exists |
| assertFileIsReadable | exists |
| assertFileIsNotReadable | exists |
| assertFileIsWritable | exists |
| assertFileIsNotWritable | exists |
| assertTrue | exists |
| assertNotTrue | exists |
| assertFalse | exists |
| assertNotFalse | exists |
| assertNull | exists |
| assertNotNull | exists |
| assertFinite | exists |
| assertInfinite | exists |
| assertNan | exists |
| assertSame | exists |
| assertNotSame | exists |
| assertInstanceOf | exists |
| assertNotInstanceOf | exists |
| assertIsArray | exists |
| assertIsBool | exists |
| assertIsFloat | exists |
| assertIsInt | exists |
| assertIsNumeric | exists |
| assertIsObject | exists |
| assertIsResource | exists |
| assertIsClosedResource | exists |
| assertIsString | exists |
| assertIsScalar | exists |
| assertIsCallable | exists |
| assertIsIterable | exists |
| assertIsNotArray | exists |
| assertIsNotBool | exists |
| assertIsNotFloat | exists |
| assertIsNotInt | exists |
| assertIsNotNumeric | exists |
| assertIsNotObject | exists |
| assertIsNotResource | exists |
| assertIsNotClosedResource | exists |
| assertIsNotString | exists |
| assertIsNotScalar | exists |
| assertIsNotCallable | exists |
| assertIsNotIterable | exists |
| assertMatchesRegularExpression | exists |
| assertDoesNotMatchRegularExpression | exists |
| assertSameSize | exists |
| assertNotSameSize | exists |
| assertStringContainsStringIgnoringLineEndings | exists |
| assertStringEqualsStringIgnoringLineEndings | exists |
| assertStringMatchesFormat | exists |
| assertStringNotMatchesFormat | exists |
| assertStringMatchesFormatFile | exists |
| assertStringNotMatchesFormatFile | exists |
| assertStringStartsWith | exists |
| assertStringStartsNotWith | exists |
| assertStringContainsString | exists |
| assertStringContainsStringIgnoringCase | exists |
| assertStringNotContainsString | exists |
| assertStringNotContainsStringIgnoringCase | exists |
| assertStringEndsWith | exists |
| assertStringEndsNotWith | exists |
| assertXmlFileEqualsXmlFile | exists |
| assertXmlFileNotEqualsXmlFile | exists |
| assertXmlStringEqualsXmlFile | exists |
| assertXmlStringNotEqualsXmlFile | exists |
| assertXmlStringEqualsXmlString | exists |
| assertXmlStringNotEqualsXmlString | exists |
| assertThat | exists |
| assertJson | exists |
| assertJsonStringEqualsJsonString | exists |
| assertJsonStringNotEqualsJsonString | exists |
| assertJsonStringEqualsJsonFile | exists |
| assertJsonStringNotEqualsJsonFile | exists |
| assertJsonFileEqualsJsonFile | exists |
| assertJsonFileNotEqualsJsonFile | exists |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php declare(strict_types=1); | |
| assert(array_key_exists('GITHUB_TOKEN', $_SERVER)); | |
| const TARGET_VERSIONS = [11 => '11.1.3', 10 => '10.0.0']; | |
| const DOWNLOAD_DIR = __DIR__ . '/artifacts'; | |
| if (!is_dir(DOWNLOAD_DIR) && !mkdir(DOWNLOAD_DIR, 0700, true)) { | |
| throw new RuntimeException('Failed to create directory: ' . DOWNLOAD_DIR); | |
| } elseif (!is_writable(DOWNLOAD_DIR)) { | |
| chmod(DOWNLOAD_DIR, 0700); | |
| } | |
| $packageJson = file_get_contents('https://repo.packagist.org/p2/phpunit/phpunit.json'); | |
| $packages = json_decode($packageJson, true); | |
| $requestContext = stream_context_create([ | |
| 'http' => [ | |
| 'header' => [ | |
| 'User-Agent: php-program', | |
| "Authorization: token {$_SERVER['GITHUB_TOKEN']}" | |
| ], | |
| ], | |
| ]); | |
| foreach ($packages['packages']['phpunit/phpunit'] as $versionedPackage) { | |
| $fullVersion = $versionedPackage['version']; | |
| if (!in_array($fullVersion, TARGET_VERSIONS, true)) { | |
| continue; | |
| } | |
| if (glob(DOWNLOAD_DIR . "/{$fullVersion}/**/composer.json")) { | |
| continue; | |
| } | |
| $dist = $versionedPackage['dist']['url']; | |
| $tmpFile = tempnam(sys_get_temp_dir(), 'zip'); | |
| file_put_contents($tmpFile, file_get_contents($dist, context: $requestContext)); | |
| $zip = new ZipArchive(); | |
| $zip->open($tmpFile); | |
| $zip->extractTo(DOWNLOAD_DIR . '/' . $fullVersion); | |
| $zip->close(); | |
| unlink($tmpFile); | |
| } | |
| $versionAssertions = []; | |
| foreach (TARGET_VERSIONS as $majorVersion => $fullVersion) { | |
| $rootDir = glob(DOWNLOAD_DIR . "/{$fullVersion}/*", GLOB_ONLYDIR)[0]; | |
| $srcPath = "{$rootDir}/src/Framework/Assert.php"; | |
| $src = str_replace( | |
| 'namespace PHPUnit\Framework;', | |
| "namespace PHPUnit{$majorVersion}\\Framework;", | |
| file_get_contents($srcPath) | |
| ); | |
| eval(substr($src, 5)); | |
| $reflection = new ReflectionClass("\\PHPUnit{$majorVersion}\\Framework\\Assert"); | |
| $methods = $reflection->getMethods(); | |
| $versionAssertions[$majorVersion] = []; | |
| foreach ($methods as $method) { | |
| $methodName = $method->getName(); | |
| if (!str_starts_with($methodName, 'assert')) { | |
| continue; | |
| } | |
| $versionAssertions[$majorVersion][] = $methodName; | |
| } | |
| } | |
| $targetVersions = TARGET_VERSIONS; | |
| arsort($targetVersions); | |
| $newer = key($targetVersions); | |
| $assertions = array_fill_keys($versionAssertions[$newer], '0. new'); | |
| foreach ($versionAssertions[10] as $assertion) { | |
| if (array_key_exists($assertion, $assertions)) { | |
| $assertions[$assertion] = '1. exists'; | |
| } else { | |
| $assertions[$assertion] = '2. removed'; | |
| } | |
| } | |
| asort($assertions); | |
| $op = new SplFileObject(__DIR__ . '/README.md', 'w'); | |
| $op->fwrite('| assertion | new? |' . PHP_EOL); | |
| $op->fwrite('| --- | --- |' . PHP_EOL); | |
| foreach ($assertions as $assertion => $status) { | |
| $status = substr($status, 3); | |
| $op->fwrite("| {$assertion} | {$status} |" . PHP_EOL); | |
| } | |
| unset($op); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment