11 if ( !mkdir( self::$tempDir ) ) {
12 self::$tempDir =
null;
13 throw new Exception(
'Unable to create temporary directory' );
15 mkdir( self::$tempDir .
'/gitrepo' );
16 mkdir( self::$tempDir .
'/gitrepo/1' );
17 mkdir( self::$tempDir .
'/gitrepo/2' );
18 mkdir( self::$tempDir .
'/gitrepo/3' );
19 mkdir( self::$tempDir .
'/gitrepo/1/.git' );
20 mkdir( self::$tempDir .
'/gitrepo/1/.git/refs' );
21 mkdir( self::$tempDir .
'/gitrepo/1/.git/refs/heads' );
22 file_put_contents( self::$tempDir .
'/gitrepo/1/.git/HEAD',
23 "ref: refs/heads/master\n" );
24 file_put_contents( self::$tempDir .
'/gitrepo/1/.git/refs/heads/master',
25 "0123456789012345678901234567890123abcdef\n" );
26 file_put_contents( self::$tempDir .
'/gitrepo/1/.git/packed-refs',
27 "abcdef6789012345678901234567890123456789 refs/heads/master\n" );
28 file_put_contents( self::$tempDir .
'/gitrepo/2/.git',
29 "gitdir: ../1/.git\n" );
30 file_put_contents( self::$tempDir .
'/gitrepo/3/.git',
31 'gitdir: ' . self::$tempDir .
"/gitrepo/1/.git\n" );
35 if ( self::$tempDir ) {
42 $this->
setMwGlobals(
'wgGitInfoCacheDirectory', __DIR__ .
'/../data/gitinfo' );
47 $this->assertEquals(
'refs/heads/master', $gitInfo->
getHead() );
48 $this->assertEquals(
'0123456789abcdef0123456789abcdef01234567',
52 $this->assertContains(
'0123456789abcdef0123456789abcdef01234567',
64 $dir =
$GLOBALS[
'IP'] .
'/testMissingJsonData';
67 $this->assertFalse( $fixture->cacheIsComplete() );
69 $this->assertEquals(
false, $fixture->getHead() );
70 $this->assertEquals(
false, $fixture->getHeadSHA1() );
71 $this->assertEquals(
false, $fixture->getHeadCommitDate() );
72 $this->assertEquals(
false, $fixture->getCurrentBranch() );
73 $this->assertEquals(
false, $fixture->getHeadViewUrl() );
76 $this->assertTrue( $fixture->cacheIsComplete() );
80 $dir = self::$tempDir .
'/gitrepo/1';
83 $this->assertEquals(
'refs/heads/master', $fixture->getHead() );
84 $this->assertEquals(
'0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() );
88 $dir = self::$tempDir .
'/gitrepo/2';
91 $this->assertEquals(
'refs/heads/master', $fixture->getHead() );
92 $this->assertEquals(
'0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() );
96 $dir = self::$tempDir .
'/gitrepo/3';
99 $this->assertEquals(
'refs/heads/master', $fixture->getHead() );
100 $this->assertEquals(
'0123456789012345678901234567890123abcdef', $fixture->getHeadSHA1() );
104 $dir = self::$tempDir .
'/gitrepo/1';
105 unlink( self::$tempDir .
'/gitrepo/1/.git/refs/heads/master' );
106 $fixture =
new GitInfo( $dir );
108 $this->assertEquals(
'refs/heads/master', $fixture->getHead() );
109 $this->assertEquals(
'abcdef6789012345678901234567890123456789', $fixture->getHeadSHA1() );