From 10b0a553b4c4576921508f44e3f291d41d163b58 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 10 Jan 2011 00:07:58 -0800 Subject: [PATCH] Improve phutil module linter behavior for vanished modules and missing or broken __init__.php. Summary: This allows phutilmodulelinter to generate missing __init__.php and recover from missing modules without horrible fataltown. Test Plan: Reviewers: CC: --- .../ArcanistPhutilModuleLinter.php | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/lint/linter/phutilmodule/ArcanistPhutilModuleLinter.php b/src/lint/linter/phutilmodule/ArcanistPhutilModuleLinter.php index 5182eb1b..85077b3f 100644 --- a/src/lint/linter/phutilmodule/ArcanistPhutilModuleLinter.php +++ b/src/lint/linter/phutilmodule/ArcanistPhutilModuleLinter.php @@ -189,10 +189,14 @@ class ArcanistPhutilModuleLinter extends ArcanistLinter { 'module' => $module_name, )); $disk_path = $this->getModulePathOnDisk($req_module); - $futures[$req_module] = new ExecFuture( - '%s %s', - $bin, - $disk_path); + if (Filesystem::pathExists($disk_path)) { + $futures[$req_module] = new ExecFuture( + '%s %s', + $bin, + $disk_path); + } else { + $dependencies[$req_module] = array(); + } } } } @@ -241,7 +245,12 @@ class ArcanistPhutilModuleLinter extends ArcanistLinter { $library = null, $name); if ($class_spec) { - if (phutil_autoload_class($name)) { + try { + $loaded = phutil_autoload_class($name); + } catch (PhutilLibraryLoadException $ex) { + $loaded = false; + } + if ($loaded) { $resolvable[] = $message; $need_classes[$name] = $class_spec; } else { @@ -274,7 +283,12 @@ class ArcanistPhutilModuleLinter extends ArcanistLinter { $library = null, $name); if ($func_spec) { - if (phutil_autoload_function($name)) { + try { + $loaded = phutil_autoload_function($name); + } catch (PhutilLibraryLoadException $ex) { + $loaded = false; + } + if ($loaded) { $resolvable[] = $message; $need_functions[$name] = $func_spec; } else {