tikiwiki/packages/tiki-pkg-tikimanager/gitonomy/gitlib/tests/Gitonomy/Git/Tests/PushReferenceTest.php
2023-11-20 20:52:04 +00:00

84 lines
2.9 KiB
PHP
Executable File

<?php
/**
* This file is part of Gitonomy.
*
* (c) Alexandre Salomé <alexandre.salome@gmail.com>
* (c) Julien DIDIER <genzo.wm@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Gitonomy\Git\Tests;
use Gitonomy\Git\PushReference;
class PushReferenceTest extends AbstractTest
{
const CREATE = 1;
const DELETE = 2;
const FORCE = 4;
const FAST_FORWARD = 8;
public function provideIsers()
{
// mask: force fastforward create delete
return [
['foo', PushReference::ZERO, self::LONGFILE_COMMIT, self::CREATE],
['foo', self::LONGFILE_COMMIT, PushReference::ZERO, self::DELETE],
['foo', self::LONGFILE_COMMIT, self::BEFORE_LONGFILE_COMMIT, self::FORCE],
['foo', self::BEFORE_LONGFILE_COMMIT, self::LONGFILE_COMMIT, self::FAST_FORWARD],
];
}
/**
* @dataProvider provideIsers
*/
public function testIsers($reference, $before, $after, $mask)
{
$reference = new PushReference(self::createFoobarRepository(), $reference, $before, $after);
$this->assertEquals($mask & self::CREATE, $reference->isCreate(), 'Create value is correct.');
$this->assertEquals($mask & self::DELETE, $reference->isDelete(), 'Delete value is correct.');
$this->assertEquals($mask & self::FORCE, $reference->isForce(), 'Force value is correct.');
$this->assertEquals($mask & self::FAST_FORWARD, $reference->isFastForward(), 'FastForward value is correct.');
}
/**
* @dataProvider provideFoobar
*/
public function testLog($repository)
{
$ref = new PushReference($repository, 'foo', self::INITIAL_COMMIT, self::LONGFILE_COMMIT);
$log = $ref->getLog()->getCommits();
$this->assertCount(7, $log, '7 commits in log');
$this->assertEquals('add a long file', $log[0]->getShortMessage(), 'First commit is correct');
}
/**
* This test ensures that GPG signed requests does not break the reading of commit logs.
*
* @dataProvider provideFoobar
*/
public function testSignedLog($repository)
{
$ref = new PushReference($repository, 'foo', self::INITIAL_COMMIT, self::SIGNED_COMMIT);
$log = $ref->getLog()->getCommits();
$this->assertCount(16, $log, '16 commits in log');
$this->assertEquals('signed commit', $log[0]->getShortMessage(), 'Last commit is correct');
}
/**
* @dataProvider provideFoobar
*/
public function testLogWithExclude($repository)
{
$ref = new PushReference($repository, 'foo', PushReference::ZERO, self::LONGFILE_COMMIT);
$log = $ref->getLog([self::INITIAL_COMMIT])->getCommits();
$this->assertCount(7, $log, '7 commits in log');
$this->assertEquals('add a long file', $log[0]->getShortMessage(), 'First commit is correct');
}
}