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:
parent
1d72cfc944
commit
399f040018
5 changed files with 42 additions and 21 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()) {
|
||||||
|
|
|
@ -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++;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue