X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FGitInfoTest.php;h=1037b3705e31620d5e96ac550623c5ed621cc196;hb=e8b7742f0486984af2c9928f663e896392a1af97;hp=89416f2ff28328e48602a8efe1c7c5d79e798c0c;hpb=2fdcd7bfdd95a3b1515b9a94289d67eb60add484;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/GitInfoTest.php b/tests/phpunit/includes/GitInfoTest.php index 89416f2ff2..1037b3705e 100644 --- a/tests/phpunit/includes/GitInfoTest.php +++ b/tests/phpunit/includes/GitInfoTest.php @@ -4,6 +4,30 @@ */ class GitInfoTest extends MediaWikiTestCase { + public static function setUpBeforeClass() { + mkdir( __DIR__ . '/../data/gitrepo' ); + mkdir( __DIR__ . '/../data/gitrepo/1' ); + mkdir( __DIR__ . '/../data/gitrepo/2' ); + mkdir( __DIR__ . '/../data/gitrepo/3' ); + mkdir( __DIR__ . '/../data/gitrepo/1/.git' ); + mkdir( __DIR__ . '/../data/gitrepo/1/.git/refs' ); + mkdir( __DIR__ . '/../data/gitrepo/1/.git/refs/heads' ); + file_put_contents( __DIR__ . '/../data/gitrepo/1/.git/HEAD', + "ref: refs/heads/master\n" ); + file_put_contents( __DIR__ . '/../data/gitrepo/1/.git/refs/heads/master', + "0123456789012345678901234567890123abcdef\n" ); + file_put_contents( __DIR__ . '/../data/gitrepo/1/.git/packed-refs', + "abcdef6789012345678901234567890123456789 refs/heads/master\n" ); + file_put_contents( __DIR__ . '/../data/gitrepo/2/.git', + "gitdir: ../1/.git\n" ); + file_put_contents( __DIR__ . '/../data/gitrepo/3/.git', + 'gitdir: ' . __DIR__ . "/../data/gitrepo/1/.git\n" ); + } + + public static function tearDownAfterClass() { + wfRecursiveRemoveDir( __DIR__ . '/../data/gitrepo' ); + } + protected function setUp() { parent::setUp(); $this->setMwGlobals( 'wgGitInfoCacheDirectory', __DIR__ . '/../data/gitinfo' ); @@ -23,7 +47,7 @@ class GitInfoTest extends MediaWikiTestCase { public function testValidJsonData() { global $IP; - $this->assertValidGitInfo( new GitInfo( "$IP/testValidJsonData") ); + $this->assertValidGitInfo( new GitInfo( "$IP/testValidJsonData" ) ); $this->assertValidGitInfo( new GitInfo( __DIR__ . "/../data/gitinfo/extension" ) ); } @@ -43,4 +67,36 @@ class GitInfoTest extends MediaWikiTestCase { $this->assertTrue( $fixture->cacheIsComplete() ); } + public function testReadingHead() { + $dir = __DIR__ . '/../data/gitrepo/1'; + $fixture = new GitInfo( $dir ); + + $this->assertEquals( 'refs/heads/master', $fixture->getHead() ); + $this->assertEquals( '0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() ); + } + + public function testIndirection() { + $dir = __DIR__ . '/../data/gitrepo/2'; + $fixture = new GitInfo( $dir ); + + $this->assertEquals( 'refs/heads/master', $fixture->getHead() ); + $this->assertEquals( '0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() ); + } + + public function testIndirection2() { + $dir = __DIR__ . '/../data/gitrepo/3'; + $fixture = new GitInfo( $dir ); + + $this->assertEquals( 'refs/heads/master', $fixture->getHead() ); + $this->assertEquals( '0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() ); + } + + public function testReadingPackedRefs() { + $dir = __DIR__ . '/../data/gitrepo/1'; + unlink( __DIR__ . '/../data/gitrepo/1/.git/refs/heads/master' ); + $fixture = new GitInfo( $dir ); + + $this->assertEquals( 'refs/heads/master', $fixture->getHead() ); + $this->assertEquals( 'abcdef6789012345678901234567890123456789', $fixture->getHeadSHA1() ); + } }