diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2008-11-25 15:01:17 +0000 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2008-11-25 15:01:17 +0000 |
commit | 2c20fed373e54bfc67f878a1f5d93d0cd2fc146e (patch) | |
tree | 72f53842863c9003eeea8d1d706d17b636e66ded | |
parent | 565f1a260c089435dbe1f6ece50b79bfc44f34dd (diff) |
Dynamically locate modules to install for test
-rw-r--r-- | modules/gallery_unit_test/controllers/test.php | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/modules/gallery_unit_test/controllers/test.php b/modules/gallery_unit_test/controllers/test.php index 92985a26..dde54653 100644 --- a/modules/gallery_unit_test/controllers/test.php +++ b/modules/gallery_unit_test/controllers/test.php @@ -60,20 +60,45 @@ class Test_Controller extends Controller { // We probably don't want to uninstall and reinstall the core every time, but let's start off // this way. Uninstall modules first and core last. Ignore errors during uninstall. - // @todo make this more dynamic try { - comment_installer::uninstall(); - user_installer::uninstall(); - core_installer::uninstall(); - tag_installer::uninstall(); + $this->uninstall_modules(); } catch (Exception $e) { } - core_installer::install(); - user_installer::install(); - comment_installer::install(); - tag_installer::install(); + $this->_install_modules(); print new Unit_Test(); } + + private function _uninstall_modules() { + foreach (module::get_list() as $module) { + if ($module->name == "core") { + continue; + } + + $installer_class = "{$module->name}_installer"; + if (method_exists($installer_class, "uninstall")) { + call_user_func_array( array($installer_class, "uninstall"), array()); + } + } + + // Always uninstall core last. + core_installer::uninstall(); + } + + private function _install_modules() { + core_installer::install(); + + foreach (glob(MODPATH . "*/helpers/*_installer.php") as $file) { + $module_name = basename(dirname(dirname($file))); + if ($module_name == "core") { + continue; + } + + $installer_class = "{$module_name}_installer"; + if (method_exists($installer_class, "install")) { + call_user_func_array( array($installer_class, "install"), array()); + } + } + } } |