1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2025-02-13 23:38:33 +01:00
phorge-arcanist/src/unit/ArcanistUnitTestResult.php

129 lines
2.8 KiB
PHP
Raw Normal View History

2011-01-09 15:22:25 -08:00
<?php
/**
* Represents the outcome of running a unit test.
*
* @group unit
*/
final class ArcanistUnitTestResult {
2011-01-09 15:22:25 -08:00
const RESULT_PASS = 'pass';
const RESULT_FAIL = 'fail';
const RESULT_SKIP = 'skip';
const RESULT_BROKEN = 'broken';
const RESULT_UNSOUND = 'unsound';
const RESULT_POSTPONED = 'postponed';
2011-01-09 15:22:25 -08:00
private $namespace;
private $name;
private $link;
2011-01-09 15:22:25 -08:00
private $result;
private $duration;
2011-01-09 15:22:25 -08:00
private $userData;
private $extraData;
private $coverage;
2011-01-09 15:22:25 -08:00
public function setName($name) {
$this->name = $name;
return $this;
}
public function getName() {
return $this->name;
}
public function setLink($link) {
$this->link = $link;
return $this;
}
public function getLink() {
return $this->link;
}
2011-01-09 15:22:25 -08:00
public function setResult($result) {
$this->result = $result;
return $this;
}
public function getResult() {
return $this->result;
}
public function getConsoleFormattedResult() {
static $status_codes = array(
self::RESULT_PASS => '<bg:green>** PASS **</bg>',
self::RESULT_FAIL => '<bg:red>** FAIL **</bg>',
self::RESULT_SKIP => '<bg:yellow>** SKIP **</bg>',
self::RESULT_BROKEN => '<bg:red>** BROKEN **</bg>',
self::RESULT_UNSOUND => '<bg:yellow>** UNSOUND **</bg>',
self::RESULT_POSTPONED => '<bg:yellow>** POSTPONED **</bg>',
);
return phutil_console_format($status_codes[$this->result]);
}
public function setDuration($duration) {
$this->duration = $duration;
return $this;
}
public function getDuration() {
return $this->duration;
}
2011-01-09 15:22:25 -08:00
public function setUserData($user_data) {
$this->userData = $user_data;
return $this;
}
public function getUserData() {
return $this->userData;
}
/**
* "extra data" allows an implementation to store additional
* key/value metadata along with the result of the test run.
*/
public function setExtraData(array $extra_data = null) {
$this->extraData = $extra_data;
return $this;
}
public function getExtraData() {
return $this->extraData;
}
public function setCoverage($coverage) {
$this->coverage = $coverage;
return $this;
}
public function getCoverage() {
return $this->coverage;
}
/**
* Merge several coverage reports into a comprehensive coverage report.
*
* @param list List of coverage report strings.
* @return string Cumulative coverage report.
*/
public static function mergeCoverage(array $coverage) {
if (empty($coverage)) {
return null;
}
$base = reset($coverage);
foreach ($coverage as $more_coverage) {
$len = min(strlen($base), strlen($more_coverage));
for ($ii = 0; $ii < $len; $ii++) {
if ($more_coverage[$ii] == 'C') {
$base[$ii] = 'C';
}
}
}
return $base;
}
2011-01-09 15:22:25 -08:00
}