mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-12-23 22:10:54 +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:
parent
1d72cfc944
commit
399f040018
5 changed files with 42 additions and 21 deletions
|
@ -1,13 +1,3 @@
|
|||
<?php
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
abstract class ArcanistTestCase extends ArcanistPhutilTestCase {}
|
||||
|
|
|
@ -42,7 +42,8 @@ final class PhutilUnitTestEngine extends ArcanistUnitTestEngine {
|
|||
foreach ($run_tests as $test_class) {
|
||||
$test_case = newv($test_class, array());
|
||||
$test_case->setEnableCoverage($enable_coverage);
|
||||
$test_case->setProjectRoot($project_root);
|
||||
$test_case->setWorkingCopy($this->getWorkingCopy());
|
||||
|
||||
if ($this->getPaths()) {
|
||||
$test_case->setPaths($this->getPaths());
|
||||
}
|
||||
|
|
|
@ -101,7 +101,6 @@ class XUnitTestEngine extends ArcanistUnitTestEngine {
|
|||
* @return array Array of test results.
|
||||
*/
|
||||
public function run() {
|
||||
|
||||
$this->loadEnvironment();
|
||||
|
||||
if ($this->getRunAllTests()) {
|
||||
|
|
|
@ -75,7 +75,10 @@ final class PhutilUnitTestEngineTestCase extends ArcanistTestCase {
|
|||
public function testFailSkip() {
|
||||
$failed = 0;
|
||||
$skipped = 0;
|
||||
$test_case = new ArcanistPhutilTestCaseTestCase();
|
||||
|
||||
$test_case = id(new ArcanistPhutilTestCaseTestCase())
|
||||
->setWorkingCopy($this->getWorkingCopy());
|
||||
|
||||
foreach ($test_case->run() as $result) {
|
||||
if ($result->getResult() == ArcanistUnitTestResult::RESULT_FAIL) {
|
||||
$failed++;
|
||||
|
|
|
@ -16,7 +16,7 @@ abstract class ArcanistPhutilTestCase {
|
|||
private $results = array();
|
||||
private $enableCoverage;
|
||||
private $coverage = array();
|
||||
private $projectRoot;
|
||||
private $workingCopy;
|
||||
private $paths;
|
||||
private $renderer;
|
||||
|
||||
|
@ -570,7 +570,9 @@ abstract class ArcanistPhutilTestCase {
|
|||
$coverage = array();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -593,7 +595,7 @@ abstract class ArcanistPhutilTestCase {
|
|||
$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
|
||||
|
@ -613,18 +615,44 @@ abstract class ArcanistPhutilTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
final public function setProjectRoot($project_root) {
|
||||
$this->projectRoot = $project_root;
|
||||
final public function getWorkingCopy() {
|
||||
return $this->workingCopy;
|
||||
}
|
||||
|
||||
final public function setWorkingCopy(
|
||||
ArcanistWorkingCopyIdentity $working_copy) {
|
||||
|
||||
$this->workingCopy = $working_copy;
|
||||
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) {
|
||||
$this->paths = $paths;
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function getLink($method) {
|
||||
return null;
|
||||
final protected function getLink($method) {
|
||||
$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) {
|
||||
|
|
Loading…
Reference in a new issue