X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2FtestHelpers.inc;h=d04e0fcb54fb6969cfae58fa6af22e64ab43e601;hb=09ff912ddd3c8b153cdd49082bfc8eabb3b522e5;hp=76544a50bcf15e4c838a0fc3f2faca301e3b6a22;hpb=0e910a1907ba281afd34831a966945f9a39bfe12;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/testHelpers.inc b/tests/testHelpers.inc index 76544a50bc..d04e0fcb54 100644 --- a/tests/testHelpers.inc +++ b/tests/testHelpers.inc @@ -44,9 +44,10 @@ interface ITestRecorder { /** * Called after each test * @param string $test + * @param integer $subtest * @param bool $result */ - public function record( $test, $result ); + public function record( $test, $subtest, $result ); /** * Called before finishing the test run @@ -74,7 +75,7 @@ class TestRecorder implements ITestRecorder { $this->success = 0; } - function record( $test, $result ) { + function record( $test, $subtest, $result ) { $this->total++; $this->success += ( $result ? 1 : 0 ); } @@ -147,9 +148,17 @@ class DbTestPreviewer extends TestRecorder { $this->results = []; } - function record( $test, $result ) { - parent::record( $test, $result ); - $this->results[$test] = $result; + function getName( $test, $subtest ) { + if ( $subtest ) { + return "$test subtest #$subtest"; + } else { + return $test; + } + } + + function record( $test, $subtest, $result ) { + parent::record( $test, $subtest, $result ); + $this->results[ $this->getName( $test, $subtest ) ] = $result; } function report() { @@ -299,10 +308,9 @@ class DbTestPreviewer extends TestRecorder { } /** - * Commit transaction and clean up for result recording + * Close the DB connection */ function end() { - $this->lb->commitMasterChanges(); $this->lb->closeAll(); parent::end(); } @@ -350,17 +358,25 @@ class DbTestRecorder extends DbTestPreviewer { * @param string $test * @param bool $result */ - function record( $test, $result ) { - parent::record( $test, $result ); + function record( $test, $subtest, $result ) { + parent::record( $test, $subtest, $result ); $this->db->insert( 'testitem', [ 'ti_run' => $this->curRun, - 'ti_name' => $test, + 'ti_name' => $this->getName( $test, $subtest ), 'ti_success' => $result ? 1 : 0, ], __METHOD__ ); } + + /** + * Commit transaction and clean up for result recording + */ + function end() { + $this->db->commit( __METHOD__ ); + parent::end(); + } } class TestFileIterator implements Iterator { @@ -479,6 +495,7 @@ class TestFileIterator implements Iterator { $this->test = [ 'test' => ParserTest::chomp( $this->sectionData['test'] ), + 'subtest' => $this->nextSubTest, 'input' => ParserTest::chomp( $this->sectionData[$input] ), 'result' => ParserTest::chomp( $this->sectionData[$result] ), 'options' => ParserTest::chomp( $this->sectionData['options'] ), @@ -665,6 +682,27 @@ class TestFileIterator implements Iterator { } } +/** + * An iterator for use as a phpunit data provider. Provides the test arguments + * in the order expected by NewParserTest::testParserTest(). + */ +class TestFileDataProvider extends TestFileIterator { + function current() { + $test = parent::current(); + if ( $test ) { + return [ + $test['test'], + $test['input'], + $test['result'], + $test['options'], + $test['config'], + ]; + } else { + return $test; + } + } +} + /** * A class to delay execution of a parser test hooks. */