1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-26 00:32:41 +01:00

Improve getLink method for unit tests

Summary:
Ref T7977. The `PhutilTestCase::getLink` method currently relies on arcanist projects instead of repositories. Instead, make this logic a bit smarter by looking up the base URI from `phabricator.uri` (currently it is hardcoded to `https://secure.phabricator.com`).

Ideally, we would pass `?repositories=$REPOSITORY_PHID` to `DiffusionSymbolController` as well, but I don't know if this is worth pursuing.

Test Plan: This diff.

Reviewers: avivey, #blessed_reviewers, epriestley

Reviewed By: avivey, #blessed_reviewers, epriestley

Subscribers: aurelijus, Korvin, epriestley

Maniphest Tasks: T7977

Differential Revision: https://secure.phabricator.com/D12664
This commit is contained in:
Joshua Spence 2015-05-20 09:36:22 +10:00
parent 1d72cfc944
commit 399f040018
5 changed files with 42 additions and 21 deletions

View file

@ -1,13 +1,3 @@
<?php <?php
abstract class ArcanistTestCase extends ArcanistPhutilTestCase { abstract class ArcanistTestCase extends ArcanistPhutilTestCase {}
protected function getLink($method) {
$arcanist_project = 'PHID-APRJ-703e0b140530f17ede30';
return
'https://secure.phabricator.com/diffusion/symbol/'.$method.
'/?lang=php&projects='.$arcanist_project.
'&jump=true&context='.get_class($this);
}
}

View file

@ -42,7 +42,8 @@ final class PhutilUnitTestEngine extends ArcanistUnitTestEngine {
foreach ($run_tests as $test_class) { foreach ($run_tests as $test_class) {
$test_case = newv($test_class, array()); $test_case = newv($test_class, array());
$test_case->setEnableCoverage($enable_coverage); $test_case->setEnableCoverage($enable_coverage);
$test_case->setProjectRoot($project_root); $test_case->setWorkingCopy($this->getWorkingCopy());
if ($this->getPaths()) { if ($this->getPaths()) {
$test_case->setPaths($this->getPaths()); $test_case->setPaths($this->getPaths());
} }

View file

@ -101,7 +101,6 @@ class XUnitTestEngine extends ArcanistUnitTestEngine {
* @return array Array of test results. * @return array Array of test results.
*/ */
public function run() { public function run() {
$this->loadEnvironment(); $this->loadEnvironment();
if ($this->getRunAllTests()) { if ($this->getRunAllTests()) {

View file

@ -75,7 +75,10 @@ final class PhutilUnitTestEngineTestCase extends ArcanistTestCase {
public function testFailSkip() { public function testFailSkip() {
$failed = 0; $failed = 0;
$skipped = 0; $skipped = 0;
$test_case = new ArcanistPhutilTestCaseTestCase();
$test_case = id(new ArcanistPhutilTestCaseTestCase())
->setWorkingCopy($this->getWorkingCopy());
foreach ($test_case->run() as $result) { foreach ($test_case->run() as $result) {
if ($result->getResult() == ArcanistUnitTestResult::RESULT_FAIL) { if ($result->getResult() == ArcanistUnitTestResult::RESULT_FAIL) {
$failed++; $failed++;

View file

@ -16,7 +16,7 @@ abstract class ArcanistPhutilTestCase {
private $results = array(); private $results = array();
private $enableCoverage; private $enableCoverage;
private $coverage = array(); private $coverage = array();
private $projectRoot; private $workingCopy;
private $paths; private $paths;
private $renderer; private $renderer;
@ -570,7 +570,9 @@ abstract class ArcanistPhutilTestCase {
$coverage = array(); $coverage = array();
foreach ($result as $file => $report) { foreach ($result as $file => $report) {
if (strncmp($file, $this->projectRoot, strlen($this->projectRoot))) { $project_root = $this->getProjectRoot();
if (strncmp($file, $project_root, strlen($project_root))) {
continue; continue;
} }
@ -593,7 +595,7 @@ abstract class ArcanistPhutilTestCase {
$str .= 'N'; // Not executable. $str .= 'N'; // Not executable.
} }
} }
$coverage[substr($file, strlen($this->projectRoot) + 1)] = $str; $coverage[substr($file, strlen($project_root) + 1)] = $str;
} }
// Only keep coverage information for files modified by the change. In // Only keep coverage information for files modified by the change. In
@ -613,18 +615,44 @@ abstract class ArcanistPhutilTestCase {
} }
} }
final public function setProjectRoot($project_root) { final public function getWorkingCopy() {
$this->projectRoot = $project_root; return $this->workingCopy;
}
final public function setWorkingCopy(
ArcanistWorkingCopyIdentity $working_copy) {
$this->workingCopy = $working_copy;
return $this; return $this;
} }
final public function getProjectRoot() {
$working_copy = $this->getWorkingCopy();
if (!$working_copy) {
throw new PhutilInvalidStateException('setWorkingCopy');
}
return $working_copy->getProjectRoot();
}
final public function setPaths(array $paths) { final public function setPaths(array $paths) {
$this->paths = $paths; $this->paths = $paths;
return $this; return $this;
} }
protected function getLink($method) { final protected function getLink($method) {
return null; $base_uri = $this
->getWorkingCopy()
->getProjectConfig('phabricator.uri');
$uri = id(new PhutilURI($base_uri))
->setPath("/diffusion/symbol/{$method}/")
->setQueryParam('context', get_class($this))
->setQueryParam('jump', 'true')
->setQueryParam('lang', 'php');
return (string)$uri;
} }
public function setRenderer(ArcanistUnitRenderer $renderer) { public function setRenderer(ArcanistUnitRenderer $renderer) {