jenkins-bot has submitted this change and it was merged.
Change subject: Rework RDF builder tests to get rid of object property hack
......................................................................
Rework RDF builder tests to get rid of object property hack
This is the most minimal patch I can think of to get rid of the hack
(a property is glued onto each $builder object on runtime). I wanted
this patch to focus exclusively on this single detail. There is more to
do and I will continue working on this in later patches.
Change-Id: I01759e8efd0ddcc7431ba7c25b063e2b6d3063ce
---
M repo/tests/phpunit/includes/rdf/FullStatementsRdfBuilderTest.php
M repo/tests/phpunit/includes/rdf/SiteLinksRdfBuilderTest.php
M repo/tests/phpunit/includes/rdf/TermsRdfBuilderTest.php
M repo/tests/phpunit/includes/rdf/TruthyStatementsRdfBuilderTest.php
4 files changed, 71 insertions(+), 69 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/tests/phpunit/includes/rdf/FullStatementsRdfBuilderTest.php
b/repo/tests/phpunit/includes/rdf/FullStatementsRdfBuilderTest.php
index f98681d..4ae04e0 100644
--- a/repo/tests/phpunit/includes/rdf/FullStatementsRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/rdf/FullStatementsRdfBuilderTest.php
@@ -10,6 +10,7 @@
use Wikibase\Rdf\RdfProducer;
use Wikibase\Rdf\SnakRdfBuilder;
use Wikibase\Repo\WikibaseRepo;
+use Wikimedia\Purtle\RdfWriter;
/**
* @covers Wikibase\Rdf\FullStatementRdfBuilder
@@ -46,16 +47,20 @@
}
/**
+ * @param RdfWriter $writer
* @param int $flavor Bitmap for the output flavor, use
RdfProducer::PRODUCE_XXX constants.
* @param EntityId[] &$mentioned Receives any entity IDs being
mentioned.
* @param DedupeBag $dedupe A bag of reference hashes that should be
considered "already seen".
*
* @return FullStatementRdfBuilder
*/
- private function newBuilder( $flavor, array &$mentioned = array(),
DedupeBag $dedupe = null ) {
+ private function newBuilder(
+ RdfWriter $writer,
+ $flavor,
+ array &$mentioned = array(),
+ DedupeBag $dedupe = null
+ ) {
$vocabulary = $this->getTestData()->getVocabulary();
-
- $writer = $this->getTestData()->getNTriplesWriter();
$mentionTracker = $this->getMock(
'Wikibase\Rdf\EntityMentionListener' );
$mentionTracker->expects( $this->any() )
@@ -97,28 +102,24 @@
$statementBuilder->setProduceQualifiers( $flavor &
RdfProducer::PRODUCE_QUALIFIERS );
$statementBuilder->setProduceReferences( $flavor &
RdfProducer::PRODUCE_REFERENCES );
- // HACK: stick the writer into a public field, for use by
getDataFromBuilder()
- $statementBuilder->test_writer = $writer;
-
return $statementBuilder;
}
/**
* Extract text test data from RDF builder
- * @param FullStatementRdfBuilder $builder
+ * @param RdfWriter $writer
* @return string[] ntriples lines, sorted
*/
- private function getDataFromBuilder( FullStatementRdfBuilder $builder )
{
- // HACK: $builder->test_writer is glued on by newBuilder().
- $ntriples = $builder->test_writer->drain();
+ private function getDataFromWriter( RdfWriter $writer ) {
+ $ntriples = $writer->drain();
$lines = explode( "\n", trim( $ntriples ) );
sort( $lines );
return $lines;
}
- private function assertOrCreateNTriples( $dataSetName,
FullStatementRdfBuilder $builder ) {
- $actualData = $this->getDataFromBuilder( $builder );
+ private function assertOrCreateNTriples( $dataSetName, RdfWriter
$writer ) {
+ $actualData = $this->getDataFromWriter( $writer );
$correctData = $this->getTestData()->getNTriples( $dataSetName
);
if ( $correctData === null ) {
@@ -163,11 +164,12 @@
public function testAddEntity( $entityName, $flavor, $dataSetName,
array $expectedMentions ) {
$entity = $this->getTestData()->getEntity( $entityName );
+ $writer = $this->getTestData()->getNTriplesWriter();
$mentioned = array();
- $builder = $this->newBuilder( $flavor, $mentioned );
+ $builder = $this->newBuilder( $writer, $flavor, $mentioned );
$builder->addEntity( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
$this->assertEquals( $expectedMentions, array_keys( $mentioned
), 'Entities mentioned' );
}
@@ -189,11 +191,12 @@
$dedupe->alreadySeen( $hash, 'R' );
}
+ $writer = $this->getTestData()->getNTriplesWriter();
$mentioned = array();
- $builder = $this->newBuilder( RdfProducer::PRODUCE_ALL,
$mentioned, $dedupe );
+ $builder = $this->newBuilder( $writer,
RdfProducer::PRODUCE_ALL, $mentioned, $dedupe );
$builder->addEntity( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
public function provideAddStatements() {
@@ -208,10 +211,11 @@
public function testAddStatements( $entityName, $dataSetName ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( RdfProducer::PRODUCE_ALL );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, RdfProducer::PRODUCE_ALL
);
$builder->addStatements( $entity->getId(),
$entity->getStatements() );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
}
diff --git a/repo/tests/phpunit/includes/rdf/SiteLinksRdfBuilderTest.php
b/repo/tests/phpunit/includes/rdf/SiteLinksRdfBuilderTest.php
index 3fe059a..d82395a 100644
--- a/repo/tests/phpunit/includes/rdf/SiteLinksRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/rdf/SiteLinksRdfBuilderTest.php
@@ -3,6 +3,7 @@
namespace Wikibase\Test\Rdf;
use Wikibase\Rdf\SiteLinksRdfBuilder;
+use Wikimedia\Purtle\RdfWriter;
/**
* @covers Wikibase\Rdf\SiteLinksRdfBuilder
@@ -39,14 +40,13 @@
}
/**
+ * @param RdfWriter $writer
* @param string[]|null $sites
*
* @return SiteLinksRdfBuilder
*/
- private function newBuilder( array $sites = null ) {
+ private function newBuilder( RdfWriter $writer, array $sites = null ) {
$vocabulary = $this->getTestData()->getVocabulary();
-
- $writer = $this->getTestData()->getNTriplesWriter();
$builder = new SiteLinksRdfBuilder(
$vocabulary,
@@ -55,28 +55,24 @@
$sites
);
- // HACK: stick the writer into a public field, for use by
getDataFromBuilder()
- $builder->test_writer = $writer;
-
return $builder;
}
/**
* Extract text test data from RDF builder
- * @param SiteLinksRdfBuilder $builder
+ * @param RdfWriter $writer
* @return string[] ntriples lines, sorted
*/
- private function getDataFromBuilder( SiteLinksRdfBuilder $builder ) {
- // HACK: $builder->test_writer is glued on by newBuilder().
- $ntriples = $builder->test_writer->drain();
+ private function getDataFromWriter( RdfWriter $writer ) {
+ $ntriples = $writer->drain();
$lines = explode( "\n", trim( $ntriples ) );
sort( $lines );
return $lines;
}
- private function assertOrCreateNTriples( $dataSetName,
SiteLinksRdfBuilder $builder ) {
- $actualData = $this->getDataFromBuilder( $builder );
+ private function assertOrCreateNTriples( $dataSetName, RdfWriter
$writer ) {
+ $actualData = $this->getDataFromWriter( $writer );
$correctData = $this->getTestData()->getNTriples( $dataSetName
);
if ( $correctData === null ) {
@@ -100,10 +96,11 @@
public function testAddEntity( $entityName, $dataSetName, array $sites
= null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $sites );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $sites );
$builder->addEntity( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
/**
@@ -112,10 +109,11 @@
public function testAddSiteLinks( $entityName, $dataSetName, array
$sites = null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $sites );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $sites );
$builder->addSiteLinks( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
}
diff --git a/repo/tests/phpunit/includes/rdf/TermsRdfBuilderTest.php
b/repo/tests/phpunit/includes/rdf/TermsRdfBuilderTest.php
index da765cc..65449f4 100644
--- a/repo/tests/phpunit/includes/rdf/TermsRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/rdf/TermsRdfBuilderTest.php
@@ -3,6 +3,7 @@
namespace Wikibase\Test\Rdf;
use Wikibase\Rdf\TermsRdfBuilder;
+use Wikimedia\Purtle\RdfWriter;
/**
* @covers Wikibase\Rdf\TermsRdfBuilder
@@ -39,14 +40,13 @@
}
/**
+ * @param RdfWriter $writer
* @param string[]|null $languages
*
* @return TermsRdfBuilder
*/
- private function newBuilder( array $languages = null ) {
+ private function newBuilder( RdfWriter $writer, array $languages = null
) {
$vocabulary = $this->getTestData()->getVocabulary();
-
- $writer = $this->getTestData()->getNTriplesWriter();
$builder = new TermsRdfBuilder(
$vocabulary,
@@ -54,28 +54,24 @@
$languages
);
- // HACK: stick the writer into a public field, for use by
getDataFromBuilder()
- $builder->test_writer = $writer;
-
return $builder;
}
/**
* Extract text test data from RDF builder
- * @param TermsRdfBuilder $builder
+ * @param RdfWriter $writer
* @return string[] ntriples lines, sorted
*/
- private function getDataFromBuilder( TermsRdfBuilder $builder ) {
- // HACK: $builder->test_writer is glued on by newBuilder().
- $ntriples = $builder->test_writer->drain();
+ private function getDataFromWriter( RdfWriter $writer ) {
+ $ntriples = $writer->drain();
$lines = explode( "\n", trim( $ntriples ) );
sort( $lines );
return $lines;
}
- private function assertOrCreateNTriples( $dataSetName, TermsRdfBuilder
$builder ) {
- $actualData = $this->getDataFromBuilder( $builder );
+ private function assertOrCreateNTriples( $dataSetName, RdfWriter
$writer ) {
+ $actualData = $this->getDataFromWriter( $writer );
$correctData = $this->getTestData()->getNTriples( $dataSetName
);
if ( $correctData === null ) {
@@ -99,10 +95,11 @@
public function testAddEntity( $entityName, $dataSetName, array
$languages = null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $languages );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $languages );
$builder->addEntity( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
public function provideAddLabels() {
@@ -118,10 +115,11 @@
public function testAddLabels( $entityName, $dataSetName, array
$languages = null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $languages );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $languages );
$builder->addLabels( $entity->getId(),
$entity->getFingerprint()->getLabels() );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
public function provideAddDescriptions() {
@@ -137,10 +135,11 @@
public function testAddDescriptions( $entityName, $dataSetName, array
$languages = null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $languages );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $languages );
$builder->addDescriptions( $entity->getId(),
$entity->getFingerprint()->getDescriptions() );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
public function provideAddAliases() {
@@ -156,10 +155,11 @@
public function testAddAliases( $entityName, $dataSetName, array
$languages = null ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder( $languages );
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer, $languages );
$builder->addAliases( $entity->getId(),
$entity->getFingerprint()->getAliasGroups() );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
}
diff --git a/repo/tests/phpunit/includes/rdf/TruthyStatementsRdfBuilderTest.php
b/repo/tests/phpunit/includes/rdf/TruthyStatementsRdfBuilderTest.php
index 26d3ef5..7636a59 100644
--- a/repo/tests/phpunit/includes/rdf/TruthyStatementsRdfBuilderTest.php
+++ b/repo/tests/phpunit/includes/rdf/TruthyStatementsRdfBuilderTest.php
@@ -7,6 +7,7 @@
use Wikibase\Rdf\SnakRdfBuilder;
use Wikibase\Rdf\TruthyStatementRdfBuilder;
use Wikibase\Repo\WikibaseRepo;
+use Wikimedia\Purtle\RdfWriter;
/**
* @covers Wikibase\Rdf\TruthyStatementRdfBuilder
@@ -43,11 +44,12 @@
}
/**
+ * @param RdfWriter $writer
+ *
* @return TruthyStatementRdfBuilder
*/
- private function newBuilder() {
+ private function newBuilder( RdfWriter $writer ) {
$vocabulary = $this->getTestData()->getVocabulary();
- $writer = $this->getTestData()->getNTriplesWriter();
// Note: using the actual factory here makes this an
integration test!
$valueBuilderFactory =
WikibaseRepo::getDefaultInstance()->getValueSnakRdfBuilderFactory();
@@ -67,20 +69,16 @@
$snakBuilder
);
- // HACK: stick the writer into a public field, for use by
getDataFromBuilder()
- $builder->test_writer = $writer;
-
return $builder;
}
/**
* Extract text test data from RDF builder
- * @param TruthyStatementRdfBuilder $builder
+ * @param RdfWriter $writer
* @return string[] ntriples lines, sorted
*/
- private function getDataFromBuilder( TruthyStatementRdfBuilder $builder
) {
- // HACK: $builder->test_writer is glued on by newBuilder().
- $ntriples = $builder->test_writer->drain();
+ private function getDataFromWriter( RdfWriter $writer ) {
+ $ntriples = $writer->drain();
$lines = explode( "\n", trim( $ntriples ) );
sort( $lines );
@@ -88,8 +86,8 @@
return $lines;
}
- private function assertOrCreateNTriples( $dataSetName,
TruthyStatementRdfBuilder $builder ) {
- $actualData = $this->getDataFromBuilder( $builder );
+ private function assertOrCreateNTriples( $dataSetName, RdfWriter
$writer ) {
+ $actualData = $this->getDataFromWriter( $writer );
$correctData = $this->getTestData()->getNTriples( $dataSetName
);
if ( $correctData === null ) {
@@ -112,10 +110,11 @@
public function testAddEntity( $entityName, $dataSetName ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder();
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer );
$builder->addEntity( $entity );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
/**
@@ -124,10 +123,11 @@
public function testAddStatements( $entityName, $dataSetName ) {
$entity = $this->getTestData()->getEntity( $entityName );
- $builder = $this->newBuilder();
+ $writer = $this->getTestData()->getNTriplesWriter();
+ $builder = $this->newBuilder( $writer );
$builder->addStatements( $entity->getId(),
$entity->getStatements() );
- $this->assertOrCreateNTriples( $dataSetName, $builder );
+ $this->assertOrCreateNTriples( $dataSetName, $writer );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/261620
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I01759e8efd0ddcc7431ba7c25b063e2b6d3063ce
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Bene <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits