Gittern\Desiccator\TreeDesiccator::desiccate PHP Method

desiccate() public method

public desiccate ( Tree $tree )
$tree Gittern\Entity\GitObject\Tree
    public function desiccate(Tree $tree)
    {
        $writer = new StringWriter();
        foreach ($tree->getNodes() as $node) {
            $writer->writeString8($node->getOctalModeString());
            $writer->writeString8(' ');
            $writer->writeString8($node->getName());
            $writer->writeString8("");
            $sha = $node->getRelatedObject()->getSha();
            if (strlen($sha) != 40) {
                throw new NotPersistedException("Object referred to by node named " . $node->getName() . " is not persisted yet.");
            }
            $writer->writeHHex($sha);
        }
        $data = $writer->toString();
        return new RawObject('tree', $data);
    }

Usage Example

Beispiel #1
0
 /**
  * @expectedException Gittern\Exception\NotPersistedException
  * @expectedExceptionMessage Object referred to by node named abacus is not persisted yet.
  */
 public function testCantDesiccateTreeWithoutAllRelationsPersisted()
 {
     $desiccator = new TreeDesiccator();
     $tree = M::mock('Gittern\\Entity\\GitObject\\Tree');
     $node_mock = M::mock('Gittern\\Entity\\GitObject\\Node\\TreeNode', array('getOctalModeString' => '040000', 'getName' => 'abacus'));
     $node_mock->shouldReceive('getRelatedObject')->andReturn($node_mock);
     $node_mock->shouldReceive('getSha')->andReturn(null);
     $tree->shouldReceive('getNodes')->andReturn(array($node_mock));
     $desiccator->desiccate($tree);
 }
TreeDesiccator