From 37774d4103f53f1264a51564f557de8fed75d4ab Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sat, 30 Apr 2011 17:35:25 +1200 Subject: [PATCH] ENHANCEMENT Added ClassManifest->getModules(), and removed limitation to toplevel modules in ClassManifest->handleFile() (necessary to detect new sapphire/admin/ "submodule") --- core/manifest/ClassManifest.php | 16 +++++++++++++++- tests/core/manifest/ClassManifestTest.php | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/core/manifest/ClassManifest.php b/core/manifest/ClassManifest.php index e11633d1b..9221a2e56 100644 --- a/core/manifest/ClassManifest.php +++ b/core/manifest/ClassManifest.php @@ -209,6 +209,20 @@ class SS_ClassManifest { public function getConfigs() { return $this->configs; } + + /** + * Returns an array of module names mapped to their paths. + * "Modules" in sapphire are simply directories with a _config.php file. + * + * @return array + */ + public function getModules() { + $modules = array(); + foreach($this->configs as $configPath) { + $modules[basename(dirname($configPath))] = dirname($configPath); + } + return $modules; + } /** * Completely regenerates the manifest file. @@ -252,7 +266,7 @@ class SS_ClassManifest { } public function handleFile($basename, $pathname, $depth) { - if ($depth == 1 && $basename == self::CONF_FILE) { + if ($basename == self::CONF_FILE) { $this->configs[] = $pathname; return; } diff --git a/tests/core/manifest/ClassManifestTest.php b/tests/core/manifest/ClassManifestTest.php index 701aa8cac..6fa4fe836 100644 --- a/tests/core/manifest/ClassManifestTest.php +++ b/tests/core/manifest/ClassManifestTest.php @@ -105,6 +105,12 @@ class ClassManifestTest extends SapphireTest { $this->assertEquals($expect, $this->manifest->getConfigs()); $this->assertEquals($expect, $this->manifestTests->getConfigs()); } + + public function testGetModules() { + $expect = array("module" => "{$this->base}/module"); + $this->assertEquals($expect, $this->manifest->getModules()); + $this->assertEquals($expect, $this->manifestTests->getModules()); + } public function testTestManifestIncludesTestClasses() { $this->assertNotContains('testclassa', array_keys($this->manifest->getClasses()));