/** * @dataProvider provideTestFiles */ public function testParsing($file) { $filename = basename($file); list($pagename, ) = explode('.', $filename, 2); $title = Title::newFromText($pagename); $translatablePage = TranslatablePage::newFromText($title, file_get_contents($file)); $pattern = $file; if ($filename === 'FailNotAtomic.ptfile') { $this->markTestSkipped('Extended validation not yet implemented'); } $failureExpected = strpos($pagename, 'Fail') === 0; if ($failureExpected) { $this->setExpectedException('TPException'); } $parse = $translatablePage->getParse(); $this->assertInstanceOf('TPParse', $parse); if (file_exists("{$pattern}.ptsource")) { $source = $parse->getSourcePageText(); $this->assertEquals($source, file_get_contents("{$pattern}.ptsource")); } if (file_exists("{$pattern}.pttarget")) { $target = $parse->getTranslationPageText(MessageCollection::newEmpty('foo')); $this->assertEquals($target, file_get_contents("{$pattern}.pttarget")); } // Custom tests written in php if (file_exists("{$pattern}.pttest")) { require "{$pattern}.pttest"; } }
public function execute() { $dir = dirname( __FILE__ ); $testDirectory = "$dir/../tests/pagetranslation"; $testFiles = glob( "$testDirectory/*.ptfile" ); foreach ( $testFiles as $file ) { $filename = basename( $file ); list( $pagename, ) = explode( '.', $filename, 2 ); $title = Title::newFromText( $pagename ); $translatablePage = TranslatablePage::newFromText( $title, file_get_contents( $file ) ); $pattern = realpath( "$testDirectory" ) . "/$pagename"; $failureExpected = strpos( $pagename, 'Fail' ) === 0; try { $parse = $translatablePage->getParse(); if ( $failureExpected ) { $target = $parse->getTranslationPageText( MessageCollection::newEmpty( "foo" ) ); $this->output( "Testfile $filename should have failed... see $pattern.pttarget.fail\n" ); file_put_contents( "$pattern.pttarget.fail", $target ); } } catch ( TPException $e ) { if ( !$failureExpected ) { $this->output( "Testfile $filename failed to parse... see $pattern.ptfile.fail\n" ); file_put_contents( "$pattern.ptfile.fail", $e->getMessage() ); } continue; } if ( file_exists( "$pattern.ptsource" ) ) { $source = $parse->getSourcePageText(); if ( $source !== file_get_contents( "$pattern.ptsource" ) ) { $this->output( "Testfile $filename failed with source page output... writing $pattern.ptsource.fail\n" ); file_put_contents( "$pattern.ptsource.fail", $source ); } } if ( file_exists( "$pattern.pttarget" ) ) { $target = $parse->getTranslationPageText( MessageCollection::newEmpty( "foo" ) ); if ( $target !== file_get_contents( "$pattern.pttarget" ) ) { $this->output( "Testfile $filename failed with target page output... writing $pattern.pttarget.fail\n" ); file_put_contents( "$pattern.pttarget.fail", $target ); } } // Custom tests written in php if ( file_exists( "$pattern.pttest" ) ) { require( "$pattern.pttest" ); } } }