public function findCommands() { $commandsList = new CommandsList(); // Find all classes in php files whose paths contain "PhixCommands": $classFinder = new ClassFinder(); $classFinder->addFoldersToSearch($this->foldersToSearch); $classFinder->setFileRegex('/PhixCommands.*\\.php$/'); $classes = $classFinder->findClassFiles(); foreach ($classes as $newClass => $filename) { include_once $filename; if ($this->testIsPhixCommand($newClass)) { // we have a winner! $commandsList->addClass($newClass); } } return $commandsList; }
public function testSearchesForClasses() { $obj = new ClassFinder(); $folderToSearch = realpath(__DIR__ . '/../..'); $obj->addFolderToSearch($folderToSearch); $classes = $obj->findClassFiles(); $expectedClasses = array('Phix_Project\\PhixCommands\\HelpCommandTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixCommands' . DIRECTORY_SEPARATOR . 'HelpCommandTest.php', 'Phix_Project\\PhixExtensions\\CommandBaseTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixExtensions' . DIRECTORY_SEPARATOR . 'CommandBaseTest.php', 'Phix_Project\\PhixExtensions\\DummyCommand' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixExtensions' . DIRECTORY_SEPARATOR . 'CommandBaseTest.php', 'Phix_Project\\PhixExtensions\\DummyCommandWithNoSwitches' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixExtensions' . DIRECTORY_SEPARATOR . 'CommandBaseTest.php', 'Phix_Project\\PhixExtensions\\DummyCommandWithNoSwitchesAndOneArg' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixExtensions' . DIRECTORY_SEPARATOR . 'CommandBaseTest.php', 'Phix_Project\\PhixExtensions\\DummyCommandWithSwitches' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixExtensions' . DIRECTORY_SEPARATOR . 'CommandBaseTest.php', 'Phix_Project\\PhixSwitches\\DebugSwitchTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'DebugSwitchTest.php', 'Phix_Project\\PhixSwitches\\IncludeSwitchTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'IncludeSwitchTest.php', 'Phix_Project\\PhixSwitches\\LongHelpSwitchTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'LongHelpSwitchTest.php', 'Phix_Project\\PhixSwitches\\PhixSwitchesTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'PhixSwitchesTest.php', 'Phix_Project\\PhixSwitches\\ShortHelpSwitchTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'ShortHelpSwitchTest.php', 'Phix_Project\\PhixSwitches\\SwitchBaseTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'SwitchBaseTest.php', 'Phix_Project\\PhixSwitches\\VersionSwitchTest' => $folderToSearch . DIRECTORY_SEPARATOR . 'Phix_Project' . DIRECTORY_SEPARATOR . 'PhixSwitches' . DIRECTORY_SEPARATOR . 'VersionSwitchTest.php', 'Phix_Project\\Phix\\ClassFinderTest' => __DIR__ . DIRECTORY_SEPARATOR . 'ClassFinderTest.php', 'Phix_Project\\Phix\\CommandsFinderTest' => __DIR__ . DIRECTORY_SEPARATOR . 'CommandsFinderTest.php', 'Phix_Project\\Phix\\CommandsListTest' => __DIR__ . DIRECTORY_SEPARATOR . 'CommandsListTest.php', 'Phix_Project\\Phix\\ContextTest' => __DIR__ . DIRECTORY_SEPARATOR . 'ContextTest.php', 'Phix_Project\\Phix\\DummyCommand' => __DIR__ . DIRECTORY_SEPARATOR . 'CommandsListTest.php', 'Phix_Project\\Phix\\DummyNotACommand' => __DIR__ . DIRECTORY_SEPARATOR . 'CommandsListTest.php'); $this->assertEquals($expectedClasses, $classes); }