mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Further improvements to test discovery
Summary: I found another issue with T8042... it seems that tests from the root directory (i.e. `src/__tests__` are not being discovered properly). The handling of this case (`$library_path` being the library root directory) can probably be improved, and I am open to suggestions. Depends on D13202. Test Plan: Added to existing test cases. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Differential Revision: https://secure.phabricator.com/D13185
This commit is contained in:
parent
7d15b85a1b
commit
3c3438714b
2 changed files with 23 additions and 20 deletions
|
@ -197,20 +197,21 @@ final class PhutilUnitTestEngine extends ArcanistUnitTestEngine {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($path == $library_root) {
|
foreach (Filesystem::walkToRoot($path, $library_root) as $subpath) {
|
||||||
$paths[$library_name.':.'] = array(
|
if ($subpath == $library_root) {
|
||||||
'library' => $library_name,
|
$paths[$library_name.':.'] = array(
|
||||||
'path' => '__tests__/',
|
'library' => $library_name,
|
||||||
);
|
'path' => '__tests__/',
|
||||||
continue;
|
);
|
||||||
}
|
} else {
|
||||||
|
$library_subpath = Filesystem::readablePath($subpath, $library_root);
|
||||||
|
|
||||||
do {
|
$paths[$library_name.':'.$library_subpath] = array(
|
||||||
$paths[$library_name.':'.$library_path] = array(
|
'library' => $library_name,
|
||||||
'library' => $library_name,
|
'path' => $library_subpath.'/__tests__/',
|
||||||
'path' => $library_path.'/__tests__/',
|
);
|
||||||
);
|
}
|
||||||
} while (($library_path = dirname($library_path)) != '.');
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $paths;
|
return $paths;
|
||||||
|
|
|
@ -142,6 +142,7 @@ final class PhutilUnitTestEngineTestCase extends PhutilTestCase {
|
||||||
|
|
||||||
dirname(dirname(__FILE__)).'/__tests__/',
|
dirname(dirname(__FILE__)).'/__tests__/',
|
||||||
dirname(dirname(dirname(__FILE__))).'/__tests__/',
|
dirname(dirname(dirname(__FILE__))).'/__tests__/',
|
||||||
|
phutil_get_library_root('arcanist').'/__tests__/',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'normal directory' => array(
|
'normal directory' => array(
|
||||||
|
@ -151,25 +152,26 @@ final class PhutilUnitTestEngineTestCase extends PhutilTestCase {
|
||||||
array(
|
array(
|
||||||
dirname(dirname(__FILE__)).'/__tests__/',
|
dirname(dirname(__FILE__)).'/__tests__/',
|
||||||
dirname(dirname(dirname(__FILE__))).'/__tests__/',
|
dirname(dirname(dirname(__FILE__))).'/__tests__/',
|
||||||
|
phutil_get_library_root('arcanist').'/__tests__/',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'library root' => array(
|
'library root' => array(
|
||||||
array(phutil_get_library_root()),
|
array(phutil_get_library_root('arcanist')),
|
||||||
array(phutil_get_library_root().'/__tests__/'),
|
array(phutil_get_library_root('arcanist').'/__tests__/'),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$test_engine = id(new PhutilUnitTestEngine())
|
$test_engine = id(new PhutilUnitTestEngine())
|
||||||
->setWorkingCopy($this->getWorkingCopy());
|
->setWorkingCopy($this->getWorkingCopy());
|
||||||
|
|
||||||
|
$library = phutil_get_current_library_name();
|
||||||
|
$library_root = phutil_get_library_root($library);
|
||||||
|
|
||||||
foreach ($tests as $name => $test) {
|
foreach ($tests as $name => $test) {
|
||||||
list($paths, $tests) = $test;
|
list($paths, $test_paths) = $test;
|
||||||
$expected = array();
|
$expected = array();
|
||||||
|
|
||||||
foreach ($tests as $path) {
|
foreach ($test_paths as $path) {
|
||||||
$library_root = phutil_get_library_root_for_path($path);
|
|
||||||
$library = phutil_get_library_name_for_root($library_root);
|
|
||||||
|
|
||||||
$expected[] = array(
|
$expected[] = array(
|
||||||
'library' => $library,
|
'library' => $library,
|
||||||
'path' => Filesystem::readablePath($path, $library_root),
|
'path' => Filesystem::readablePath($path, $library_root),
|
||||||
|
|
Loading…
Reference in a new issue