+<?php
+
+declare(strict_types=1);
+
+namespace Shaarli;
+
+/**
+ * Helper class extending \PHPUnit\Framework\TestCase.
+ * Used to make Shaarli UT run on multiple versions of PHPUnit.
+ */
+class TestCase extends \PHPUnit\Framework\TestCase
+{
+ /**
+ * expectExceptionMessageRegExp has been removed and replaced by expectExceptionMessageMatches in PHPUnit 9.
+ */
+ public function expectExceptionMessageRegExp(string $regularExpression): void
+ {
+ if (method_exists($this, 'expectExceptionMessageMatches')) {
+ $this->expectExceptionMessageMatches($regularExpression);
+ } else {
+ parent::expectExceptionMessageRegExp($regularExpression);
+ }
+ }
+
+ /**
+ * assertContains is now used for iterable, strings should use assertStringContainsString
+ */
+ public function assertContainsPolyfill($expected, $actual, string $message = ''): void
+ {
+ if (is_string($actual) && method_exists($this, 'assertStringContainsString')) {
+ static::assertStringContainsString($expected, $actual, $message);
+ } else {
+ static::assertContains($expected, $actual, $message);
+ }
+ }
+
+ /**
+ * assertNotContains is now used for iterable, strings should use assertStringNotContainsString
+ */
+ public function assertNotContainsPolyfill($expected, $actual, string $message = ''): void
+ {
+ if (is_string($actual) && method_exists($this, 'assertStringNotContainsString')) {
+ static::assertStringNotContainsString($expected, $actual, $message);
+ } else {
+ static::assertNotContains($expected, $actual, $message);
+ }
+ }
+
+ /**
+ * assertFileNotExists has been renamed in assertFileDoesNotExist
+ */
+ public static function assertFileNotExists(string $filename, string $message = ''): void
+ {
+ if (method_exists(TestCase::class, 'assertFileDoesNotExist')) {
+ static::assertFileDoesNotExist($filename, $message);
+ } else {
+ parent::assertFileNotExists($filename, $message);
+ }
+ }
+
+ /**
+ * assertRegExp has been renamed in assertMatchesRegularExpression
+ */
+ public static function assertRegExp(string $pattern, string $string, string $message = ''): void
+ {
+ if (method_exists(TestCase::class, 'assertMatchesRegularExpression')) {
+ static::assertMatchesRegularExpression($pattern, $string, $message);
+ } else {
+ parent::assertRegExp($pattern, $string, $message);
+ }
+ }
+
+ public function isInTestsContext(): bool
+ {
+ return true;
+ }
+}