From 1a2ef3555903dcaab909cd9a5b8a3e60a319da94 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Thu, 12 Apr 2018 19:52:05 -0700 Subject: [PATCH] Add HamcrestPHPUnitIntegration trait Hamcrest has its own assertThat() function, which is used in PHPUnit tests. However, in PHPUnit 6, tests that don't have any assertions are marked as risky. To work around that, add a HamcrestPHPUnitIntegration trait that provides a $this->assertThatHamcrest() - it wraps around Hamcrest's assertThat(), and increments PHPUnit's assertion counter, so using it ensures that the test is not risky. Change-Id: Ia4a4ec226f64ebe90d1091ffd27420a356ca76ff --- tests/common/TestsAutoLoader.php | 1 + tests/phpunit/HamcrestPHPUnitIntegration.php | 34 ++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/phpunit/HamcrestPHPUnitIntegration.php diff --git a/tests/common/TestsAutoLoader.php b/tests/common/TestsAutoLoader.php index 56ee2df663..10e853b4fa 100644 --- a/tests/common/TestsAutoLoader.php +++ b/tests/common/TestsAutoLoader.php @@ -64,6 +64,7 @@ $wgAutoloadClasses += [ 'LessFileCompilationTest' => "$testDir/phpunit/LessFileCompilationTest.php", 'MediaWikiCoversValidator' => "$testDir/phpunit/MediaWikiCoversValidator.php", 'PHPUnit4And6Compat' => "$testDir/phpunit/PHPUnit4And6Compat.php", + 'HamcrestPHPUnitIntegration' => "$testDir/phpunit/HamcrestPHPUnitIntegration.php", # tests/phpunit/includes 'RevisionDbTestBase' => "$testDir/phpunit/includes/RevisionDbTestBase.php", diff --git a/tests/phpunit/HamcrestPHPUnitIntegration.php b/tests/phpunit/HamcrestPHPUnitIntegration.php new file mode 100644 index 0000000000..def08ff370 --- /dev/null +++ b/tests/phpunit/HamcrestPHPUnitIntegration.php @@ -0,0 +1,34 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +/** + * @since 1.31 + */ +trait HamcrestPHPUnitIntegration { + + /** + * Wrapper around Hamcrest's assertThat, which marks the assertion + * for PHPUnit so the test is not marked as risky + */ + public function assertThatHamcrest( /* ... */ ) { + call_user_func_array( 'assertThat', func_get_args() ); + $this->addToAssertionCount( 1 ); + } +} -- 2.20.1