From 2c5f141cc115ee9d40a0fb3e75bacf93a0ae3ca3 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 2 Dec 2020 19:22:19 +0100 Subject: [PATCH 01/10] /setup/: ensure not to pass an empty array to max() ... as PHP 8 doesn't tolerate such. refs #4287 --- modules/setup/application/views/scripts/index/index.phtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/setup/application/views/scripts/index/index.phtml b/modules/setup/application/views/scripts/index/index.phtml index b5fb40798f..3a6e17965f 100644 --- a/modules/setup/application/views/scripts/index/index.phtml +++ b/modules/setup/application/views/scripts/index/index.phtml @@ -9,10 +9,10 @@ $currentPos = array_search($wizard->getCurrentPage(), $pages, true); list($configPagesLeft, $configPagesRight) = array_chunk($configPages, count($configPages) / 2, true); $visitedPages = array_keys($wizard->getPageData()); -$maxProgress = @max(array_keys(array_filter( +$maxProgress = max(array_merge([0], array_keys(array_filter( $pages, function ($page) use ($visitedPages) { return in_array($page->getName(), $visitedPages); } -))); +)))); ?>
From 2990ca09abcc7415066d22ffa20aaba4d8ed22ca Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 2 Dec 2020 19:31:25 +0100 Subject: [PATCH 02/10] GitHub actions: test also with PHP 8.0 refs #4287 --- .github/workflows/php.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 4d52983ba9..3c45e81e1c 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4'] + php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] os: ['ubuntu-latest'] include: - php: '5.6' @@ -57,7 +57,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4'] + php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] os: ['ubuntu-latest'] services: From 6d5024c6713aec08474e5cc1a2207c36b657d110 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Thu, 3 Dec 2020 19:42:19 +0100 Subject: [PATCH 03/10] *downtimestarthistoryQuery#joinBaseTables(): don't call func_get_arg() with an invalid index ... as PHP 8 doesn't tolerate that. refs #4287 --- .../Backend/Ido/Query/HostdowntimestarthistoryQuery.php | 2 +- .../Backend/Ido/Query/ServicedowntimestarthistoryQuery.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostdowntimestarthistoryQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostdowntimestarthistoryQuery.php index 831df6c818..5d0517884e 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostdowntimestarthistoryQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostdowntimestarthistoryQuery.php @@ -96,7 +96,7 @@ protected function joinBaseTables() array() ); - if (@func_get_arg(0) === false) { + if (func_num_args() === 0 || func_get_arg(0) === false) { $this->select->where( "hdh.actual_start_time > '1970-01-02 00:00:00'" ); diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicedowntimestarthistoryQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicedowntimestarthistoryQuery.php index 6ed081ef70..932d854a01 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicedowntimestarthistoryQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicedowntimestarthistoryQuery.php @@ -97,7 +97,7 @@ protected function joinBaseTables() array() ); - if (@func_get_arg(0) === false) { + if (func_num_args() === 0 || func_get_arg(0) === false) { $this->select->where( "sdh.actual_start_time > '1970-01-02 00:00:00'" ); From eff10ec6138c90008b3944633e46752ea8b252ee Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Fri, 4 Dec 2020 12:15:13 +0100 Subject: [PATCH 04/10] ApplicationBootstrap#setupErrorHandling(): migrate error handler to PHP 8 ... as recommended here: https://www.php.net/manual/de/migration80.incompatible.php refs #4287 --- library/Icinga/Application/ApplicationBootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Icinga/Application/ApplicationBootstrap.php b/library/Icinga/Application/ApplicationBootstrap.php index 04cc930d20..8c72d0e513 100644 --- a/library/Icinga/Application/ApplicationBootstrap.php +++ b/library/Icinga/Application/ApplicationBootstrap.php @@ -605,7 +605,7 @@ protected function setupErrorHandling() ini_set('display_startup_errors', 1); ini_set('display_errors', 1); set_error_handler(function ($errno, $errstr, $errfile, $errline) { - if (error_reporting() === 0) { + if (! (error_reporting() & $errno)) { // Error was suppressed with the @-operator return false; // Continue with the normal error handler } From 19a092c13fd80667c72b83c32c2f1d5b80e6cb16 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Thu, 8 Apr 2021 16:49:17 +0200 Subject: [PATCH 05/10] php: Don't test on PHP 5.6 through 7.1 --- .github/workflows/php.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 3c45e81e1c..a842886d31 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -51,14 +51,16 @@ jobs: runs-on: ${{ matrix.os }} env: - phpunit-version: 5.7.27 - mockery-version: 0.9.9 # *Any* other version is not compatible with PHP 5.6 and anything above phpunit 6 + phpunit-version: 9.5.4 strategy: fail-fast: false matrix: - php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] + php: ['7.2', '7.3', '7.4', '8.0'] os: ['ubuntu-latest'] + include: + - php: '7.2' + phpunit-version: 8.5.15 services: mysql: @@ -98,13 +100,13 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - tools: phpunit:${{ env.phpunit-version }} + tools: phpunit:${{ matrix.phpunit-version || env.phpunit-version }} extensions: mysql, pgsql, ldap - name: Setup dependencies run: | sudo locale-gen en_US.UTF-8 de_DE.UTF-8 fr_FR.UTF-8 - composer require -n --no-progress mockery/mockery:${{ env.mockery-version }} + composer require -n --no-progress mockery/mockery - name: PHPUnit env: From cb87190138db2799ecbbba50ef7532ca912ad251 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 9 Apr 2021 09:39:10 +0200 Subject: [PATCH 06/10] tests: Add `:void` return type declarations --- library/Icinga/Test/BaseTestCase.php | 2 +- .../test/php/application/views/helpers/PluginOutputTest.php | 2 +- modules/monitoring/test/php/regression/Bug7043Test.php | 2 +- test/php/application/views/helpers/DateFormatTestBroken.php | 2 +- test/php/library/Icinga/Application/ClassLoaderTest.php | 4 ++-- test/php/library/Icinga/Application/ConfigTest.php | 4 ++-- .../php/library/Icinga/Data/DataArray/ArrayDatasourceTest.php | 2 +- test/php/library/Icinga/Data/Filter/FilterTest.php | 2 +- test/php/library/Icinga/File/Ini/IniParserTest.php | 4 ++-- test/php/library/Icinga/File/Ini/IniWriterTest.php | 4 ++-- test/php/library/Icinga/Logger/Writer/StreamWriterTest.php | 4 ++-- test/php/library/Icinga/Test/BaseTestCaseTest.php | 2 +- test/php/library/Icinga/Util/TranslatorTest.php | 2 +- test/php/library/Icinga/Web/FormTest.php | 2 +- test/php/library/Icinga/Web/HookTest.php | 4 ++-- test/php/library/Icinga/Web/Widget/DashboardTest.php | 2 +- test/php/library/Icinga/Web/Widget/SearchDashboardTest.php | 2 +- 17 files changed, 23 insertions(+), 23 deletions(-) diff --git a/library/Icinga/Test/BaseTestCase.php b/library/Icinga/Test/BaseTestCase.php index 286ec30591..214b530ee8 100644 --- a/library/Icinga/Test/BaseTestCase.php +++ b/library/Icinga/Test/BaseTestCase.php @@ -138,7 +138,7 @@ public static function setupDirectories() /** * Setup MVC bootstrapping and ensure that the Icinga-Mock gets reinitialized */ - public function setUp() + public function setUp(): void { parent::setUp(); $this->setupIcingaMock(); diff --git a/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php b/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php index a07614079e..76e67c6ff7 100644 --- a/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php +++ b/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php @@ -20,7 +20,7 @@ class PluginOutputTest extends BaseTestCase protected static $statusTags = array('OK', 'WARNING', 'CRITICAL', 'UNKNOWN', 'UP', 'DOWN'); - public function setUp() + public function setUp(): void { parent::setUp(); diff --git a/modules/monitoring/test/php/regression/Bug7043Test.php b/modules/monitoring/test/php/regression/Bug7043Test.php index 07cc02428f..ba9291be60 100644 --- a/modules/monitoring/test/php/regression/Bug7043Test.php +++ b/modules/monitoring/test/php/regression/Bug7043Test.php @@ -24,7 +24,7 @@ public static function setModuleConfig($moduleName, $configName, $config) class Bug7043Test extends BaseTestCase { - public function tearDown() + public function tearDown(): void { parent::tearDown(); Mockery::close(); // Necessary because some tests run in a separate process diff --git a/test/php/application/views/helpers/DateFormatTestBroken.php b/test/php/application/views/helpers/DateFormatTestBroken.php index 188c629888..6fb768b3cd 100644 --- a/test/php/application/views/helpers/DateFormatTestBroken.php +++ b/test/php/application/views/helpers/DateFormatTestBroken.php @@ -12,7 +12,7 @@ class DateFormatTest extends BaseTestCase { - public function tearDown() + public function tearDown(): void { DateTimeFactory::setConfig(array('timezone' => date_default_timezone_get())); } diff --git a/test/php/library/Icinga/Application/ClassLoaderTest.php b/test/php/library/Icinga/Application/ClassLoaderTest.php index 5422869125..7b88c6e74a 100644 --- a/test/php/library/Icinga/Application/ClassLoaderTest.php +++ b/test/php/library/Icinga/Application/ClassLoaderTest.php @@ -26,7 +26,7 @@ public function testFlag() EOD; - public function setUp() + public function setUp(): void { parent::setUp(); $tempDir = sys_get_temp_dir(); @@ -35,7 +35,7 @@ public function setUp() file_put_contents($this->baseDir. self::$classFile, self::$classContent); } - public function tearDown() + public function tearDown(): void { parent::tearDown(); system('rm -rf '. $this->baseDir); diff --git a/test/php/library/Icinga/Application/ConfigTest.php b/test/php/library/Icinga/Application/ConfigTest.php index e47173679c..f875cb5c72 100644 --- a/test/php/library/Icinga/Application/ConfigTest.php +++ b/test/php/library/Icinga/Application/ConfigTest.php @@ -11,7 +11,7 @@ class ConfigTest extends BaseTestCase /** * Set up config dir */ - public function setUp() + public function setUp(): void { parent::setUp(); $this->oldConfigDir = Config::$configDir; @@ -21,7 +21,7 @@ public function setUp() /** * Reset config dir */ - public function tearDown() + public function tearDown(): void { parent::tearDown(); Config::$configDir = $this->oldConfigDir; diff --git a/test/php/library/Icinga/Data/DataArray/ArrayDatasourceTest.php b/test/php/library/Icinga/Data/DataArray/ArrayDatasourceTest.php index 5ad2b1b091..7e715cac2e 100644 --- a/test/php/library/Icinga/Data/DataArray/ArrayDatasourceTest.php +++ b/test/php/library/Icinga/Data/DataArray/ArrayDatasourceTest.php @@ -10,7 +10,7 @@ class ArrayDatasourceTest extends BaseTestCase { private $sampleData; - public function setUp() + public function setUp(): void { parent::setUp(); $this->sampleData = array( diff --git a/test/php/library/Icinga/Data/Filter/FilterTest.php b/test/php/library/Icinga/Data/Filter/FilterTest.php index 97133a2163..9bbff01a32 100644 --- a/test/php/library/Icinga/Data/Filter/FilterTest.php +++ b/test/php/library/Icinga/Data/Filter/FilterTest.php @@ -61,7 +61,7 @@ class FilterTest extends BaseTestCase private $sampleData; - public function setUp() + public function setUp(): void { parent::setUp(); $this->sampleData = array( diff --git a/test/php/library/Icinga/File/Ini/IniParserTest.php b/test/php/library/Icinga/File/Ini/IniParserTest.php index 5a1d7df906..b945cc44e1 100644 --- a/test/php/library/Icinga/File/Ini/IniParserTest.php +++ b/test/php/library/Icinga/File/Ini/IniParserTest.php @@ -12,13 +12,13 @@ class IniParserTest extends BaseTestCase { protected $tempFile; - public function setUp() + public function setUp(): void { parent::setUp(); $this->tempFile = tempnam(sys_get_temp_dir(), 'icinga-ini-parser-test'); } - public function tearDown() + public function tearDown(): void { parent::tearDown(); unlink($this->tempFile); diff --git a/test/php/library/Icinga/File/Ini/IniWriterTest.php b/test/php/library/Icinga/File/Ini/IniWriterTest.php index c3fb6df1fc..acd9c97381 100644 --- a/test/php/library/Icinga/File/Ini/IniWriterTest.php +++ b/test/php/library/Icinga/File/Ini/IniWriterTest.php @@ -12,7 +12,7 @@ class IniWriterTest extends BaseTestCase protected $tempFile; protected $tempFile2; - public function setUp() + public function setUp(): void { parent::setUp(); @@ -20,7 +20,7 @@ public function setUp() $this->tempFile2 = tempnam(sys_get_temp_dir(), 'icinga-ini-writer-test-2'); } - public function tearDown() + public function tearDown(): void { parent::tearDown(); diff --git a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php index 38ff4dc0d0..4570a24477 100644 --- a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php +++ b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php @@ -10,14 +10,14 @@ class StreamWriterTest extends BaseTestCase { - public function setUp() + public function setUp(): void { parent::setUp(); $this->target = tempnam(sys_get_temp_dir(), 'log'); } - public function tearDown() + public function tearDown(): void { parent::tearDown(); diff --git a/test/php/library/Icinga/Test/BaseTestCaseTest.php b/test/php/library/Icinga/Test/BaseTestCaseTest.php index 8611dbe620..2625d983dd 100644 --- a/test/php/library/Icinga/Test/BaseTestCaseTest.php +++ b/test/php/library/Icinga/Test/BaseTestCaseTest.php @@ -10,7 +10,7 @@ class BaseTestCaseTest extends BaseTestCase { protected $emptySqlDumpFile; - public function tearDown() + public function tearDown(): void { parent::tearDown(); diff --git a/test/php/library/Icinga/Util/TranslatorTest.php b/test/php/library/Icinga/Util/TranslatorTest.php index d61ea4a9da..5696959a8d 100644 --- a/test/php/library/Icinga/Util/TranslatorTest.php +++ b/test/php/library/Icinga/Util/TranslatorTest.php @@ -17,7 +17,7 @@ public static function getAvailableLocaleCodes() class TranslatorTest extends BaseTestCase { - public function setUp() + public function setUp(): void { parent::setUp(); Translator::registerDomain('icingatest', BaseTestCase::$testDir . '/res/locale'); diff --git a/test/php/library/Icinga/Web/FormTest.php b/test/php/library/Icinga/Web/FormTest.php index 3d6ac7d1e9..b0e85e7495 100644 --- a/test/php/library/Icinga/Web/FormTest.php +++ b/test/php/library/Icinga/Web/FormTest.php @@ -26,7 +26,7 @@ public function onSuccess() class FormTest extends BaseTestCase { - public function tearDown() + public function tearDown(): void { Mockery::close(); // Necessary as some tests are running isolated } diff --git a/test/php/library/Icinga/Web/HookTest.php b/test/php/library/Icinga/Web/HookTest.php index fdee11636a..111b6be379 100644 --- a/test/php/library/Icinga/Web/HookTest.php +++ b/test/php/library/Icinga/Web/HookTest.php @@ -41,14 +41,14 @@ class HookTest extends BaseTestCase protected $failingHook = '\\Tests\\Icinga\\Web\\FailingHook'; protected $testBaseClass = '\\Icinga\\Web\\Hook\\TestHook'; - public function setUp() + public function setUp(): void { $this->markTestSkipped(); parent::setUp(); Hook::clean(); } - public function tearDown() + public function tearDown(): void { parent::tearDown(); Hook::clean(); diff --git a/test/php/library/Icinga/Web/Widget/DashboardTest.php b/test/php/library/Icinga/Web/Widget/DashboardTest.php index 260e5b494b..cb48952fe7 100644 --- a/test/php/library/Icinga/Web/Widget/DashboardTest.php +++ b/test/php/library/Icinga/Web/Widget/DashboardTest.php @@ -39,7 +39,7 @@ public function getTabs() class DashboardTest extends BaseTestCase { - public function tearDown() + public function tearDown(): void { parent::tearDown(); Mockery::close(); // Necessary because some tests run in a separate process diff --git a/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php b/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php index 7370338e5c..6fe7e2118f 100644 --- a/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php +++ b/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php @@ -11,7 +11,7 @@ class SearchDashboardTest extends BaseTestCase { - public function setUp() + public function setUp(): void { $moduleMock = Mockery::mock('Icinga\Application\Modules\Module'); $searchUrl = (object) array( From bc1c967decc185bc200644c4aab63b6d88d1d628 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 9 Apr 2021 10:11:41 +0200 Subject: [PATCH 07/10] BaseTestCase: Inherit from `Mockery\Adapter\Phpunit\MockeryTestCase` --- library/Icinga/Test/BaseTestCase.php | 3 +- test/php/bootstrap.php | 4 --- test/php/phpunit-compat.php | 15 ---------- test/php/regression/Bug4102Test.php | 42 ---------------------------- 4 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 test/php/phpunit-compat.php delete mode 100644 test/php/regression/Bug4102Test.php diff --git a/library/Icinga/Test/BaseTestCase.php b/library/Icinga/Test/BaseTestCase.php index 214b530ee8..a293f7b6fc 100644 --- a/library/Icinga/Test/BaseTestCase.php +++ b/library/Icinga/Test/BaseTestCase.php @@ -23,7 +23,6 @@ function mt() use Exception; use RuntimeException; use Mockery; - use PHPUnit_Framework_TestCase; use Icinga\Application\Icinga; use Icinga\Data\ConfigObject; use Icinga\Data\ResourceFactory; @@ -32,7 +31,7 @@ function mt() /** * Class BaseTestCase */ - abstract class BaseTestCase extends PHPUnit_Framework_TestCase implements DbTest + abstract class BaseTestCase extends Mockery\Adapter\Phpunit\MockeryTestCase implements DbTest { /** * Path to application/ diff --git a/test/php/bootstrap.php b/test/php/bootstrap.php index 75912674c2..6f78711720 100644 --- a/test/php/bootstrap.php +++ b/test/php/bootstrap.php @@ -36,10 +36,6 @@ require_once($icingaLibPath . '/Test/ClassLoader.php'); -if (! class_exists('PHPUnit_Framework_TestCase')) { - require_once __DIR__ . '/phpunit-compat.php'; -} - $loader = new Icinga\Test\ClassLoader(); $loader->registerNamespace('Tests', $testLibraryPath); $loader->registerNamespace('Icinga', $icingaLibPath); diff --git a/test/php/phpunit-compat.php b/test/php/phpunit-compat.php deleted file mode 100644 index 88287906d6..0000000000 --- a/test/php/phpunit-compat.php +++ /dev/null @@ -1,15 +0,0 @@ -assertContains('Bug4102Test', $class); - } - - /** - * Test namespace to match definition - */ - public function testNamespace() - { - $namespace = __NAMESPACE__; - $this->assertEquals('Tests\Icinga\Regression', $namespace); - } - - /** - * Test phpunit inheritance - */ - public function testInheritance() - { - $this->assertInstanceOf('\PHPUnit_Framework_TestCase', $this); - } -} From f27e872d90c3372b2575346df818c0903f69cbb0 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 9 Apr 2021 10:49:17 +0200 Subject: [PATCH 08/10] tests: Don't make use of deprecated phpunit features --- .../Monitoring/Plugin/PerfdataTest.php | 10 ++-- .../Monitoring/Web/Rest/RestRequestTest.php | 5 +- .../library/Icinga/Application/ConfigTest.php | 10 ++-- .../Icinga/Application/Hook/AuditHookTest.php | 15 ++--- .../library/Icinga/Data/ConfigObjectTest.php | 5 +- .../library/Icinga/File/Ini/IniWriterTest.php | 11 ++-- .../File/Storage/LocalFileStorageTest.php | 55 ++++++++----------- .../Icinga/Logger/Writer/StreamWriterTest.php | 2 +- .../library/Icinga/Test/BaseTestCaseTest.php | 10 ++-- .../library/Icinga/User/Store/DbStoreTest.php | 15 ++--- test/php/library/Icinga/UserTest.php | 5 +- test/php/library/Icinga/Util/FileTest.php | 10 ++-- .../library/Icinga/Util/TranslatorTest.php | 5 +- test/php/library/Icinga/Web/FormTest.php | 5 +- .../ScrollingStyle/SlidingWithBorderTest.php | 4 +- .../Web/Session/SessionNamespaceTest.php | 5 +- test/php/library/Icinga/Web/UrlTest.php | 5 +- .../Icinga/Web/Widget/DashboardTest.php | 11 ++-- .../Icinga/Web/Widget/SearchDashboardTest.php | 5 +- 19 files changed, 80 insertions(+), 113 deletions(-) diff --git a/modules/monitoring/test/php/library/Monitoring/Plugin/PerfdataTest.php b/modules/monitoring/test/php/library/Monitoring/Plugin/PerfdataTest.php index dbccb5c800..ab6ffa9387 100644 --- a/modules/monitoring/test/php/library/Monitoring/Plugin/PerfdataTest.php +++ b/modules/monitoring/test/php/library/Monitoring/Plugin/PerfdataTest.php @@ -8,19 +8,17 @@ class PerfdataTest extends BaseTestCase { - /** - * @expectedException \InvalidArgumentException - */ public function testWhetherFromStringThrowsExceptionWhenGivenAnEmptyString() { + $this->expectException(\InvalidArgumentException::class); + Perfdata::fromString(''); } - /** - * @expectedException \InvalidArgumentException - */ public function testWhetherFromStringThrowsExceptionWhenGivenAnInvalidString() { + $this->expectException(\InvalidArgumentException::class); + Perfdata::fromString('test'); } diff --git a/modules/monitoring/test/php/library/Monitoring/Web/Rest/RestRequestTest.php b/modules/monitoring/test/php/library/Monitoring/Web/Rest/RestRequestTest.php index e422ec0766..6e77ffcdde 100644 --- a/modules/monitoring/test/php/library/Monitoring/Web/Rest/RestRequestTest.php +++ b/modules/monitoring/test/php/library/Monitoring/Web/Rest/RestRequestTest.php @@ -16,11 +16,10 @@ protected function curlExec(array $options) class RestRequestTest extends BaseTestCase { - /** - * @expectedException \Icinga\Exception\Json\JsonDecodeException - */ public function testInvalidServerResponseHandling() { + $this->expectException(\Icinga\Exception\Json\JsonDecodeException::class); + MockedRestRequest::get('http://localhost')->send(); } } diff --git a/test/php/library/Icinga/Application/ConfigTest.php b/test/php/library/Icinga/Application/ConfigTest.php index f875cb5c72..5fb47639a6 100644 --- a/test/php/library/Icinga/Application/ConfigTest.php +++ b/test/php/library/Icinga/Application/ConfigTest.php @@ -185,11 +185,10 @@ public function testWhetherConfigKnowsWhichSectionsItHas() ); } - /** - * @expectedException UnexpectedValueException - */ public function testWhetherAnExceptionIsThrownWhenTryingToAccessASectionPropertyOnANonSection() { + $this->expectException(\UnexpectedValueException::class); + $config = Config::fromArray(array('a' => 'b')); $config->get('a', 'b'); } @@ -234,11 +233,10 @@ public function testWhetherItIsPossibleToInitializeAConfigFromAIniFile() ); } - /** - * @expectedException Icinga\Exception\NotReadableError - */ public function testWhetherFromIniThrowsAnExceptionOnInsufficientPermission() { + $this->expectException(\Icinga\Exception\NotReadableError::class); + Config::fromIni('/etc/shadow'); } diff --git a/test/php/library/Icinga/Application/Hook/AuditHookTest.php b/test/php/library/Icinga/Application/Hook/AuditHookTest.php index 8f0a12507b..14ca43792c 100644 --- a/test/php/library/Icinga/Application/Hook/AuditHookTest.php +++ b/test/php/library/Icinga/Application/Hook/AuditHookTest.php @@ -32,27 +32,24 @@ public function testFormatMessageResolvesParametersWithSingleBraces() $this->assertEquals('foo', (new TestAuditHook())->formatMessage('{{te{.}st}}', ['te{' => ['}st' => 'foo']])); } - /** - * @expectedException \InvalidArgumentException - */ public function testFormatMessageComplainsAboutUnresolvedParameters() { + $this->expectException(\InvalidArgumentException::class); + (new TestAuditHook())->formatMessage('{{missing}}', []); } - /** - * @expectedException \InvalidArgumentException - */ public function testFormatMessageComplainsAboutNonScalarParameters() { + $this->expectException(\InvalidArgumentException::class); + (new TestAuditHook())->formatMessage('{{test}}', ['test' => ['foo' => 'bar']]); } - /** - * @expectedException \InvalidArgumentException - */ public function testFormatMessageComplainsAboutNonArrayParameters() { + $this->expectException(\InvalidArgumentException::class); + (new TestAuditHook())->formatMessage('{{test.foo}}', ['test' => 'foo']); } } diff --git a/test/php/library/Icinga/Data/ConfigObjectTest.php b/test/php/library/Icinga/Data/ConfigObjectTest.php index 9b87019bf6..f6b577b034 100644 --- a/test/php/library/Icinga/Data/ConfigObjectTest.php +++ b/test/php/library/Icinga/Data/ConfigObjectTest.php @@ -115,11 +115,10 @@ public function testWhetherItIsPossibleToSetPropertiesAndSections() ); } - /** - * @expectedException \Icinga\Exception\ProgrammingError - */ public function testWhetherItIsNotPossibleToAppendProperties() { + $this->expectException(\Icinga\Exception\ProgrammingError::class); + $config = new ConfigObject(); $config[] = 'test'; } diff --git a/test/php/library/Icinga/File/Ini/IniWriterTest.php b/test/php/library/Icinga/File/Ini/IniWriterTest.php index acd9c97381..d70aa2e8f4 100644 --- a/test/php/library/Icinga/File/Ini/IniWriterTest.php +++ b/test/php/library/Icinga/File/Ini/IniWriterTest.php @@ -322,11 +322,10 @@ public function testSectionNameEscaping() ); } - /** - * @expectedException \Icinga\Exception\ConfigurationError - */ public function testWhetherBracketsAreIllegalInSectionNames() { + $this->expectException(\Icinga\Exception\ConfigurationError::class); + $config = Config::fromArray(['section [brackets]' => []]); (new IniWriter($config, $this->tempFile))->write(); } @@ -419,7 +418,7 @@ public function testWhetherNullValuesGetPersisted() $config->setSection('garbage', $section); $iniWriter = new IniWriter($config, '/dev/null'); - $this->assertNotContains( + $this->assertStringNotContainsString( 'foobar', $iniWriter->render(), 'IniWriter persists section keys with null values' @@ -434,7 +433,7 @@ public function testWhetherEmptyValuesGetPersisted() $config->setSection('garbage', $section); $iniWriter = new IniWriter($config, '/dev/null'); - $this->assertContains( + $this->assertStringContainsString( 'foobar', $iniWriter->render(), 'IniWriter doesn\'t persist section keys with empty values' @@ -451,7 +450,7 @@ public function testExplicitRemove() $section = $config->getSection('garbage'); $section->foobar = null; $iniWriter = new IniWriter($config, $filename); - $this->assertNotContains( + $this->assertStringNotContainsString( 'foobar', $iniWriter->render(), 'IniWriter doesn\'t remove section keys with null values' diff --git a/test/php/library/Icinga/File/Storage/LocalFileStorageTest.php b/test/php/library/Icinga/File/Storage/LocalFileStorageTest.php index 5f104a50c4..7ba0efd2f1 100644 --- a/test/php/library/Icinga/File/Storage/LocalFileStorageTest.php +++ b/test/php/library/Icinga/File/Storage/LocalFileStorageTest.php @@ -54,11 +54,10 @@ public function testGetIterator() static::assertSame(array('foobar'), array_values(iterator_to_array($lfs->getIterator()))); } - /** - * @expectedException \Icinga\Exception\NotReadableError - */ public function testGetIteratorThrowsNotReadableError() { + $this->expectException(\Icinga\Exception\NotReadableError::class); + $lfs = new LocalFileStorage('/notreadabledirectory'); $lfs->getIterator(); } @@ -79,21 +78,19 @@ public function testCreate() static::assertSame('Hello world!', $lfs->read('foo/bar')); } - /** - * @expectedException \Icinga\Exception\AlreadyExistsException - */ public function testCreateThrowsAlreadyExistsException() { + $this->expectException(\Icinga\Exception\AlreadyExistsException::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->create('foobar', 'Hello world!'); $lfs->create('foobar', 'Hello world!'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testCreateThrowsNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $lfs = new LocalFileStorage('/notwritabledirectory'); $lfs->create('foobar', 'Hello world!'); } @@ -105,20 +102,18 @@ public function testRead() static::assertSame('Hello world!', $lfs->read('foobar')); } - /** - * @expectedException \Icinga\Exception\NotFoundError - */ public function testReadThrowsNotFoundError() { + $this->expectException(\Icinga\Exception\NotFoundError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->read('foobar'); } - /** - * @expectedException \Icinga\Exception\NotReadableError - */ public function testReadThrowsNotReadableError() { + $this->expectException(\Icinga\Exception\NotReadableError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->create('foobar', 'Hello world!'); chmod($lfs->resolvePath('foobar'), 0); @@ -133,20 +128,18 @@ public function testUpdate() static::assertSame('Hello universe!', $lfs->read('foobar')); } - /** - * @expectedException \Icinga\Exception\NotFoundError - */ public function testUpdateThrowsNotFoundError() { + $this->expectException(\Icinga\Exception\NotFoundError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->update('foobar', 'Hello universe!'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testUpdateThrowsNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->create('foobar', 'Hello world!'); chmod($lfs->resolvePath('foobar'), 0); @@ -161,20 +154,18 @@ public function testDelete() static::assertFalse($lfs->has('foobar')); } - /** - * @expectedException \Icinga\Exception\NotFoundError - */ public function testDeleteThrowsNotFoundError() { + $this->expectException(\Icinga\Exception\NotFoundError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->delete('foobar'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testDeleteThrowsNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->create('foobar', 'Hello world!'); @@ -204,20 +195,18 @@ public function testResolvePathAssertExistence() $lfs->resolvePath('./notRelevant/../foobar', true); } - /** - * @expectedException \Icinga\Exception\NotFoundError - */ public function testResolvePathThrowsNotFoundError() { + $this->expectException(\Icinga\Exception\NotFoundError::class); + $lfs = new TemporaryLocalFileStorage(); $lfs->resolvePath('foobar', true); } - /** - * @expectedException \InvalidArgumentException - */ public function testResolvePathThrowsInvalidArgumentException() { + $this->expectException(\InvalidArgumentException::class); + $lfs = new LocalFileStorage('/notreadabledirectory'); $lfs->resolvePath('../foobar'); } diff --git a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php index 4570a24477..dfd356248a 100644 --- a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php +++ b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php @@ -38,6 +38,6 @@ public function testWhetherStreamWriterWritesMessages() $writer = new FileWriter(new ConfigObject(array('file' => $this->target))); $writer->log(Logger::ERROR, 'This is a test error'); $log = file_get_contents($this->target); - $this->assertContains('This is a test error', $log, 'StreamWriter does not write log messages'); + $this->assertStringContainsString('This is a test error', $log, 'StreamWriter does not write log messages'); } } diff --git a/test/php/library/Icinga/Test/BaseTestCaseTest.php b/test/php/library/Icinga/Test/BaseTestCaseTest.php index 2625d983dd..5c06ad9662 100644 --- a/test/php/library/Icinga/Test/BaseTestCaseTest.php +++ b/test/php/library/Icinga/Test/BaseTestCaseTest.php @@ -148,19 +148,17 @@ public function testWhetherSetupDbProviderCleansUpOciAdapter($resource) $this->assertCount(0, $tables); } - /** - * @expectedException RuntimeException - */ public function testWhetherLoadSqlThrowsErrorWhenFileMissing() { + $this->expectException(\RuntimeException::class); + $this->loadSql(Mockery::mock('Icinga\Data\Db\DbConnection'), 'not_existing'); } - /** - * @expectedException RuntimeException - */ public function testWhetherLoadSqlThrowsErrorWhenFileEmpty() { + $this->expectException(\RuntimeException::class); + $this->emptySqlDumpFile = tempnam(sys_get_temp_dir(), 'icinga2-web-db-test-empty'); $this->loadSql(Mockery::mock('Icinga\Data\Db\DbConnection'), $this->emptySqlDumpFile); } diff --git a/test/php/library/Icinga/User/Store/DbStoreTest.php b/test/php/library/Icinga/User/Store/DbStoreTest.php index 54855cf60a..1f56f93cbe 100644 --- a/test/php/library/Icinga/User/Store/DbStoreTest.php +++ b/test/php/library/Icinga/User/Store/DbStoreTest.php @@ -83,11 +83,10 @@ public function testWhetherPreferenceInsertionWorks() $this->assertEmpty($dbMock->deletions, 'DbStore::save deletes *new* preferences'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testWhetherPreferenceInsertionThrowsNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $store = $this->getStore(new FaultyDatabaseMock()); $store->save( Mockery::mock( @@ -114,11 +113,10 @@ public function testWhetherPreferenceUpdatesWork() $this->assertEmpty($dbMock->deletions, 'DbStore::save inserts *existing* preferneces'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testWhetherPreferenceUpdatesThrowNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $store = $this->getStore(new FaultyDatabaseMock()); $store->setPreferences(array('testsection' => array('key' => 'value'))); $store->save( @@ -146,11 +144,10 @@ public function testWhetherPreferenceDeletionWorks() $this->assertEmpty($dbMock->updates, 'DbStore::save updates *removed* preferences'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testWhetherPreferenceDeletionThrowsNotWritableError() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $store = $this->getStore(new FaultyDatabaseMock()); $store->setPreferences(array('testsection' => array('key' => 'value'))); $store->save( diff --git a/test/php/library/Icinga/UserTest.php b/test/php/library/Icinga/UserTest.php index 7798aee501..a5f7ebdb1b 100644 --- a/test/php/library/Icinga/UserTest.php +++ b/test/php/library/Icinga/UserTest.php @@ -52,11 +52,10 @@ public function testWhetherValidEmailsCanBeSet() ); } - /** - * @expectedException \InvalidArgumentException - */ public function testWhetherInvalidEmailsCannotBeSet() { + $this->expectException(\InvalidArgumentException::class); + $user = new User('unittest'); $user->setEmail('mySampleEmail at someDomain dot org'); } diff --git a/test/php/library/Icinga/Util/FileTest.php b/test/php/library/Icinga/Util/FileTest.php index 68074a5d34..d05be2bec6 100644 --- a/test/php/library/Icinga/Util/FileTest.php +++ b/test/php/library/Icinga/Util/FileTest.php @@ -8,20 +8,18 @@ class FileTest extends BaseTestCase { - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testWhetherWritingToNonWritableFilesThrowsAnException() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $file = new File('/dev/null'); $file->fwrite('test'); } - /** - * @expectedException \Icinga\Exception\NotWritableError - */ public function testWhetherTruncatingNonWritableFilesThrowsAnException() { + $this->expectException(\Icinga\Exception\NotWritableError::class); + $file = new File('/dev/null'); $file->ftruncate(0); } diff --git a/test/php/library/Icinga/Util/TranslatorTest.php b/test/php/library/Icinga/Util/TranslatorTest.php index 5696959a8d..1ebb7b4141 100644 --- a/test/php/library/Icinga/Util/TranslatorTest.php +++ b/test/php/library/Icinga/Util/TranslatorTest.php @@ -48,11 +48,10 @@ public function testWhetherSetupLocaleSetsUpTheGivenLocale() ); } - /** - * @expectedException Icinga\Exception\IcingaException - */ public function testWhetherSetupLocaleThrowsAnExceptionWhenGivenAnInvalidLocale() { + $this->expectException(\Icinga\Exception\IcingaException::class); + Translator::setupLocale('foobar'); } diff --git a/test/php/library/Icinga/Web/FormTest.php b/test/php/library/Icinga/Web/FormTest.php index b0e85e7495..b43efe452d 100644 --- a/test/php/library/Icinga/Web/FormTest.php +++ b/test/php/library/Icinga/Web/FormTest.php @@ -251,11 +251,10 @@ public function testWhetherGetNameReturnsTheEscapedClassNameByDefault() ); } - /** - * @expectedException \Icinga\Exception\ProgrammingError - */ public function testWhetherTheOnSuccessOptionMustBeCallable() { + $this->expectException(\Icinga\Exception\ProgrammingError::class); + new Form(array('onSuccess' => '_invalid_')); } diff --git a/test/php/library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorderTest.php b/test/php/library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorderTest.php index 93fc2b171e..96d2ec65ce 100644 --- a/test/php/library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorderTest.php +++ b/test/php/library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorderTest.php @@ -17,7 +17,7 @@ public function testGetPages2() $paginator = new Zend_Paginator($this->getPaginatorAdapter()); $pages = $scrollingStyle->getPages($paginator); - $this->assertInternalType('array', $pages); + $this->assertIsArray($pages); $this->assertCount(10, $pages); $this->assertEquals('...', $pages[8]); } @@ -29,7 +29,7 @@ public function testGetPages3() $paginator->setCurrentPageNumber(9); $pages = $scrollingStyle->getPages($paginator); - $this->assertInternalType('array', $pages); + $this->assertIsArray($pages); $this->assertCount(10, $pages); $this->assertEquals('...', $pages[3]); $this->assertEquals('...', $pages[12]); diff --git a/test/php/library/Icinga/Web/Session/SessionNamespaceTest.php b/test/php/library/Icinga/Web/Session/SessionNamespaceTest.php index 99f08317de..7f90b2cd60 100644 --- a/test/php/library/Icinga/Web/Session/SessionNamespaceTest.php +++ b/test/php/library/Icinga/Web/Session/SessionNamespaceTest.php @@ -62,11 +62,10 @@ public function testPropertyAccess() $this->assertNull($ns->get('key2')); } - /** - * @expectedException Icinga\Exception\IcingaException - */ public function testFailingPropertyAccess() { + $this->expectException(\Icinga\Exception\IcingaException::class); + $ns = new SessionNamespace(); $ns->missing; } diff --git a/test/php/library/Icinga/Web/UrlTest.php b/test/php/library/Icinga/Web/UrlTest.php index 31c790c998..cbe8b6bf87 100644 --- a/test/php/library/Icinga/Web/UrlTest.php +++ b/test/php/library/Icinga/Web/UrlTest.php @@ -130,11 +130,10 @@ public function testWhetherFromRequestAcceptsAdditionalParameters() ); } - /** - * @expectedException Icinga\Exception\ProgrammingError - */ public function testWhetherFromPathProperlyHandlesInvalidUrls() { + $this->expectException(\Icinga\Exception\ProgrammingError::class); + Url::fromPath(null); } diff --git a/test/php/library/Icinga/Web/Widget/DashboardTest.php b/test/php/library/Icinga/Web/Widget/DashboardTest.php index cb48952fe7..3749bc8ef9 100644 --- a/test/php/library/Icinga/Web/Widget/DashboardTest.php +++ b/test/php/library/Icinga/Web/Widget/DashboardTest.php @@ -109,11 +109,12 @@ public function testWhetherGetPaneReturnsAPaneByName() } /** - * @expectedException \Icinga\Exception\ProgrammingError * @depends testWhetherCreatePaneCreatesAPane */ public function testWhetherGetPaneThrowsAnExceptionOnNotExistentPaneName() { + $this->expectException(\Icinga\Exception\ProgrammingError::class); + $dashboard = new Dashboard(); $dashboard->createPane('test1'); @@ -267,11 +268,10 @@ public function testWhetherSetDashletUrlUpdatesTheDashletUrl() ); } - /** - * @expectedException \Icinga\Exception\ConfigurationError - */ public function testWhetherDetermineActivePaneThrowsAnExceptionIfCouldNotDetermine() { + $this->expectException(\Icinga\Exception\ConfigurationError::class); + $dashboard = new Dashboard(); $dashboard->determineActivePane(); } @@ -279,11 +279,12 @@ public function testWhetherDetermineActivePaneThrowsAnExceptionIfCouldNotDetermi /** * @runInSeparateProcess * @preserveGlobalState disabled - * @expectedException \Icinga\Exception\ProgrammingError * @depends testWhetherCreatePaneCreatesAPane */ public function testWhetherDetermineActivePaneThrowsAnExceptionIfCouldNotDetermineInvalidPane() { + $this->expectException(\Icinga\Exception\ProgrammingError::class); + $dashboard = new DashboardWithPredefinableActiveName(); $dashboard->createPane('test1'); diff --git a/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php b/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php index 6fe7e2118f..916ab79143 100644 --- a/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php +++ b/test/php/library/Icinga/Web/Widget/SearchDashboardTest.php @@ -32,11 +32,10 @@ public function setUp(): void $bootstrapMock->shouldReceive('getModuleManager')->andReturn($moduleManagerMock); } - /** - * @expectedException Zend_Controller_Action_Exception - */ public function testWhetherRenderThrowsAnExceptionWhenHasNoDashlets() { + $this->expectException(\Zend_Controller_Action_Exception::class); + $user = new User('test'); $user->setPermissions(array('*' => '*')); $dashboard = new SearchDashboard(); From e671324ddbdd57518600690411386fab2c2d2064 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 9 Apr 2021 11:07:46 +0200 Subject: [PATCH 09/10] tests: Don't use deprecated assertion `assertRegExp()` --- library/Icinga/Test/BaseTestCase.php | 17 +++++++++++++++++ .../views/helpers/PluginOutputTest.php | 2 +- .../library/Icinga/File/Ini/IniWriterTest.php | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/library/Icinga/Test/BaseTestCase.php b/library/Icinga/Test/BaseTestCase.php index a293f7b6fc..aea79210fb 100644 --- a/library/Icinga/Test/BaseTestCase.php +++ b/library/Icinga/Test/BaseTestCase.php @@ -333,6 +333,23 @@ public function setupDbProvider($resource) $adapter->exec('DROP TABLE ' . $table . ';'); } } + + /** + * Add assertMatchesRegularExpression() method for phpunit >= 8.0 < 9.0 for compatibility with PHP 7.2. + * + * @TODO Remove once PHP 7.2 support is not needed for testing anymore. + */ + public static function assertMatchesRegularExpression( + string $pattern, + string $string, + string $message = '' + ): void { + if (method_exists(parent::class, 'assertMatchesRegularExpression')) { + parent::assertMatchesRegularExpression($pattern, $string, $message); + } else { + static::assertRegExp($pattern, $string, $message); + } + } } BaseTestCase::setupTimezone(); diff --git a/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php b/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php index 76e67c6ff7..94efee939a 100644 --- a/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php +++ b/modules/monitoring/test/php/application/views/helpers/PluginOutputTest.php @@ -45,7 +45,7 @@ protected function checkOutput($output, $html, $regexp = false, $isHtml = false) $html, preg_quote(self::SUFFIX, '~') ); - $this->assertRegExp($expect, $actual, 'Output must match example regexp'); + $this->assertMatchesRegularExpression($expect, $actual, 'Output must match example regexp'); } else { $expect = $prefix . $html . self::SUFFIX; $this->assertEquals($expect, $actual, 'Output must match example'); diff --git a/test/php/library/Icinga/File/Ini/IniWriterTest.php b/test/php/library/Icinga/File/Ini/IniWriterTest.php index d70aa2e8f4..41e1f13e67 100644 --- a/test/php/library/Icinga/File/Ini/IniWriterTest.php +++ b/test/php/library/Icinga/File/Ini/IniWriterTest.php @@ -275,7 +275,7 @@ public function testWhetherLinebreaksAreProcessed() ); $rendered = $writer->render(); - $this->assertRegExp( + $this->assertMatchesRegularExpression( '~linebreak\\\\nin line~', $rendered, 'newlines in values are not escaped' From b3eeb5a892e30020e2d4a9b199bfdc8259b9f175 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 9 Apr 2021 11:17:37 +0200 Subject: [PATCH 10/10] php: Don't lint tests on PHP 5.6 --- .github/workflows/php.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index a842886d31..4ca606ac52 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -22,6 +22,7 @@ jobs: include: - php: '5.6' allow_failure: true + phplint_options: "--exclude='{(?>.*/)?test/php/.*}' --exclude=library/Icinga/Test/BaseTestCase.php" - php: '7.0' allow_failure: true @@ -40,7 +41,7 @@ jobs: - name: PHP Lint if: success() || matrix.allow_failure - run: ./vendor/bin/phplint -n --exclude={^vendor/.*} --exclude=library/Icinga/Util/String.php -- . + run: ./vendor/bin/phplint -n --exclude={^vendor/.*} --exclude=library/Icinga/Util/String.php ${{ matrix.phplint_options }} -- . - name: PHP CodeSniffer if: success() || matrix.allow_failure