예제 #1
0
파일: CommitTest.php 프로젝트: rouffj/Sismo
 public function testStatus()
 {
     $commit = new Commit(new Project('Twig'), '7d78d5f7a8c039059046d6c5e1d7f66765bd91c7');
     $this->assertEquals('building', $commit->getStatusCode());
     $this->assertEquals('building', $commit->getStatus());
     $commit->setStatusCode('failed');
     $this->assertEquals('failed', $commit->getStatusCode());
     $this->assertEquals('failed', $commit->getStatus());
     $commit->setStatusCode('success');
     $this->assertEquals('success', $commit->getStatusCode());
     $this->assertEquals('succeeded', $commit->getStatus());
 }
예제 #2
0
 public function notify(Commit $commit)
 {
     $slug = $commit->getProject()->getSlug();
     $status = 'succeeded' == strtolower($commit->getStatus()) ? 'ok' : 'ko';
     $data = unserialize(file_get_contents($this->log));
     $data['last_update'] = date('Y-M-j H:i:s');
     $data['projects'][$slug][] = $status;
     // image will only show `max_number_bars` builds per project
     $data['projects'][$slug] = array_slice($data['projects'][$slug], -$this->get('max_number_bars'));
     file_put_contents($this->log, serialize($data));
     // if the last image was generated less than 15 seconds ago, don't generate
     //  another image. This prevents collisions when building a lot of projects
     if (null != $this->updatedAt && microtime(true) - $this->updatedAt < 15) {
         return;
     }
     $this->updateBackground($data);
 }
예제 #3
0
 protected function getPlaceholders(Commit $commit)
 {
     $project = $commit->getProject();
     return array('%slug%' => $project->getSlug(), '%name%' => $project->getName(), '%status%' => $commit->getStatus(), '%status_code%' => $commit->getStatusCode(), '%STATUS%' => strtoupper($commit->getStatus()), '%sha%' => $commit->getSha(), '%short_sha%' => $commit->getShortSha(), '%author%' => $commit->getAuthor(), '%message%' => $commit->getMessage(), '%output%' => $commit->getOutput());
 }