From 4a3d8292238c34a884219d05b7ba0556bd687c9a Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Thu, 29 Aug 2013 09:55:30 -0700 Subject: [PATCH] Fixup lint testing for changes in D6798 Summary: We have some linters that trigger based on the path name in the tree (some rules apply in some dirs and not others). The changes in D6798 caused all the paths to appear to be outside the tree, so allow for passing a fake through from those test cases that are sensitive to this. We also have a test for the copyright linter, and that needs to read settings from the .arcconfig file. The change to faking a working copy meant that this config option was effectively unset, so add a way to pass the entire arcconfig through from the tests that need it. Lastly, the logic to skip deleted files needs to be special cased when we're faking paths like this: if we've added data for a file in the testable engine, we should also consider that file as existing. Test Plan: `arc unit --everything` here, and passing our tests in our repo over there. Reviewers: epriestley, mareksapota Reviewed By: epriestley CC: Korvin, aran Differential Revision: https://secure.phabricator.com/D6841 --- .../engine/UnitTestableArcanistLintEngine.php | 7 +++++++ .../__tests__/ArcanistLinterTestCase.php | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/lint/engine/UnitTestableArcanistLintEngine.php b/src/lint/engine/UnitTestableArcanistLintEngine.php index 939111fa..5fd90cb0 100644 --- a/src/lint/engine/UnitTestableArcanistLintEngine.php +++ b/src/lint/engine/UnitTestableArcanistLintEngine.php @@ -20,6 +20,13 @@ final class UnitTestableArcanistLintEngine extends ArcanistLintEngine { return $this; } + public function pathExists($path) { + if (idx($this->fileData, $path)) { + return true; + } + return parent::pathExists($path); + } + protected function buildLinters() { return $this->linters; } diff --git a/src/lint/linter/__tests__/ArcanistLinterTestCase.php b/src/lint/linter/__tests__/ArcanistLinterTestCase.php index 6679f022..ea3c93c5 100644 --- a/src/lint/linter/__tests__/ArcanistLinterTestCase.php +++ b/src/lint/linter/__tests__/ArcanistLinterTestCase.php @@ -42,9 +42,10 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase { PhutilTypeSpec::checkMap( $config, array( - 'project' => 'optional string', 'hook' => 'optional bool', 'config' => 'optional wild', + 'path' => 'optional string', + 'arcconfig' => 'optional map', )); $exception = null; @@ -60,9 +61,15 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase { $dir = dirname($full_path); $path = basename($full_path); + $config_file = null; + $arcconfig = idx($config, 'arcconfig'); + if ($arcconfig) { + $config_file = json_encode($arcconfig); + } + $working_copy = ArcanistWorkingCopyIdentity::newFromRootAndConfigFile( $dir, - null, + $config_file, 'Unit Test'); $engine = new UnitTestableArcanistLintEngine(); @@ -71,12 +78,13 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase { $engine->setCommitHookMode(idx($config, 'hook', false)); - $linter->addPath($path); - $linter->addData($path, $data); + $path_name = idx($config, 'path', $path); + $linter->addPath($path_name); + $linter->addData($path_name, $data); $linter->setConfig(idx($config, 'config', array())); $engine->addLinter($linter); - $engine->addFileData($path, $data); + $engine->addFileData($path_name, $data); $results = $engine->run();