aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/GitInfoTest.php
diff options
context:
space:
mode:
authorBryan Davis <bd808@wikimedia.org>2014-04-28 13:50:03 -0600
committerOri.livneh <ori@wikimedia.org>2014-05-05 23:50:12 +0000
commit71fc32c303a0f0ab41368739684975ca4f600c36 (patch)
tree8e7e1fb8b216e454a1403e7c8cb8a04a3610fa73 /tests/phpunit/includes/GitInfoTest.php
parented945112a8640fcaefa0128456602893294aee31 (diff)
downloadmediawikicore-71fc32c303a0f0ab41368739684975ca4f600c36.tar.gz
mediawikicore-71fc32c303a0f0ab41368739684975ca4f600c36.zip
Support precomputed data in GitInfo
Support reading git repository information from a JSON file in the cache directory. When present, this file serves to provide information needed by getHead, getHeadSHA1, getHeadCommitDate, getCurrentBranch and a new getRemoteUrl method. A GitInfo::precomputeValues method is also provided which can generate the cache file for a given GitInfo instance. This support can be combined with a deployment step to reduce the need to repeatedly gather information from the .git files/git binary. It also allows computing information that can be lost when directory structures differ between deployment staging hosts and hosts running MediaWiki. This change also adds memoization of computed values for a given GitInfo instance which may provide a small performance boost even for deployments which are not using precomputed cache files. Bug: 53972 Change-Id: I66e058acc5a71e5d82644f85d819f49d6ee9d1e6
Diffstat (limited to 'tests/phpunit/includes/GitInfoTest.php')
-rw-r--r--tests/phpunit/includes/GitInfoTest.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/phpunit/includes/GitInfoTest.php b/tests/phpunit/includes/GitInfoTest.php
new file mode 100644
index 000000000000..7c684d51e19a
--- /dev/null
+++ b/tests/phpunit/includes/GitInfoTest.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * @covers GitInfo
+ */
+class GitInfoTest extends MediaWikiTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+ $this->setMwGlobals( 'wgCacheDirectory', __DIR__ . '/../data' );
+ }
+
+ public function testValidJsonData() {
+ $dir = $GLOBALS['IP'] . '/testValidJsonData';
+ $fixture = new GitInfo( $dir );
+
+ $this->assertTrue( $fixture->cacheIsComplete() );
+ $this->assertEquals( 'refs/heads/master', $fixture->getHead() );
+ $this->assertEquals( '0123456789abcdef0123456789abcdef01234567',
+ $fixture->getHeadSHA1() );
+ $this->assertEquals( '1070884800', $fixture->getHeadCommitDate() );
+ $this->assertEquals( 'master', $fixture->getCurrentBranch() );
+ $this->assertContains( '0123456789abcdef0123456789abcdef01234567',
+ $fixture->getHeadViewUrl() );
+ }
+
+ public function testMissingJsonData() {
+ $dir = $GLOBALS['IP'] . '/testMissingJsonData';
+ $fixture = new GitInfo( $dir );
+
+ $this->assertFalse( $fixture->cacheIsComplete() );
+
+ $this->assertEquals( false, $fixture->getHead() );
+ $this->assertEquals( false, $fixture->getHeadSHA1() );
+ $this->assertEquals( false, $fixture->getHeadCommitDate() );
+ $this->assertEquals( false, $fixture->getCurrentBranch() );
+ $this->assertEquals( false, $fixture->getHeadViewUrl() );
+
+ // After calling all the outputs, the cache should be complete
+ $this->assertTrue( $fixture->cacheIsComplete() );
+ }
+
+}