wiki.techinc.nl/tests/phpunit/includes/GitInfoTest.php
Kunal Mehta a5ed38dc54 GitInfo: Allow cache to be in the extension directory itself
For ExtensionDistributor to provide git metadata, we need to be able to
store the cache file inside the extension directory itself. The GitInfo
class will now first check if the $wgGitInfoCacheDirectory is populated,
otherwise it will fallback to "$extensionDir/gitinfo.json".

Bug: T122769
Change-Id: Ib3457589ca6899925ae4610cfcdae22af8eaaaeb
2016-01-06 14:41:36 -08:00

47 lines
1.5 KiB
PHP

<?php
/**
* @covers GitInfo
*/
class GitInfoTest extends MediaWikiTestCase {
protected function setUp() {
parent::setUp();
$this->setMwGlobals( 'wgGitInfoCacheDirectory', __DIR__ . '/../data/gitinfo' );
}
protected function assertValidGitInfo( GitInfo $gitInfo ) {
$this->assertTrue( $gitInfo->cacheIsComplete() );
$this->assertEquals( 'refs/heads/master', $gitInfo->getHead() );
$this->assertEquals( '0123456789abcdef0123456789abcdef01234567',
$gitInfo->getHeadSHA1() );
$this->assertEquals( '1070884800', $gitInfo->getHeadCommitDate() );
$this->assertEquals( 'master', $gitInfo->getCurrentBranch() );
$this->assertContains( '0123456789abcdef0123456789abcdef01234567',
$gitInfo->getHeadViewUrl() );
}
public function testValidJsonData() {
global $IP;
$this->assertValidGitInfo( new GitInfo( "$IP/testValidJsonData") );
$this->assertValidGitInfo( new GitInfo( __DIR__ . "/../data/gitinfo/extension" ) );
}
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() );
}
}