Thiemo Mättig (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/261620

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(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/20/261620/1

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: newchange
Gerrit-Change-Id: I01759e8efd0ddcc7431ba7c25b063e2b6d3063ce
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to