diff options
author | Bryan Davis <bd808@wikimedia.org> | 2014-04-28 13:50:03 -0600 |
---|---|---|
committer | Ori.livneh <ori@wikimedia.org> | 2014-05-05 23:50:12 +0000 |
commit | 71fc32c303a0f0ab41368739684975ca4f600c36 (patch) | |
tree | 8e7e1fb8b216e454a1403e7c8cb8a04a3610fa73 /tests/phpunit/includes/GitInfoTest.php | |
parent | ed945112a8640fcaefa0128456602893294aee31 (diff) | |
download | mediawikicore-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.php | 42 |
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() ); + } + +} |